From bca1fca51d7adb19876a2a3b565a8ea891389900 Mon Sep 17 00:00:00 2001 From: prince-chrismc Date: Thu, 7 Dec 2023 19:51:42 +0000 Subject: [PATCH] deploy: c3472703ba11697d5c62e6f2166d9924e2577e0f --- .nojekyll | 0 algorithms_8h_source.html | 1158 ++++++++ annotated.html | 172 ++ annotated_dup.js | 70 + base_8h_source.html | 356 +++ bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes boost-json_2defaults_8h_source.html | 164 ++ boost-json_2traits_8h_source.html | 192 ++ classes.html | 156 + classjwt_1_1basic__claim-members.html | 135 + classjwt_1_1basic__claim.html | 574 ++++ classjwt_1_1basic__claim.js | 15 + classjwt_1_1builder-members.html | 132 + classjwt_1_1builder.html | 987 +++++++ classjwt_1_1builder.js | 23 + classjwt_1_1decoded__jwt-members.html | 158 + classjwt_1_1decoded__jwt.html | 711 +++++ classjwt_1_1decoded__jwt.js | 23 + classjwt_1_1decoded__jwt__inherit__graph.map | 7 + classjwt_1_1decoded__jwt__inherit__graph.md5 | 1 + classjwt_1_1decoded__jwt__inherit__graph.svg | 59 + classjwt_1_1header-members.html | 123 + classjwt_1_1header.html | 480 ++++ classjwt_1_1header.js | 13 + classjwt_1_1header__inherit__graph.map | 5 + classjwt_1_1header__inherit__graph.md5 | 1 + classjwt_1_1header__inherit__graph.svg | 40 + ..._1helper_1_1evp__pkey__handle-members.html | 122 + classjwt_1_1helper_1_1evp__pkey__handle.html | 233 ++ classjwt_1_1helper_1_1evp__pkey__handle.js | 6 + classjwt_1_1jwk-members.html | 138 + classjwt_1_1jwk.html | 949 +++++++ classjwt_1_1jwk.js | 27 + classjwt_1_1jwks-members.html | 124 + classjwt_1_1jwks.html | 236 ++ classjwt_1_1jwks.js | 5 + classjwt_1_1payload-members.html | 129 + classjwt_1_1payload.html | 681 +++++ classjwt_1_1payload.js | 19 + classjwt_1_1payload__inherit__graph.map | 5 + classjwt_1_1payload__inherit__graph.md5 | 1 + classjwt_1_1payload__inherit__graph.svg | 41 + classjwt_1_1verifier-members.html | 129 + classjwt_1_1verifier.html | 799 ++++++ classjwt_1_1verifier.js | 20 + closed.png | Bin 0 -> 132 bytes ...laparker-jsoncons_2defaults_8h_source.html | 159 ++ danielaparker-jsoncons_2traits_8h_source.html | 236 ++ dir_0c244ebd1071fc3a3e67bea2565ecb67.html | 126 + dir_0c244ebd1071fc3a3e67bea2565ecb67.js | 7 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map | 8 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 | 1 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg | 68 + dir_21e3d14daf2ae74f69a5ba3bdd78405a.html | 122 + dir_21e3d14daf2ae74f69a5ba3bdd78405a.js | 5 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map | 4 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 | 1 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg | 29 + dir_2baeb9b2ab4545faf9e2316474ff25e0.html | 109 + dir_40e93e4016c3584ba3b333387b8a88a2.html | 122 + dir_40e93e4016c3584ba3b333387b8a88a2.js | 5 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.map | 4 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 | 1 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg | 29 + dir_49e56c817e5e54854c35e136979f97ca.html | 109 + dir_767a780e71f3df42bff551d84f4be7e4.html | 122 + dir_767a780e71f3df42bff551d84f4be7e4.js | 5 + dir_767a780e71f3df42bff551d84f4be7e4_dep.map | 4 + dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 | 1 + dir_767a780e71f3df42bff551d84f4be7e4_dep.svg | 29 + dir_c0a47b52146df2fb522cc2caf716c25e.html | 122 + dir_c0a47b52146df2fb522cc2caf716c25e.js | 5 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.map | 4 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 | 1 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg | 29 + dir_d44c64559bbebec7f509842c48db8b23.html | 115 + dir_d44c64559bbebec7f509842c48db8b23.js | 4 + dir_db0c9b95a30589e349974d93aa14253f.html | 126 + dir_db0c9b95a30589e349974d93aa14253f.js | 8 + dir_db0c9b95a30589e349974d93aa14253f_dep.map | 5 + dir_db0c9b95a30589e349974d93aa14253f_dep.md5 | 1 + dir_db0c9b95a30589e349974d93aa14253f_dep.svg | 41 + doc.svg | 12 + docd.svg | 12 + doxygen-awesome-sidebar-only.css | 116 + doxygen-awesome.css | 2530 +++++++++++++++++ doxygen.css | 1667 +++++++++++ doxygen.svg | 28 + dynsections.js | 123 + errors_8h_source.html | 383 +++ files.html | 131 + files_dup.js | 4 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + functions.html | 291 ++ functions_func.html | 282 ++ functions_type.html | 109 + functions_vars.html | 114 + graph_legend.html | 168 ++ graph_legend.md5 | 1 + graph_legend.svg | 167 ++ hierarchy.html | 171 ++ hierarchy.js | 75 + index.html | 208 ++ jquery.js | 34 + jwt_8h_source.html | 1381 +++++++++ kazuho-picojson_2defaults_8h_source.html | 155 + kazuho-picojson_2traits_8h_source.html | 187 ++ md__8github_2security.html | 120 + md_docs_2faqs.html | 148 + md_docs_2signing.html | 135 + md_docs_2ssl.html | 119 + md_docs_2traits.html | 164 ++ menu.js | 136 + menudata.js | 95 + namespacejwt.html | 880 ++++++ namespacejwt.js | 48 + namespacejwt_1_1algorithm.html | 169 ++ namespacejwt_1_1algorithm.js | 24 + namespacejwt_1_1alphabet.html | 133 + namespacejwt_1_1alphabet.js | 5 + namespacejwt_1_1base.html | 161 ++ namespacejwt_1_1error.html | 269 ++ namespacejwt_1_1error.js | 80 + namespacejwt_1_1helper.html | 971 +++++++ namespacejwt_1_1helper.js | 20 + namespacejwt_1_1json.html | 155 + namespacemembers.html | 174 ++ namespacemembers_enum.html | 113 + namespacemembers_func.html | 165 ++ namespacemembers_type.html | 110 + namespaces.html | 159 ++ namespaces_dup.js | 4 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes navtree.css | 150 + navtree.js | 556 ++++ navtreedata.js | 67 + navtreeindex0.js | 253 ++ navtreeindex1.js | 253 ++ navtreeindex2.js | 73 + nlohmann-json_2defaults_8h_source.html | 159 ++ nlohmann-json_2traits_8h_source.html | 189 ++ open.png | Bin 0 -> 123 bytes overrides.css | 17 + pages.html | 117 + resize.js | 155 + search/all_0.js | 11 + search/all_1.js | 9 + search/all_10.js | 11 + search/all_11.js | 27 + search/all_12.js | 10 + search/all_13.js | 7 + search/all_14.js | 9 + search/all_2.js | 9 + search/all_3.js | 10 + search/all_4.js | 19 + search/all_5.js | 4 + search/all_6.js | 37 + search/all_7.js | 32 + search/all_8.js | 7 + search/all_9.js | 14 + search/all_a.js | 4 + search/all_b.js | 8 + search/all_c.js | 4 + search/all_d.js | 7 + search/all_e.js | 6 + search/all_f.js | 11 + search/classes_0.js | 9 + search/classes_1.js | 4 + search/classes_2.js | 8 + search/classes_3.js | 14 + search/classes_4.js | 8 + search/classes_5.js | 6 + search/classes_6.js | 5 + search/classes_7.js | 4 + search/classes_8.js | 5 + search/classes_9.js | 4 + search/classes_a.js | 8 + search/classes_b.js | 8 + search/classes_c.js | 5 + search/classes_d.js | 4 + search/classes_e.js | 5 + search/close.svg | 18 + search/enums_0.js | 4 + search/enums_1.js | 4 + search/enums_2.js | 5 + search/enums_3.js | 5 + search/functions_0.js | 11 + search/functions_1.js | 6 + search/functions_10.js | 9 + search/functions_2.js | 5 + search/functions_3.js | 16 + search/functions_4.js | 37 + search/functions_5.js | 30 + search/functions_6.js | 4 + search/functions_7.js | 8 + search/functions_8.js | 4 + search/functions_9.js | 5 + search/functions_a.js | 5 + search/functions_b.js | 9 + search/functions_c.js | 8 + search/functions_d.js | 19 + search/functions_e.js | 6 + search/functions_f.js | 5 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/namespaces_0.js | 10 + search/pages_0.js | 4 + search/pages_1.js | 4 + search/pages_2.js | 5 + search/pages_3.js | 4 + search/pages_4.js | 4 + search/search.css | 291 ++ search/search.js | 820 ++++++ search/searchdata.js | 36 + search/typedefs_0.js | 4 + search/typedefs_1.js | 4 + search/typedefs_2.js | 4 + search/typedefs_3.js | 5 + search/variables_0.js | 5 + search/variables_1.js | 5 + search/variables_2.js | 5 + search/variables_3.js | 4 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes structjwt_1_1algorithm_1_1ecdsa-members.html | 115 + structjwt_1_1algorithm_1_1ecdsa.html | 340 +++ structjwt_1_1algorithm_1_1ecdsa.js | 7 + ..._1_1algorithm_1_1ecdsa__inherit__graph.map | 11 + ..._1_1algorithm_1_1ecdsa__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1ecdsa__inherit__graph.svg | 93 + ...ctjwt_1_1algorithm_1_1ed25519-members.html | 116 + structjwt_1_1algorithm_1_1ed25519.html | 199 ++ structjwt_1_1algorithm_1_1ed25519.js | 4 + ..._1algorithm_1_1ed25519__inherit__graph.map | 5 + ..._1algorithm_1_1ed25519__inherit__graph.md5 | 1 + ..._1algorithm_1_1ed25519__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1ed448-members.html | 116 + structjwt_1_1algorithm_1_1ed448.html | 199 ++ structjwt_1_1algorithm_1_1ed448.js | 4 + ..._1_1algorithm_1_1ed448__inherit__graph.map | 5 + ..._1_1algorithm_1_1ed448__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1ed448__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1eddsa-members.html | 115 + structjwt_1_1algorithm_1_1eddsa.html | 327 +++ structjwt_1_1algorithm_1_1eddsa.js | 7 + ..._1_1algorithm_1_1eddsa__inherit__graph.map | 7 + ..._1_1algorithm_1_1eddsa__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1eddsa__inherit__graph.svg | 57 + structjwt_1_1algorithm_1_1es256-members.html | 116 + structjwt_1_1algorithm_1_1es256.html | 197 ++ structjwt_1_1algorithm_1_1es256.js | 4 + ..._1_1algorithm_1_1es256__inherit__graph.map | 5 + ..._1_1algorithm_1_1es256__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1es256__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1es256k-members.html | 116 + structjwt_1_1algorithm_1_1es256k.html | 197 ++ structjwt_1_1algorithm_1_1es256k.js | 4 + ...1_1algorithm_1_1es256k__inherit__graph.map | 5 + ...1_1algorithm_1_1es256k__inherit__graph.md5 | 1 + ...1_1algorithm_1_1es256k__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1es384-members.html | 116 + structjwt_1_1algorithm_1_1es384.html | 197 ++ structjwt_1_1algorithm_1_1es384.js | 4 + ..._1_1algorithm_1_1es384__inherit__graph.map | 5 + ..._1_1algorithm_1_1es384__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1es384__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1es512-members.html | 116 + structjwt_1_1algorithm_1_1es512.html | 197 ++ structjwt_1_1algorithm_1_1es512.js | 4 + ..._1_1algorithm_1_1es512__inherit__graph.map | 5 + ..._1_1algorithm_1_1es512__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1es512__inherit__graph.svg | 39 + ...ctjwt_1_1algorithm_1_1hmacsha-members.html | 115 + structjwt_1_1algorithm_1_1hmacsha.html | 315 ++ structjwt_1_1algorithm_1_1hmacsha.js | 7 + ..._1algorithm_1_1hmacsha__inherit__graph.map | 9 + ..._1algorithm_1_1hmacsha__inherit__graph.md5 | 1 + ..._1algorithm_1_1hmacsha__inherit__graph.svg | 75 + structjwt_1_1algorithm_1_1hs256-members.html | 116 + structjwt_1_1algorithm_1_1hs256.html | 172 ++ structjwt_1_1algorithm_1_1hs256.js | 4 + ..._1_1algorithm_1_1hs256__inherit__graph.map | 5 + ..._1_1algorithm_1_1hs256__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1hs256__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1hs384-members.html | 116 + structjwt_1_1algorithm_1_1hs384.html | 172 ++ structjwt_1_1algorithm_1_1hs384.js | 4 + ..._1_1algorithm_1_1hs384__inherit__graph.map | 5 + ..._1_1algorithm_1_1hs384__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1hs384__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1hs512-members.html | 116 + structjwt_1_1algorithm_1_1hs512.html | 172 ++ structjwt_1_1algorithm_1_1hs512.js | 4 + ..._1_1algorithm_1_1hs512__inherit__graph.map | 5 + ..._1_1algorithm_1_1hs512__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1hs512__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1none-members.html | 114 + structjwt_1_1algorithm_1_1none.html | 190 ++ structjwt_1_1algorithm_1_1none.js | 6 + structjwt_1_1algorithm_1_1ps256-members.html | 116 + structjwt_1_1algorithm_1_1ps256.html | 197 ++ structjwt_1_1algorithm_1_1ps256.js | 4 + ..._1_1algorithm_1_1ps256__inherit__graph.map | 5 + ..._1_1algorithm_1_1ps256__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1ps256__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1ps384-members.html | 116 + structjwt_1_1algorithm_1_1ps384.html | 197 ++ structjwt_1_1algorithm_1_1ps384.js | 4 + ..._1_1algorithm_1_1ps384__inherit__graph.map | 5 + ..._1_1algorithm_1_1ps384__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1ps384__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1ps512-members.html | 116 + structjwt_1_1algorithm_1_1ps512.html | 197 ++ structjwt_1_1algorithm_1_1ps512.js | 4 + ..._1_1algorithm_1_1ps512__inherit__graph.map | 5 + ..._1_1algorithm_1_1ps512__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1ps512__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1pss-members.html | 115 + structjwt_1_1algorithm_1_1pss.html | 332 +++ structjwt_1_1algorithm_1_1pss.js | 7 + ...wt_1_1algorithm_1_1pss__inherit__graph.map | 9 + ...wt_1_1algorithm_1_1pss__inherit__graph.md5 | 1 + ...wt_1_1algorithm_1_1pss__inherit__graph.svg | 75 + structjwt_1_1algorithm_1_1rs256-members.html | 116 + structjwt_1_1algorithm_1_1rs256.html | 197 ++ structjwt_1_1algorithm_1_1rs256.js | 4 + ..._1_1algorithm_1_1rs256__inherit__graph.map | 5 + ..._1_1algorithm_1_1rs256__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1rs256__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1rs384-members.html | 116 + structjwt_1_1algorithm_1_1rs384.html | 197 ++ structjwt_1_1algorithm_1_1rs384.js | 4 + ..._1_1algorithm_1_1rs384__inherit__graph.map | 5 + ..._1_1algorithm_1_1rs384__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1rs384__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1rs512-members.html | 116 + structjwt_1_1algorithm_1_1rs512.html | 197 ++ structjwt_1_1algorithm_1_1rs512.js | 4 + ..._1_1algorithm_1_1rs512__inherit__graph.map | 5 + ..._1_1algorithm_1_1rs512__inherit__graph.md5 | 1 + ..._1_1algorithm_1_1rs512__inherit__graph.svg | 39 + structjwt_1_1algorithm_1_1rsa-members.html | 115 + structjwt_1_1algorithm_1_1rsa.html | 334 +++ structjwt_1_1algorithm_1_1rsa.js | 7 + ...wt_1_1algorithm_1_1rsa__inherit__graph.map | 9 + ...wt_1_1algorithm_1_1rsa__inherit__graph.md5 | 1 + ...wt_1_1algorithm_1_1rsa__inherit__graph.svg | 75 + structjwt_1_1alphabet_1_1base64-members.html | 113 + structjwt_1_1alphabet_1_1base64.html | 133 + ...tjwt_1_1alphabet_1_1base64url-members.html | 113 + structjwt_1_1alphabet_1_1base64url.html | 136 + ...1base64url__percent__encoding-members.html | 113 + ...elper_1_1base64url__percent__encoding.html | 133 + structjwt_1_1default__clock-members.html | 112 + structjwt_1_1default__clock.html | 126 + ...laim__not__present__exception-members.html | 112 + ...ror_1_1claim__not__present__exception.html | 123 + ...ot__present__exception__inherit__graph.map | 9 + ...ot__present__exception__inherit__graph.md5 | 1 + ...ot__present__exception__inherit__graph.svg | 76 + structjwt_1_1error_1_1ecdsa__exception.html | 117 + ...or_1_1ecdsa__exception__inherit__graph.map | 5 + ...or_1_1ecdsa__exception__inherit__graph.md5 | 1 + ...or_1_1ecdsa__exception__inherit__graph.svg | 39 + ...r_1_1invalid__json__exception-members.html | 112 + ..._1_1error_1_1invalid__json__exception.html | 123 + ...valid__json__exception__inherit__graph.map | 7 + ...valid__json__exception__inherit__graph.md5 | 1 + ...valid__json__exception__inherit__graph.svg | 58 + structjwt_1_1error_1_1rsa__exception.html | 117 + ...rror_1_1rsa__exception__inherit__graph.map | 5 + ...rror_1_1rsa__exception__inherit__graph.md5 | 1 + ...rror_1_1rsa__exception__inherit__graph.svg | 39 + ...r_1_1signature__generation__exception.html | 117 + ..._generation__exception__inherit__graph.map | 5 + ..._generation__exception__inherit__graph.md5 | 1 + ..._generation__exception__inherit__graph.svg | 40 + ...1_1signature__verification__exception.html | 117 + ...erification__exception__inherit__graph.map | 5 + ...erification__exception__inherit__graph.md5 | 1 + ...erification__exception__inherit__graph.svg | 40 + ...ror_1_1token__verification__exception.html | 117 + ...erification__exception__inherit__graph.map | 5 + ...erification__exception__inherit__graph.md5 | 1 + ...erification__exception__inherit__graph.svg | 40 + ...tjwt_1_1traits_1_1boost__json-members.html | 127 + structjwt_1_1traits_1_1boost__json.html | 171 ++ ...ts_1_1danielaparker__jsoncons-members.html | 127 + ..._1_1traits_1_1danielaparker__jsoncons.html | 177 ++ ...wt_1_1traits_1_1danielaparker__jsoncons.js | 4 + ...ker__jsoncons_1_1object__type-members.html | 125 + ...nielaparker__jsoncons_1_1object__type.html | 164 ++ ...oncons_1_1object__type__inherit__graph.map | 5 + ...oncons_1_1object__type__inherit__graph.md5 | 1 + ...oncons_1_1object__type__inherit__graph.svg | 40 + ...1_1traits_1_1kazuho__picojson-members.html | 127 + structjwt_1_1traits_1_1kazuho__picojson.html | 171 ++ ...t_1_1traits_1_1nlohmann__json-members.html | 128 + structjwt_1_1traits_1_1nlohmann__json.html | 174 ++ ...fy__ops_1_1date__after__claim-members.html | 113 + ..._1_1verify__ops_1_1date__after__claim.html | 134 + ...y__ops_1_1date__before__claim-members.html | 113 + ...1_1verify__ops_1_1date__before__claim.html | 134 + ...1verify__ops_1_1equals__claim-members.html | 113 + ...ctjwt_1_1verify__ops_1_1equals__claim.html | 134 + ...1_1insensitive__string__claim-members.html | 116 + ...fy__ops_1_1insensitive__string__claim.html | 147 + ...ify__ops_1_1is__subset__claim-members.html | 113 + ...t_1_1verify__ops_1_1is__subset__claim.html | 134 + ...erify__ops_1_1verify__context-members.html | 120 + ...jwt_1_1verify__ops_1_1verify__context.html | 158 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + 432 files changed, 41869 insertions(+) create mode 100644 .nojekyll create mode 100644 algorithms_8h_source.html create mode 100644 annotated.html create mode 100644 annotated_dup.js create mode 100644 base_8h_source.html create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 boost-json_2defaults_8h_source.html create mode 100644 boost-json_2traits_8h_source.html create mode 100644 classes.html create mode 100644 classjwt_1_1basic__claim-members.html create mode 100644 classjwt_1_1basic__claim.html create mode 100644 classjwt_1_1basic__claim.js create mode 100644 classjwt_1_1builder-members.html create mode 100644 classjwt_1_1builder.html create mode 100644 classjwt_1_1builder.js create mode 100644 classjwt_1_1decoded__jwt-members.html create mode 100644 classjwt_1_1decoded__jwt.html create mode 100644 classjwt_1_1decoded__jwt.js create mode 100644 classjwt_1_1decoded__jwt__inherit__graph.map create mode 100644 classjwt_1_1decoded__jwt__inherit__graph.md5 create mode 100644 classjwt_1_1decoded__jwt__inherit__graph.svg create mode 100644 classjwt_1_1header-members.html create mode 100644 classjwt_1_1header.html create mode 100644 classjwt_1_1header.js create mode 100644 classjwt_1_1header__inherit__graph.map create mode 100644 classjwt_1_1header__inherit__graph.md5 create mode 100644 classjwt_1_1header__inherit__graph.svg create mode 100644 classjwt_1_1helper_1_1evp__pkey__handle-members.html create mode 100644 classjwt_1_1helper_1_1evp__pkey__handle.html create mode 100644 classjwt_1_1helper_1_1evp__pkey__handle.js create mode 100644 classjwt_1_1jwk-members.html create mode 100644 classjwt_1_1jwk.html create mode 100644 classjwt_1_1jwk.js create mode 100644 classjwt_1_1jwks-members.html create mode 100644 classjwt_1_1jwks.html create mode 100644 classjwt_1_1jwks.js create mode 100644 classjwt_1_1payload-members.html create mode 100644 classjwt_1_1payload.html create mode 100644 classjwt_1_1payload.js create mode 100644 classjwt_1_1payload__inherit__graph.map create mode 100644 classjwt_1_1payload__inherit__graph.md5 create mode 100644 classjwt_1_1payload__inherit__graph.svg create mode 100644 classjwt_1_1verifier-members.html create mode 100644 classjwt_1_1verifier.html create mode 100644 classjwt_1_1verifier.js create mode 100644 closed.png create mode 100644 danielaparker-jsoncons_2defaults_8h_source.html create mode 100644 danielaparker-jsoncons_2traits_8h_source.html create mode 100644 dir_0c244ebd1071fc3a3e67bea2565ecb67.html create mode 100644 dir_0c244ebd1071fc3a3e67bea2565ecb67.js create mode 100644 dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map create mode 100644 dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 create mode 100644 dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg create mode 100644 dir_21e3d14daf2ae74f69a5ba3bdd78405a.html create mode 100644 dir_21e3d14daf2ae74f69a5ba3bdd78405a.js create mode 100644 dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map create mode 100644 dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 create mode 100644 dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg create mode 100644 dir_2baeb9b2ab4545faf9e2316474ff25e0.html create mode 100644 dir_40e93e4016c3584ba3b333387b8a88a2.html create mode 100644 dir_40e93e4016c3584ba3b333387b8a88a2.js create mode 100644 dir_40e93e4016c3584ba3b333387b8a88a2_dep.map create mode 100644 dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 create mode 100644 dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg create mode 100644 dir_49e56c817e5e54854c35e136979f97ca.html create mode 100644 dir_767a780e71f3df42bff551d84f4be7e4.html create mode 100644 dir_767a780e71f3df42bff551d84f4be7e4.js create mode 100644 dir_767a780e71f3df42bff551d84f4be7e4_dep.map create mode 100644 dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 create mode 100644 dir_767a780e71f3df42bff551d84f4be7e4_dep.svg create mode 100644 dir_c0a47b52146df2fb522cc2caf716c25e.html create mode 100644 dir_c0a47b52146df2fb522cc2caf716c25e.js create mode 100644 dir_c0a47b52146df2fb522cc2caf716c25e_dep.map create mode 100644 dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 create mode 100644 dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.js create mode 100644 dir_db0c9b95a30589e349974d93aa14253f.html create mode 100644 dir_db0c9b95a30589e349974d93aa14253f.js create mode 100644 dir_db0c9b95a30589e349974d93aa14253f_dep.map create mode 100644 dir_db0c9b95a30589e349974d93aa14253f_dep.md5 create mode 100644 dir_db0c9b95a30589e349974d93aa14253f_dep.svg create mode 100644 doc.svg create mode 100644 docd.svg create mode 100644 doxygen-awesome-sidebar-only.css create mode 100644 doxygen-awesome.css create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 errors_8h_source.html create mode 100644 files.html create mode 100644 files_dup.js create mode 100644 folderclosed.svg create mode 100644 folderclosedd.svg create mode 100644 folderopen.svg create mode 100644 folderopend.svg create mode 100644 functions.html create mode 100644 functions_func.html create mode 100644 functions_type.html create mode 100644 functions_vars.html create mode 100644 graph_legend.html create mode 100644 graph_legend.md5 create mode 100644 graph_legend.svg create mode 100644 hierarchy.html create mode 100644 hierarchy.js create mode 100644 index.html create mode 100644 jquery.js create mode 100644 jwt_8h_source.html create mode 100644 kazuho-picojson_2defaults_8h_source.html create mode 100644 kazuho-picojson_2traits_8h_source.html create mode 100644 md__8github_2security.html create mode 100644 md_docs_2faqs.html create mode 100644 md_docs_2signing.html create mode 100644 md_docs_2ssl.html create mode 100644 md_docs_2traits.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 namespacejwt.html create mode 100644 namespacejwt.js create mode 100644 namespacejwt_1_1algorithm.html create mode 100644 namespacejwt_1_1algorithm.js create mode 100644 namespacejwt_1_1alphabet.html create mode 100644 namespacejwt_1_1alphabet.js create mode 100644 namespacejwt_1_1base.html create mode 100644 namespacejwt_1_1error.html create mode 100644 namespacejwt_1_1error.js create mode 100644 namespacejwt_1_1helper.html create mode 100644 namespacejwt_1_1helper.js create mode 100644 namespacejwt_1_1json.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_enum.html create mode 100644 namespacemembers_func.html create mode 100644 namespacemembers_type.html create mode 100644 namespaces.html create mode 100644 namespaces_dup.js create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 navtree.css create mode 100644 navtree.js create mode 100644 navtreedata.js create mode 100644 navtreeindex0.js create mode 100644 navtreeindex1.js create mode 100644 navtreeindex2.js create mode 100644 nlohmann-json_2defaults_8h_source.html create mode 100644 nlohmann-json_2traits_8h_source.html create mode 100644 open.png create mode 100644 overrides.css create mode 100644 pages.html create mode 100644 resize.js create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js create mode 100644 search/all_13.js create mode 100644 search/all_14.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/classes_4.js create mode 100644 search/classes_5.js create mode 100644 search/classes_6.js create mode 100644 search/classes_7.js create mode 100644 search/classes_8.js create mode 100644 search/classes_9.js create mode 100644 search/classes_a.js create mode 100644 search/classes_b.js create mode 100644 search/classes_c.js create mode 100644 search/classes_d.js create mode 100644 search/classes_e.js create mode 100644 search/close.svg create mode 100644 search/enums_0.js create mode 100644 search/enums_1.js create mode 100644 search/enums_2.js create mode 100644 search/enums_3.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_10.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/functions_b.js create mode 100644 search/functions_c.js create mode 100644 search/functions_d.js create mode 100644 search/functions_e.js create mode 100644 search/functions_f.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/namespaces_0.js create mode 100644 search/pages_0.js create mode 100644 search/pages_1.js create mode 100644 search/pages_2.js create mode 100644 search/pages_3.js create mode 100644 search/pages_4.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.js create mode 100644 search/typedefs_3.js create mode 100644 search/variables_0.js create mode 100644 search/variables_1.js create mode 100644 search/variables_2.js create mode 100644 search/variables_3.js create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 structjwt_1_1algorithm_1_1ecdsa-members.html create mode 100644 structjwt_1_1algorithm_1_1ecdsa.html create mode 100644 structjwt_1_1algorithm_1_1ecdsa.js create mode 100644 structjwt_1_1algorithm_1_1ecdsa__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ecdsa__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ecdsa__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1ed25519-members.html create mode 100644 structjwt_1_1algorithm_1_1ed25519.html create mode 100644 structjwt_1_1algorithm_1_1ed25519.js create mode 100644 structjwt_1_1algorithm_1_1ed25519__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ed25519__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ed25519__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1ed448-members.html create mode 100644 structjwt_1_1algorithm_1_1ed448.html create mode 100644 structjwt_1_1algorithm_1_1ed448.js create mode 100644 structjwt_1_1algorithm_1_1ed448__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ed448__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ed448__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1eddsa-members.html create mode 100644 structjwt_1_1algorithm_1_1eddsa.html create mode 100644 structjwt_1_1algorithm_1_1eddsa.js create mode 100644 structjwt_1_1algorithm_1_1eddsa__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1eddsa__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1eddsa__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1es256-members.html create mode 100644 structjwt_1_1algorithm_1_1es256.html create mode 100644 structjwt_1_1algorithm_1_1es256.js create mode 100644 structjwt_1_1algorithm_1_1es256__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1es256__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1es256__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1es256k-members.html create mode 100644 structjwt_1_1algorithm_1_1es256k.html create mode 100644 structjwt_1_1algorithm_1_1es256k.js create mode 100644 structjwt_1_1algorithm_1_1es256k__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1es256k__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1es256k__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1es384-members.html create mode 100644 structjwt_1_1algorithm_1_1es384.html create mode 100644 structjwt_1_1algorithm_1_1es384.js create mode 100644 structjwt_1_1algorithm_1_1es384__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1es384__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1es384__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1es512-members.html create mode 100644 structjwt_1_1algorithm_1_1es512.html create mode 100644 structjwt_1_1algorithm_1_1es512.js create mode 100644 structjwt_1_1algorithm_1_1es512__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1es512__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1es512__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1hmacsha-members.html create mode 100644 structjwt_1_1algorithm_1_1hmacsha.html create mode 100644 structjwt_1_1algorithm_1_1hmacsha.js create mode 100644 structjwt_1_1algorithm_1_1hmacsha__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1hmacsha__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1hmacsha__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1hs256-members.html create mode 100644 structjwt_1_1algorithm_1_1hs256.html create mode 100644 structjwt_1_1algorithm_1_1hs256.js create mode 100644 structjwt_1_1algorithm_1_1hs256__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1hs256__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1hs256__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1hs384-members.html create mode 100644 structjwt_1_1algorithm_1_1hs384.html create mode 100644 structjwt_1_1algorithm_1_1hs384.js create mode 100644 structjwt_1_1algorithm_1_1hs384__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1hs384__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1hs384__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1hs512-members.html create mode 100644 structjwt_1_1algorithm_1_1hs512.html create mode 100644 structjwt_1_1algorithm_1_1hs512.js create mode 100644 structjwt_1_1algorithm_1_1hs512__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1hs512__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1hs512__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1none-members.html create mode 100644 structjwt_1_1algorithm_1_1none.html create mode 100644 structjwt_1_1algorithm_1_1none.js create mode 100644 structjwt_1_1algorithm_1_1ps256-members.html create mode 100644 structjwt_1_1algorithm_1_1ps256.html create mode 100644 structjwt_1_1algorithm_1_1ps256.js create mode 100644 structjwt_1_1algorithm_1_1ps256__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ps256__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ps256__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1ps384-members.html create mode 100644 structjwt_1_1algorithm_1_1ps384.html create mode 100644 structjwt_1_1algorithm_1_1ps384.js create mode 100644 structjwt_1_1algorithm_1_1ps384__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ps384__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ps384__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1ps512-members.html create mode 100644 structjwt_1_1algorithm_1_1ps512.html create mode 100644 structjwt_1_1algorithm_1_1ps512.js create mode 100644 structjwt_1_1algorithm_1_1ps512__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1ps512__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1ps512__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1pss-members.html create mode 100644 structjwt_1_1algorithm_1_1pss.html create mode 100644 structjwt_1_1algorithm_1_1pss.js create mode 100644 structjwt_1_1algorithm_1_1pss__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1pss__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1pss__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1rs256-members.html create mode 100644 structjwt_1_1algorithm_1_1rs256.html create mode 100644 structjwt_1_1algorithm_1_1rs256.js create mode 100644 structjwt_1_1algorithm_1_1rs256__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1rs256__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1rs256__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1rs384-members.html create mode 100644 structjwt_1_1algorithm_1_1rs384.html create mode 100644 structjwt_1_1algorithm_1_1rs384.js create mode 100644 structjwt_1_1algorithm_1_1rs384__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1rs384__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1rs384__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1rs512-members.html create mode 100644 structjwt_1_1algorithm_1_1rs512.html create mode 100644 structjwt_1_1algorithm_1_1rs512.js create mode 100644 structjwt_1_1algorithm_1_1rs512__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1rs512__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1rs512__inherit__graph.svg create mode 100644 structjwt_1_1algorithm_1_1rsa-members.html create mode 100644 structjwt_1_1algorithm_1_1rsa.html create mode 100644 structjwt_1_1algorithm_1_1rsa.js create mode 100644 structjwt_1_1algorithm_1_1rsa__inherit__graph.map create mode 100644 structjwt_1_1algorithm_1_1rsa__inherit__graph.md5 create mode 100644 structjwt_1_1algorithm_1_1rsa__inherit__graph.svg create mode 100644 structjwt_1_1alphabet_1_1base64-members.html create mode 100644 structjwt_1_1alphabet_1_1base64.html create mode 100644 structjwt_1_1alphabet_1_1base64url-members.html create mode 100644 structjwt_1_1alphabet_1_1base64url.html create mode 100644 structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html create mode 100644 structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html create mode 100644 structjwt_1_1default__clock-members.html create mode 100644 structjwt_1_1default__clock.html create mode 100644 structjwt_1_1error_1_1claim__not__present__exception-members.html create mode 100644 structjwt_1_1error_1_1claim__not__present__exception.html create mode 100644 structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1ecdsa__exception.html create mode 100644 structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1ecdsa__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1ecdsa__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1invalid__json__exception-members.html create mode 100644 structjwt_1_1error_1_1invalid__json__exception.html create mode 100644 structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1invalid__json__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1invalid__json__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1rsa__exception.html create mode 100644 structjwt_1_1error_1_1rsa__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1rsa__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1rsa__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1signature__generation__exception.html create mode 100644 structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1signature__generation__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1signature__generation__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1signature__verification__exception.html create mode 100644 structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1signature__verification__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1signature__verification__exception__inherit__graph.svg create mode 100644 structjwt_1_1error_1_1token__verification__exception.html create mode 100644 structjwt_1_1error_1_1token__verification__exception__inherit__graph.map create mode 100644 structjwt_1_1error_1_1token__verification__exception__inherit__graph.md5 create mode 100644 structjwt_1_1error_1_1token__verification__exception__inherit__graph.svg create mode 100644 structjwt_1_1traits_1_1boost__json-members.html create mode 100644 structjwt_1_1traits_1_1boost__json.html create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons-members.html create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons.html create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons.js create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.md5 create mode 100644 structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.svg create mode 100644 structjwt_1_1traits_1_1kazuho__picojson-members.html create mode 100644 structjwt_1_1traits_1_1kazuho__picojson.html create mode 100644 structjwt_1_1traits_1_1nlohmann__json-members.html create mode 100644 structjwt_1_1traits_1_1nlohmann__json.html create mode 100644 structjwt_1_1verify__ops_1_1date__after__claim-members.html create mode 100644 structjwt_1_1verify__ops_1_1date__after__claim.html create mode 100644 structjwt_1_1verify__ops_1_1date__before__claim-members.html create mode 100644 structjwt_1_1verify__ops_1_1date__before__claim.html create mode 100644 structjwt_1_1verify__ops_1_1equals__claim-members.html create mode 100644 structjwt_1_1verify__ops_1_1equals__claim.html create mode 100644 structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html create mode 100644 structjwt_1_1verify__ops_1_1insensitive__string__claim.html create mode 100644 structjwt_1_1verify__ops_1_1is__subset__claim-members.html create mode 100644 structjwt_1_1verify__ops_1_1is__subset__claim.html create mode 100644 structjwt_1_1verify__ops_1_1verify__context-members.html create mode 100644 structjwt_1_1verify__ops_1_1verify__context.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/algorithms_8h_source.html b/algorithms_8h_source.html new file mode 100644 index 000000000..854506f5e --- /dev/null +++ b/algorithms_8h_source.html @@ -0,0 +1,1158 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/algorithms.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
algorithms.h
+
+
+
1#ifndef JWT_CPP_ALGORITHMS_H
+
2#define JWT_CPP_ALGORITHMS_H
+
3
+
4#include "errors.h"
+
5
+
6#ifndef JWT_DISABLE_BASE64
+
7#include "base.h"
+
8#endif
+
9
+
10#include <openssl/ec.h>
+
11#include <openssl/ecdsa.h>
+
12#include <openssl/err.h>
+
13#include <openssl/evp.h>
+
14#include <openssl/hmac.h>
+
15#include <openssl/opensslv.h>
+
16#include <openssl/pem.h>
+
17#include <openssl/rsa.h>
+
18#include <openssl/ssl.h>
+
19
+
20#include <string>
+
21
+
22#if OPENSSL_VERSION_NUMBER >= 0x30000000L // 3.0.0
+
23#define JWT_OPENSSL_3_0
+
24#elif OPENSSL_VERSION_NUMBER >= 0x10101000L // 1.1.1
+
25#define JWT_OPENSSL_1_1_1
+
26#elif OPENSSL_VERSION_NUMBER >= 0x10100000L // 1.1.0
+
27#define JWT_OPENSSL_1_1_0
+
28#elif OPENSSL_VERSION_NUMBER >= 0x10000000L // 1.0.0
+
29#define JWT_OPENSSL_1_0_0
+
30#endif
+
31
+
32#if defined(LIBRESSL_VERSION_NUMBER)
+
33#if LIBRESSL_VERSION_NUMBER >= 0x3050300fL
+
34#define JWT_OPENSSL_1_1_0
+
35#else
+
36#define JWT_OPENSSL_1_0_0
+
37#endif
+
38#endif
+
39
+
40#if defined(LIBWOLFSSL_VERSION_HEX)
+
41#define JWT_OPENSSL_1_1_1
+
42#endif
+
43
+
44#ifdef JWT_OPENSSL_1_0_0
+
45#include <memory>
+
46#else
+
47#include <stdexcept>
+
48#endif
+
49
+
50namespace jwt {
+
56 namespace helper {
+ +
65 public:
+
67 constexpr evp_pkey_handle() noexcept = default;
+
71 explicit evp_pkey_handle(EVP_PKEY* key) noexcept {
+
72#ifdef JWT_OPENSSL_1_0_0
+
73 m_key = std::shared_ptr<EVP_PKEY>(key, EVP_PKEY_free);
+
74#else
+
75 m_key = key;
+
76#endif
+
77 }
+
81 evp_pkey_handle(const evp_pkey_handle& other) : m_key{other.m_key} { increment_ref_count(m_key); }
+
82 evp_pkey_handle(evp_pkey_handle&& other) noexcept : m_key{other.m_key} { other.m_key = nullptr; }
+
83 ~evp_pkey_handle() noexcept { decrement_ref_count(m_key); }
+
84
+
85 EVP_PKEY* get() const noexcept {
+
86#ifdef JWT_OPENSSL_1_0_0
+
87 return m_key.get();
+
88#else
+
89 return m_key;
+
90#endif
+
91 }
+
92 bool operator!() const noexcept { return m_key == nullptr; }
+
93 explicit operator bool() const noexcept { return m_key != nullptr; }
+
94
+
95 evp_pkey_handle& operator=(const evp_pkey_handle& other) {
+
96 if (&other == this) return *this;
+
97 decrement_ref_count(m_key);
+
98 m_key = other.m_key;
+
99 increment_ref_count(m_key);
+
100 return *this;
+
101 }
+
102 evp_pkey_handle& operator=(evp_pkey_handle&& other) noexcept {
+
103 if (&other == this) return *this;
+
104 decrement_ref_count(m_key);
+
105 m_key = other.m_key;
+
106 other.m_key = nullptr;
+
107 return *this;
+
108 }
+
109 evp_pkey_handle& operator=(EVP_PKEY* key) {
+
110 decrement_ref_count(m_key);
+
111 m_key = key;
+
112 increment_ref_count(m_key);
+
113 return *this;
+
114 }
+
115
+
116 private:
+
117#ifdef JWT_OPENSSL_1_0_0
+
118 std::shared_ptr<EVP_PKEY> m_key{nullptr};
+
119#else
+
120 EVP_PKEY* m_key{nullptr};
+
121#endif
+
122
+
123 static void increment_ref_count(EVP_PKEY* key) {
+
124#ifdef JWT_OPENSSL_1_0_0
+
125 return;
+
126#else
+
127 if (key != nullptr && EVP_PKEY_up_ref(key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
128#endif
+
129 }
+
130 static void decrement_ref_count(EVP_PKEY* key) noexcept {
+
131#ifdef JWT_OPENSSL_1_0_0
+
132 return;
+
133#else
+
134 if (key != nullptr) EVP_PKEY_free(key);
+
135#endif
+
136 };
+
137 };
+
138
+
139 namespace details {
+
140 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio() {
+
141 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(BIO_new(BIO_s_mem()), BIO_free_all);
+
142 }
+
143
+
144 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio(const std::string& data) {
+
145 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(
+
146#if OPENSSL_VERSION_NUMBER <= 0x10100003L
+
147 BIO_new_mem_buf(const_cast<char*>(data.data()), static_cast<int>(data.size())), BIO_free_all
+
148#else
+
149 BIO_new_mem_buf(data.data(), static_cast<int>(data.size())), BIO_free_all
+
150#endif
+
151 );
+
152 }
+
153 } // namespace details
+
161 inline std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw,
+
162 std::error_code& ec) {
+
163 ec.clear();
+
164 auto certbio = details::make_mem_buf_bio(certstr);
+
165 auto keybio = details::make_mem_buf_bio();
+
166 if (!certbio || !keybio) {
+
167 ec = error::rsa_error::create_mem_bio_failed;
+
168 return {};
+
169 }
+
170
+
171 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
172 PEM_read_bio_X509(certbio.get(), nullptr, nullptr, const_cast<char*>(pw.c_str())), X509_free);
+
173 if (!cert) {
+
174 ec = error::rsa_error::cert_load_failed;
+
175 return {};
+
176 }
+
177 std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)> key(X509_get_pubkey(cert.get()), EVP_PKEY_free);
+
178 if (!key) {
+
179 ec = error::rsa_error::get_key_failed;
+
180 return {};
+
181 }
+
182 if (PEM_write_bio_PUBKEY(keybio.get(), key.get()) == 0) {
+
183 ec = error::rsa_error::write_key_failed;
+
184 return {};
+
185 }
+
186 char* ptr = nullptr;
+
187 auto len = BIO_get_mem_data(keybio.get(), &ptr);
+
188 if (len <= 0 || ptr == nullptr) {
+
189 ec = error::rsa_error::convert_to_pem_failed;
+
190 return {};
+
191 }
+
192 return {ptr, static_cast<size_t>(len)};
+
193 }
+
194
+
202 inline std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw = "") {
+
203 std::error_code ec;
+
204 auto res = extract_pubkey_from_cert(certstr, pw, ec);
+ +
206 return res;
+
207 }
+
208
+
215 inline std::string convert_der_to_pem(const std::string& cert_der_str, std::error_code& ec) {
+
216 ec.clear();
+
217
+
218 auto c_str = reinterpret_cast<const unsigned char*>(cert_der_str.c_str());
+
219
+
220 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
221 d2i_X509(NULL, &c_str, static_cast<int>(cert_der_str.size())), X509_free);
+
222 auto certbio = details::make_mem_buf_bio();
+
223 if (!cert || !certbio) {
+
224 ec = error::rsa_error::create_mem_bio_failed;
+
225 return {};
+
226 }
+
227
+
228 if (!PEM_write_bio_X509(certbio.get(), cert.get())) {
+
229 ec = error::rsa_error::write_cert_failed;
+
230 return {};
+
231 }
+
232
+
233 char* ptr = nullptr;
+
234 const auto len = BIO_get_mem_data(certbio.get(), &ptr);
+
235 if (len <= 0 || ptr == nullptr) {
+
236 ec = error::rsa_error::convert_to_pem_failed;
+
237 return {};
+
238 }
+
239
+
240 return {ptr, static_cast<size_t>(len)};
+
241 }
+
242
+
257 template<typename Decode>
+
258 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode,
+
259 std::error_code& ec) {
+
260 ec.clear();
+
261 const auto decoded_str = decode(cert_base64_der_str);
+
262 return convert_der_to_pem(decoded_str, ec);
+
263 }
+
264
+
279 template<typename Decode>
+
280 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode) {
+
281 std::error_code ec;
+
282 auto res = convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+ +
284 return res;
+
285 }
+
286
+
293 inline std::string convert_der_to_pem(const std::string& cert_der_str) {
+
294 std::error_code ec;
+
295 auto res = convert_der_to_pem(cert_der_str, ec);
+ +
297 return res;
+
298 }
+
299
+
300#ifndef JWT_DISABLE_BASE64
+
310 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, std::error_code& ec) {
+
311 auto decode = [](const std::string& token) {
+
312 return base::decode<alphabet::base64>(base::pad<alphabet::base64>(token));
+
313 };
+
314 return convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+
315 }
+
316
+
326 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str) {
+
327 std::error_code ec;
+
328 auto res = convert_base64_der_to_pem(cert_base64_der_str, ec);
+ +
330 return res;
+
331 }
+
332#endif
+
342 inline evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password,
+
343 std::error_code& ec) {
+
344 ec.clear();
+
345 auto pubkey_bio = details::make_mem_buf_bio();
+
346 if (!pubkey_bio) {
+
347 ec = error::rsa_error::create_mem_bio_failed;
+
348 return {};
+
349 }
+
350 if (key.substr(0, 27) == "-----BEGIN CERTIFICATE-----") {
+
351 auto epkey = helper::extract_pubkey_from_cert(key, password, ec);
+
352 if (ec) return {};
+
353 const int len = static_cast<int>(epkey.size());
+
354 if (BIO_write(pubkey_bio.get(), epkey.data(), len) != len) {
+
355 ec = error::rsa_error::load_key_bio_write;
+
356 return {};
+
357 }
+
358 } else {
+
359 const int len = static_cast<int>(key.size());
+
360 if (BIO_write(pubkey_bio.get(), key.data(), len) != len) {
+
361 ec = error::rsa_error::load_key_bio_write;
+
362 return {};
+
363 }
+
364 }
+
365
+
366 evp_pkey_handle pkey(PEM_read_bio_PUBKEY(
+
367 pubkey_bio.get(), nullptr, nullptr,
+
368 (void*)password.data())); // NOLINT(google-readability-casting) requires `const_cast`
+
369 if (!pkey) ec = error::rsa_error::load_key_bio_read;
+
370 return pkey;
+
371 }
+
372
+
382 inline evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password = "") {
+
383 std::error_code ec;
+
384 auto res = load_public_key_from_string(key, password, ec);
+ +
386 return res;
+
387 }
+
388
+
396 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password,
+
397 std::error_code& ec) {
+
398 auto privkey_bio = details::make_mem_buf_bio();
+
399 if (!privkey_bio) {
+
400 ec = error::rsa_error::create_mem_bio_failed;
+
401 return {};
+
402 }
+
403 const int len = static_cast<int>(key.size());
+
404 if (BIO_write(privkey_bio.get(), key.data(), len) != len) {
+
405 ec = error::rsa_error::load_key_bio_write;
+
406 return {};
+
407 }
+
408 evp_pkey_handle pkey(
+
409 PEM_read_bio_PrivateKey(privkey_bio.get(), nullptr, nullptr, const_cast<char*>(password.c_str())));
+
410 if (!pkey) ec = error::rsa_error::load_key_bio_read;
+
411 return pkey;
+
412 }
+
413
+
421 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password = "") {
+
422 std::error_code ec;
+
423 auto res = load_private_key_from_string(key, password, ec);
+ +
425 return res;
+
426 }
+
427
+
437 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key, const std::string& password,
+
438 std::error_code& ec) {
+
439 ec.clear();
+
440 auto pubkey_bio = details::make_mem_buf_bio();
+
441 if (!pubkey_bio) {
+
442 ec = error::ecdsa_error::create_mem_bio_failed;
+
443 return {};
+
444 }
+
445 if (key.substr(0, 27) == "-----BEGIN CERTIFICATE-----") {
+
446 auto epkey = helper::extract_pubkey_from_cert(key, password, ec);
+
447 if (ec) return {};
+
448 const int len = static_cast<int>(epkey.size());
+
449 if (BIO_write(pubkey_bio.get(), epkey.data(), len) != len) {
+
450 ec = error::ecdsa_error::load_key_bio_write;
+
451 return {};
+
452 }
+
453 } else {
+
454 const int len = static_cast<int>(key.size());
+
455 if (BIO_write(pubkey_bio.get(), key.data(), len) != len) {
+
456 ec = error::ecdsa_error::load_key_bio_write;
+
457 return {};
+
458 }
+
459 }
+
460
+
461 evp_pkey_handle pkey(PEM_read_bio_PUBKEY(
+
462 pubkey_bio.get(), nullptr, nullptr,
+
463 (void*)password.data())); // NOLINT(google-readability-casting) requires `const_cast`
+
464 if (!pkey) ec = error::ecdsa_error::load_key_bio_read;
+
465 return pkey;
+
466 }
+
467
+
477 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key,
+
478 const std::string& password = "") {
+
479 std::error_code ec;
+
480 auto res = load_public_ec_key_from_string(key, password, ec);
+ +
482 return res;
+
483 }
+
484
+
492 inline evp_pkey_handle load_private_ec_key_from_string(const std::string& key, const std::string& password,
+
493 std::error_code& ec) {
+
494 auto privkey_bio = details::make_mem_buf_bio();
+
495 if (!privkey_bio) {
+
496 ec = error::ecdsa_error::create_mem_bio_failed;
+
497 return {};
+
498 }
+
499 const int len = static_cast<int>(key.size());
+
500 if (BIO_write(privkey_bio.get(), key.data(), len) != len) {
+
501 ec = error::ecdsa_error::load_key_bio_write;
+
502 return {};
+
503 }
+
504 evp_pkey_handle pkey(
+
505 PEM_read_bio_PrivateKey(privkey_bio.get(), nullptr, nullptr, const_cast<char*>(password.c_str())));
+
506 if (!pkey) ec = error::ecdsa_error::load_key_bio_read;
+
507 return pkey;
+
508 }
+
509
+ +
518 const std::string& password = "") {
+
519 std::error_code ec;
+
520 auto res = load_private_ec_key_from_string(key, password, ec);
+ +
522 return res;
+
523 }
+
524 } // namespace helper
+
525
+
526 namespace details {
+
527 inline std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)> make_evp_md_ctx() {
+
528 return
+
529#ifdef JWT_OPENSSL_1_0_0
+
530 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(), &EVP_MD_CTX_destroy);
+
531#else
+
532 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)>(EVP_MD_CTX_new(), &EVP_MD_CTX_free);
+
533#endif
+
534 }
+
540 inline std::string bn2raw(
+
541#ifdef JWT_OPENSSL_1_0_0
+
542 BIGNUM* bn)
+
543#else
+
544 const BIGNUM* bn)
+
545#endif
+
546 {
+
547 std::string res(BN_num_bytes(bn), '\0');
+
548 BN_bn2bin(bn, (unsigned char*)res.data()); // NOLINT(google-readability-casting) requires `const_cast`
+
549 return res;
+
550 }
+
556 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw) {
+
557 return std::unique_ptr<BIGNUM, decltype(&BN_free)>(
+
558 BN_bin2bn(reinterpret_cast<const unsigned char*>(raw.data()), static_cast<int>(raw.size()), nullptr),
+
559 BN_free);
+
560 }
+
561 } // namespace details
+
562
+
572 namespace algorithm {
+
580 struct none {
+
584 std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+
585 ec.clear();
+
586 return {};
+
587 }
+
595 void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+
596 ec.clear();
+
597 if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
598 }
+
600 std::string name() const { return "none"; }
+
601 };
+
605 struct hmacsha {
+
613 hmacsha(std::string key, const EVP_MD* (*md)(), std::string name)
+
614 : secret(std::move(key)), md(md), alg_name(std::move(name)) {}
+
622 std::string sign(const std::string& data, std::error_code& ec) const {
+
623 ec.clear();
+
624 std::string res(static_cast<size_t>(EVP_MAX_MD_SIZE), '\0');
+
625 auto len = static_cast<unsigned int>(res.size());
+
626 if (HMAC(md(), secret.data(), static_cast<int>(secret.size()),
+
627 reinterpret_cast<const unsigned char*>(data.data()), static_cast<int>(data.size()),
+
628 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
629 &len) == nullptr) {
+
630 ec = error::signature_generation_error::hmac_failed;
+
631 return {};
+
632 }
+
633 res.resize(len);
+
634 return res;
+
635 }
+
643 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
644 ec.clear();
+
645 auto res = sign(data, ec);
+
646 if (ec) return;
+
647
+
648 bool matched = true;
+
649 for (size_t i = 0; i < std::min<size_t>(res.size(), signature.size()); i++)
+
650 if (res[i] != signature[i]) matched = false;
+
651 if (res.size() != signature.size()) matched = false;
+
652 if (!matched) {
+
653 ec = error::signature_verification_error::invalid_signature;
+
654 return;
+
655 }
+
656 }
+
662 std::string name() const { return alg_name; }
+
663
+
664 private:
+
666 const std::string secret;
+
668 const EVP_MD* (*md)();
+
670 const std::string alg_name;
+
671 };
+
675 struct rsa {
+
686 rsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
687 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
688 : md(md), alg_name(std::move(name)) {
+
689 if (!private_key.empty()) {
+
690 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
691 } else if (!public_key.empty()) {
+
692 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
693 } else
+
694 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
695 }
+
702 std::string sign(const std::string& data, std::error_code& ec) const {
+
703 ec.clear();
+
704 auto ctx = details::make_evp_md_ctx();
+
705 if (!ctx) {
+
706 ec = error::signature_generation_error::create_context_failed;
+
707 return {};
+
708 }
+
709 if (!EVP_SignInit(ctx.get(), md())) {
+
710 ec = error::signature_generation_error::signinit_failed;
+
711 return {};
+
712 }
+
713
+
714 std::string res(EVP_PKEY_size(pkey.get()), '\0');
+
715 unsigned int len = 0;
+
716
+
717 if (!EVP_SignUpdate(ctx.get(), data.data(), data.size())) {
+
718 ec = error::signature_generation_error::signupdate_failed;
+
719 return {};
+
720 }
+
721 if (EVP_SignFinal(ctx.get(), (unsigned char*)res.data(), &len, pkey.get()) == 0) {
+
722 ec = error::signature_generation_error::signfinal_failed;
+
723 return {};
+
724 }
+
725
+
726 res.resize(len);
+
727 return res;
+
728 }
+
736 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
737 ec.clear();
+
738 auto ctx = details::make_evp_md_ctx();
+
739 if (!ctx) {
+
740 ec = error::signature_verification_error::create_context_failed;
+
741 return;
+
742 }
+
743 if (!EVP_VerifyInit(ctx.get(), md())) {
+
744 ec = error::signature_verification_error::verifyinit_failed;
+
745 return;
+
746 }
+
747 if (!EVP_VerifyUpdate(ctx.get(), data.data(), data.size())) {
+
748 ec = error::signature_verification_error::verifyupdate_failed;
+
749 return;
+
750 }
+
751 auto res = EVP_VerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
752 static_cast<unsigned int>(signature.size()), pkey.get());
+
753 if (res != 1) {
+
754 ec = error::signature_verification_error::verifyfinal_failed;
+
755 return;
+
756 }
+
757 }
+
762 std::string name() const { return alg_name; }
+
763
+
764 private:
+ +
768 const EVP_MD* (*md)();
+
770 const std::string alg_name;
+
771 };
+
775 struct ecdsa {
+
787 ecdsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
788 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name, size_t siglen)
+
789 : md(md), alg_name(std::move(name)), signature_length(siglen) {
+
790 if (!private_key.empty()) {
+
791 pkey = helper::load_private_ec_key_from_string(private_key, private_key_password);
+
792 check_private_key(pkey.get());
+
793 } else if (!public_key.empty()) {
+
794 pkey = helper::load_public_ec_key_from_string(public_key, public_key_password);
+
795 check_public_key(pkey.get());
+
796 } else {
+
797 throw error::ecdsa_exception(error::ecdsa_error::no_key_provided);
+
798 }
+
799 if (!pkey) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
800
+
801 size_t keysize = EVP_PKEY_bits(pkey.get());
+
802 if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
+
803 throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
+
804 }
+
805
+
812 std::string sign(const std::string& data, std::error_code& ec) const {
+
813 ec.clear();
+
814 auto ctx = details::make_evp_md_ctx();
+
815 if (!ctx) {
+
816 ec = error::signature_generation_error::create_context_failed;
+
817 return {};
+
818 }
+
819 if (!EVP_DigestSignInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
820 ec = error::signature_generation_error::signinit_failed;
+
821 return {};
+
822 }
+
823 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
824 ec = error::signature_generation_error::digestupdate_failed;
+
825 return {};
+
826 }
+
827
+
828 size_t len = 0;
+
829 if (!EVP_DigestSignFinal(ctx.get(), nullptr, &len)) {
+
830 ec = error::signature_generation_error::signfinal_failed;
+
831 return {};
+
832 }
+
833 std::string res(len, '\0');
+
834 if (!EVP_DigestSignFinal(ctx.get(), (unsigned char*)res.data(), &len)) {
+
835 ec = error::signature_generation_error::signfinal_failed;
+
836 return {};
+
837 }
+
838
+
839 res.resize(len);
+
840 return der_to_p1363_signature(res, ec);
+
841 }
+
842
+
849 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
850 ec.clear();
+
851 std::string der_signature = p1363_to_der_signature(signature, ec);
+
852 if (ec) { return; }
+
853
+
854 auto ctx = details::make_evp_md_ctx();
+
855 if (!ctx) {
+
856 ec = error::signature_verification_error::create_context_failed;
+
857 return;
+
858 }
+
859 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
860 ec = error::signature_verification_error::verifyinit_failed;
+
861 return;
+
862 }
+
863 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
864 ec = error::signature_verification_error::verifyupdate_failed;
+
865 return;
+
866 }
+
867
+
868#if OPENSSL_VERSION_NUMBER < 0x10002000L
+
869 unsigned char* der_sig_data = reinterpret_cast<unsigned char*>(const_cast<char*>(der_signature.data()));
+
870#else
+
871 const unsigned char* der_sig_data = reinterpret_cast<const unsigned char*>(der_signature.data());
+
872#endif
+
873 auto res =
+
874 EVP_DigestVerifyFinal(ctx.get(), der_sig_data, static_cast<unsigned int>(der_signature.length()));
+
875 if (res == 0) {
+
876 ec = error::signature_verification_error::invalid_signature;
+
877 return;
+
878 }
+
879 if (res == -1) {
+
880 ec = error::signature_verification_error::verifyfinal_failed;
+
881 return;
+
882 }
+
883 }
+
888 std::string name() const { return alg_name; }
+
889
+
890 private:
+
891 static void check_public_key(EVP_PKEY* pkey) {
+
892#ifdef JWT_OPENSSL_3_0
+
893 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
894 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
895 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
896 if (EVP_PKEY_public_check(ctx.get()) != 1) {
+
897 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
898 }
+
899#else
+
900 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
901 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
902 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
903#endif
+
904 }
+
905
+
906 static void check_private_key(EVP_PKEY* pkey) {
+
907#ifdef JWT_OPENSSL_3_0
+
908 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
909 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
910 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
911 if (EVP_PKEY_private_check(ctx.get()) != 1) {
+
912 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
913 }
+
914#else
+
915 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
916 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
917 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
918#endif
+
919 }
+
920
+
921 std::string der_to_p1363_signature(const std::string& der_signature, std::error_code& ec) const {
+
922 const unsigned char* possl_signature = reinterpret_cast<const unsigned char*>(der_signature.data());
+
923 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(
+
924 d2i_ECDSA_SIG(nullptr, &possl_signature, static_cast<long>(der_signature.length())),
+
925 ECDSA_SIG_free);
+
926 if (!sig) {
+
927 ec = error::signature_generation_error::signature_decoding_failed;
+
928 return {};
+
929 }
+
930
+
931#ifdef JWT_OPENSSL_1_0_0
+
932
+
933 auto rr = details::bn2raw(sig->r);
+
934 auto rs = details::bn2raw(sig->s);
+
935#else
+
936 const BIGNUM* r;
+
937 const BIGNUM* s;
+
938 ECDSA_SIG_get0(sig.get(), &r, &s);
+
939 auto rr = details::bn2raw(r);
+
940 auto rs = details::bn2raw(s);
+
941#endif
+
942 if (rr.size() > signature_length / 2 || rs.size() > signature_length / 2)
+
943 throw std::logic_error("bignum size exceeded expected length");
+
944 rr.insert(0, signature_length / 2 - rr.size(), '\0');
+
945 rs.insert(0, signature_length / 2 - rs.size(), '\0');
+
946 return rr + rs;
+
947 }
+
948
+
949 std::string p1363_to_der_signature(const std::string& signature, std::error_code& ec) const {
+
950 ec.clear();
+
951 auto r = details::raw2bn(signature.substr(0, signature.size() / 2));
+
952 auto s = details::raw2bn(signature.substr(signature.size() / 2));
+
953
+
954 ECDSA_SIG* psig;
+
955#ifdef JWT_OPENSSL_1_0_0
+
956 ECDSA_SIG sig;
+
957 sig.r = r.get();
+
958 sig.s = s.get();
+
959 psig = &sig;
+
960#else
+
961 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(ECDSA_SIG_new(), ECDSA_SIG_free);
+
962 if (!sig) {
+
963 ec = error::signature_verification_error::create_context_failed;
+
964 return {};
+
965 }
+
966 ECDSA_SIG_set0(sig.get(), r.release(), s.release());
+
967 psig = sig.get();
+
968#endif
+
969
+
970 int length = i2d_ECDSA_SIG(psig, nullptr);
+
971 if (length < 0) {
+
972 ec = error::signature_verification_error::signature_encoding_failed;
+
973 return {};
+
974 }
+
975 std::string der_signature(length, '\0');
+
976 unsigned char* psbuffer = (unsigned char*)der_signature.data();
+
977 length = i2d_ECDSA_SIG(psig, &psbuffer);
+
978 if (length < 0) {
+
979 ec = error::signature_verification_error::signature_encoding_failed;
+
980 return {};
+
981 }
+
982 der_signature.resize(length);
+
983 return der_signature;
+
984 }
+
985
+
987 helper::evp_pkey_handle pkey;
+
989 const EVP_MD* (*md)();
+
991 const std::string alg_name;
+
993 const size_t signature_length;
+
994 };
+
995
+
996#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
1005 struct eddsa {
+
1016 eddsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1017 const std::string& private_key_password, std::string name)
+
1018 : alg_name(std::move(name)) {
+
1019 if (!private_key.empty()) {
+
1020 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1021 } else if (!public_key.empty()) {
+
1022 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1023 } else
+
1024 throw error::ecdsa_exception(error::ecdsa_error::load_key_bio_read);
+
1025 }
+
1032 std::string sign(const std::string& data, std::error_code& ec) const {
+
1033 ec.clear();
+
1034 auto ctx = details::make_evp_md_ctx();
+
1035 if (!ctx) {
+
1036 ec = error::signature_generation_error::create_context_failed;
+
1037 return {};
+
1038 }
+
1039 if (!EVP_DigestSignInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1040 ec = error::signature_generation_error::signinit_failed;
+
1041 return {};
+
1042 }
+
1043
+
1044 size_t len = EVP_PKEY_size(pkey.get());
+
1045 std::string res(len, '\0');
+
1046
+
1047// LibreSSL is the special kid in the block, as it does not support EVP_DigestSign.
+
1048// OpenSSL on the otherhand does not support using EVP_DigestSignUpdate for eddsa, which is why we end up with this
+
1049// mess.
+
1050#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1051 ERR_clear_error();
+
1052 if (EVP_DigestSignUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()), data.size()) !=
+
1053 1) {
+
1054 std::cout << ERR_error_string(ERR_get_error(), NULL) << std::endl;
+
1055 ec = error::signature_generation_error::signupdate_failed;
+
1056 return {};
+
1057 }
+
1058 if (EVP_DigestSignFinal(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len) != 1) {
+
1059 ec = error::signature_generation_error::signfinal_failed;
+
1060 return {};
+
1061 }
+
1062#else
+
1063 if (EVP_DigestSign(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len,
+
1064 reinterpret_cast<const unsigned char*>(data.data()), data.size()) != 1) {
+
1065 ec = error::signature_generation_error::signfinal_failed;
+
1066 return {};
+
1067 }
+
1068#endif
+
1069
+
1070 res.resize(len);
+
1071 return res;
+
1072 }
+
1073
+
1080 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1081 ec.clear();
+
1082 auto ctx = details::make_evp_md_ctx();
+
1083 if (!ctx) {
+
1084 ec = error::signature_verification_error::create_context_failed;
+
1085 return;
+
1086 }
+
1087 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1088 ec = error::signature_verification_error::verifyinit_failed;
+
1089 return;
+
1090 }
+
1091// LibreSSL is the special kid in the block, as it does not support EVP_DigestVerify.
+
1092// OpenSSL on the otherhand does not support using EVP_DigestVerifyUpdate for eddsa, which is why we end up with this
+
1093// mess.
+
1094#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1095 if (EVP_DigestVerifyUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()),
+
1096 data.size()) != 1) {
+
1097 ec = error::signature_verification_error::verifyupdate_failed;
+
1098 return;
+
1099 }
+
1100 if (EVP_DigestVerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1101 signature.size()) != 1) {
+
1102 ec = error::signature_verification_error::verifyfinal_failed;
+
1103 return;
+
1104 }
+
1105#else
+
1106 auto res = EVP_DigestVerify(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1107 signature.size(), reinterpret_cast<const unsigned char*>(data.data()),
+
1108 data.size());
+
1109 if (res != 1) {
+
1110 ec = error::signature_verification_error::verifyfinal_failed;
+
1111 return;
+
1112 }
+
1113#endif
+
1114 }
+
1119 std::string name() const { return alg_name; }
+
1120
+
1121 private:
+ +
1125 const std::string alg_name;
+
1126 };
+
1127#endif
+
1131 struct pss {
+
1141 pss(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1142 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1143 : md(md), alg_name(std::move(name)) {
+
1144 if (!private_key.empty()) {
+
1145 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1146 } else if (!public_key.empty()) {
+
1147 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1148 } else
+
1149 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1150 }
+
1151
+
1158 std::string sign(const std::string& data, std::error_code& ec) const {
+
1159 ec.clear();
+
1160 auto md_ctx = details::make_evp_md_ctx();
+
1161 if (!md_ctx) {
+
1162 ec = error::signature_generation_error::create_context_failed;
+
1163 return {};
+
1164 }
+
1165 EVP_PKEY_CTX* ctx = nullptr;
+
1166 if (EVP_DigestSignInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1167 ec = error::signature_generation_error::signinit_failed;
+
1168 return {};
+
1169 }
+
1170 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1171 ec = error::signature_generation_error::rsa_padding_failed;
+
1172 return {};
+
1173 }
+
1174// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1175// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1176#ifndef LIBWOLFSSL_VERSION_HEX
+
1177 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1178 ec = error::signature_generation_error::set_rsa_pss_saltlen_failed;
+
1179 return {};
+
1180 }
+
1181#endif
+
1182 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1183 ec = error::signature_generation_error::digestupdate_failed;
+
1184 return {};
+
1185 }
+
1186
+
1187 size_t size = EVP_PKEY_size(pkey.get());
+
1188 std::string res(size, 0x00);
+
1189 if (EVP_DigestSignFinal(
+
1190 md_ctx.get(),
+
1191 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1192 &size) <= 0) {
+
1193 ec = error::signature_generation_error::signfinal_failed;
+
1194 return {};
+
1195 }
+
1196
+
1197 return res;
+
1198 }
+
1199
+
1206 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1207 ec.clear();
+
1208
+
1209 auto md_ctx = details::make_evp_md_ctx();
+
1210 if (!md_ctx) {
+
1211 ec = error::signature_verification_error::create_context_failed;
+
1212 return;
+
1213 }
+
1214 EVP_PKEY_CTX* ctx = nullptr;
+
1215 if (EVP_DigestVerifyInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1216 ec = error::signature_verification_error::verifyinit_failed;
+
1217 return;
+
1218 }
+
1219 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1220 ec = error::signature_generation_error::rsa_padding_failed;
+
1221 return;
+
1222 }
+
1223// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1224// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1225#ifndef LIBWOLFSSL_VERSION_HEX
+
1226 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1227 ec = error::signature_verification_error::set_rsa_pss_saltlen_failed;
+
1228 return;
+
1229 }
+
1230#endif
+
1231 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1232 ec = error::signature_verification_error::verifyupdate_failed;
+
1233 return;
+
1234 }
+
1235
+
1236 if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(), signature.size()) <= 0) {
+
1237 ec = error::signature_verification_error::verifyfinal_failed;
+
1238 return;
+
1239 }
+
1240 }
+
1245 std::string name() const { return alg_name; }
+
1246
+
1247 private:
+ +
1251 const EVP_MD* (*md)();
+
1253 const std::string alg_name;
+
1254 };
+
1255
+
1259 struct hs256 : public hmacsha {
+
1264 explicit hs256(std::string key) : hmacsha(std::move(key), EVP_sha256, "HS256") {}
+
1265 };
+
1269 struct hs384 : public hmacsha {
+
1274 explicit hs384(std::string key) : hmacsha(std::move(key), EVP_sha384, "HS384") {}
+
1275 };
+
1279 struct hs512 : public hmacsha {
+
1284 explicit hs512(std::string key) : hmacsha(std::move(key), EVP_sha512, "HS512") {}
+
1285 };
+
1289 struct rs256 : public rsa {
+
1297 explicit rs256(const std::string& public_key, const std::string& private_key = "",
+
1298 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1299 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "RS256") {}
+
1300 };
+
1304 struct rs384 : public rsa {
+
1312 explicit rs384(const std::string& public_key, const std::string& private_key = "",
+
1313 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1314 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "RS384") {}
+
1315 };
+
1319 struct rs512 : public rsa {
+
1327 explicit rs512(const std::string& public_key, const std::string& private_key = "",
+
1328 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1329 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "RS512") {}
+
1330 };
+
1334 struct es256 : public ecdsa {
+
1344 explicit es256(const std::string& public_key, const std::string& private_key = "",
+
1345 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1346 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256", 64) {}
+
1347 };
+
1351 struct es384 : public ecdsa {
+
1361 explicit es384(const std::string& public_key, const std::string& private_key = "",
+
1362 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1363 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "ES384", 96) {}
+
1364 };
+
1368 struct es512 : public ecdsa {
+
1378 explicit es512(const std::string& public_key, const std::string& private_key = "",
+
1379 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1380 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "ES512", 132) {}
+
1381 };
+
1385 struct es256k : public ecdsa {
+
1394 explicit es256k(const std::string& public_key, const std::string& private_key = "",
+
1395 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1396 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256K", 64) {}
+
1397 };
+
1398
+
1399#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
1407 struct ed25519 : public eddsa {
+
1417 explicit ed25519(const std::string& public_key, const std::string& private_key = "",
+
1418 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1419 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
1420 };
+
1421
+
1429 struct ed448 : public eddsa {
+
1439 explicit ed448(const std::string& public_key, const std::string& private_key = "",
+
1440 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1441 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
1442 };
+
1443#endif
+
1444
+
1448 struct ps256 : public pss {
+
1456 explicit ps256(const std::string& public_key, const std::string& private_key = "",
+
1457 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1458 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "PS256") {}
+
1459 };
+
1463 struct ps384 : public pss {
+
1471 explicit ps384(const std::string& public_key, const std::string& private_key = "",
+
1472 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1473 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "PS384") {}
+
1474 };
+
1478 struct ps512 : public pss {
+
1486 explicit ps512(const std::string& public_key, const std::string& private_key = "",
+
1487 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1488 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "PS512") {}
+
1489 };
+
1490 } // namespace algorithm
+
1491} // namespace jwt
+
1492
+
1493#endif
+
Handle class for EVP_PKEY structures.
Definition algorithms.h:64
+
constexpr evp_pkey_handle() noexcept=default
Creates a null key pointer.
+
evp_pkey_handle(const evp_pkey_handle &other)
Create a new handle incrementing the reference count.
Definition algorithms.h:81
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition errors.h:281
+
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 algorithms.h:437
+
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 algorithms.h:492
+
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 algorithms.h:161
+
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 algorithms.h:258
+
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 algorithms.h:215
+
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 algorithms.h:396
+
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 algorithms.h:342
+
JSON Web Token.
Definition algorithms.h:50
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Definition jwt.h:1865
+
Base class for ECDSA family of algorithms.
Definition algorithms.h:775
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition algorithms.h:849
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition algorithms.h:812
+
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 algorithms.h:787
+
std::string name() const
Definition algorithms.h:888
+
Definition algorithms.h:1407
+
ed25519(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1417
+
Definition algorithms.h:1429
+
ed448(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1439
+
Base class for EdDSA family of algorithms.
Definition algorithms.h:1005
+
std::string name() const
Definition algorithms.h:1119
+
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 algorithms.h:1016
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition algorithms.h:1032
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition algorithms.h:1080
+
Definition algorithms.h:1334
+
es256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1344
+
Definition algorithms.h:1385
+
es256k(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1394
+
Definition algorithms.h:1351
+
es384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1361
+
Definition algorithms.h:1368
+
es512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1378
+
Base class for HMAC family of algorithms.
Definition algorithms.h:605
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition algorithms.h:622
+
std::string name() const
Definition algorithms.h:662
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition algorithms.h:643
+
hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)
Definition algorithms.h:613
+
Definition algorithms.h:1259
+
hs256(std::string key)
Definition algorithms.h:1264
+
Definition algorithms.h:1269
+
hs384(std::string key)
Definition algorithms.h:1274
+
Definition algorithms.h:1279
+
hs512(std::string key)
Definition algorithms.h:1284
+
"none" algorithm.
Definition algorithms.h:580
+
void verify(const std::string &, const std::string &signature, std::error_code &ec) const
Check if the given signature is empty.
Definition algorithms.h:595
+
std::string name() const
Get algorithm name.
Definition algorithms.h:600
+
std::string sign(const std::string &, std::error_code &ec) const
Return an empty string.
Definition algorithms.h:584
+
Definition algorithms.h:1448
+
ps256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1456
+
Definition algorithms.h:1463
+
ps384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1471
+
Definition algorithms.h:1478
+
ps512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1486
+
Base class for PSS-RSA family of algorithms.
Definition algorithms.h:1131
+
std::string name() const
Definition algorithms.h:1245
+
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 algorithms.h:1141
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition algorithms.h:1206
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition algorithms.h:1158
+
Definition algorithms.h:1289
+
rs256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1297
+
Definition algorithms.h:1304
+
rs384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1312
+
Definition algorithms.h:1319
+
rs512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition algorithms.h:1327
+
Base class for RSA family of algorithms.
Definition algorithms.h:675
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition algorithms.h:736
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition algorithms.h:702
+
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 algorithms.h:686
+
std::string name() const
Definition algorithms.h:762
+
Definition errors.h:20
+
Definition errors.h:17
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..0bc8dc644 --- /dev/null +++ b/annotated.html @@ -0,0 +1,172 @@ + + + + + + + +JWT-CPP: Class List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
 Nhelper
 Cevp_pkey_handleHandle class for EVP_PKEY structures
 Ntraits
 Cboost_json
 Cdanielaparker_jsoncons
 Cobject_type
 Ckazuho_picojson
 Cnlohmann_json
 Nverify_ops
 Cdate_after_claim
 Cdate_before_claim
 Cequals_claim
 Cinsensitive_string_claim
 Cis_subset_claim
 Cverify_contextThis is the base container which holds the token that need to be verified
 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 000000000..bb63436e8 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,70 @@ +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", null, [ + [ "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 ] + ] ], + [ "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", null ] + ] ], + [ "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", null ], + [ "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 000000000..9c4c9ea01 --- /dev/null +++ b/base_8h_source.html @@ -0,0 +1,356 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/base.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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::string& fill() {
+
42 static const std::string fill{"="};
+
43 return fill;
+
44 }
+
45 };
+
55 struct base64url {
+
56 static const std::array<char, 64>& data() {
+
57 static constexpr std::array<char, 64> data{
+
58 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
59 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
60 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
61 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}};
+
62 return data;
+
63 }
+
64 static const std::string& fill() {
+
65 static const std::string fill{"%3d"};
+
66 return fill;
+
67 }
+
68 };
+
69 namespace helper {
+ +
77 static const std::array<char, 64>& data() {
+
78 static constexpr std::array<char, 64> data{
+
79 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
80 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
81 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
82 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'}};
+
83 return data;
+
84 }
+
85 static const std::vector<std::string>& fill() {
+
86 static const std::vector<std::string> fill{"%3D", "%3d"};
+
87 return fill;
+
88 }
+
89 };
+
90 } // namespace helper
+
91
+
92 inline uint32_t index(const std::array<char, 64>& alphabet, char symbol) {
+
93 auto itr = std::find_if(alphabet.cbegin(), alphabet.cend(), [symbol](char c) { return c == symbol; });
+
94 if (itr == alphabet.cend()) { throw std::runtime_error("Invalid input: not within alphabet"); }
+
95
+
96 return std::distance(alphabet.cbegin(), itr);
+
97 }
+
98 } // namespace alphabet
+
99
+
103 namespace base {
+
104 namespace details {
+
105 struct padding {
+
106 size_t count = 0;
+
107 size_t length = 0;
+
108
+
109 padding() = default;
+
110 padding(size_t count, size_t length) : count(count), length(length) {}
+
111
+
112 padding operator+(const padding& p) { return padding(count + p.count, length + p.length); }
+
113
+
114 friend bool operator==(const padding& lhs, const padding& rhs) {
+
115 return lhs.count == rhs.count && lhs.length == rhs.length;
+
116 }
+
117 };
+
118
+
119 inline padding count_padding(const std::string& base, const std::vector<std::string>& fills) {
+
120 for (const auto& fill : fills) {
+
121 if (base.size() < fill.size()) continue;
+
122 // Does the end of the input exactly match the fill pattern?
+
123 if (base.substr(base.size() - fill.size()) == fill) {
+
124 return padding{1, fill.length()} +
+
125 count_padding(base.substr(0, base.size() - fill.size()), fills);
+
126 }
+
127 }
+
128
+
129 return {};
+
130 }
+
131
+
132 inline std::string encode(const std::string& bin, const std::array<char, 64>& alphabet,
+
133 const std::string& fill) {
+
134 size_t size = bin.size();
+
135 std::string res;
+
136
+
137 // clear incomplete bytes
+
138 size_t fast_size = size - size % 3;
+
139 for (size_t i = 0; i < fast_size;) {
+
140 uint32_t octet_a = static_cast<unsigned char>(bin[i++]);
+
141 uint32_t octet_b = static_cast<unsigned char>(bin[i++]);
+
142 uint32_t octet_c = static_cast<unsigned char>(bin[i++]);
+
143
+
144 uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
+
145
+
146 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
147 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
148 res += alphabet[(triple >> 1 * 6) & 0x3F];
+
149 res += alphabet[(triple >> 0 * 6) & 0x3F];
+
150 }
+
151
+
152 if (fast_size == size) return res;
+
153
+
154 size_t mod = size % 3;
+
155
+
156 uint32_t octet_a = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
157 uint32_t octet_b = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
158 uint32_t octet_c = fast_size < size ? static_cast<unsigned char>(bin[fast_size++]) : 0;
+
159
+
160 uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
+
161
+
162 switch (mod) {
+
163 case 1:
+
164 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
165 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
166 res += fill;
+
167 res += fill;
+
168 break;
+
169 case 2:
+
170 res += alphabet[(triple >> 3 * 6) & 0x3F];
+
171 res += alphabet[(triple >> 2 * 6) & 0x3F];
+
172 res += alphabet[(triple >> 1 * 6) & 0x3F];
+
173 res += fill;
+
174 break;
+
175 default: break;
+
176 }
+
177
+
178 return res;
+
179 }
+
180
+
181 inline std::string decode(const std::string& base, const std::array<char, 64>& alphabet,
+
182 const std::vector<std::string>& fill) {
+
183 const auto pad = count_padding(base, fill);
+
184 if (pad.count > 2) throw std::runtime_error("Invalid input: too much fill");
+
185
+
186 const size_t size = base.size() - pad.length;
+
187 if ((size + pad.count) % 4 != 0) throw std::runtime_error("Invalid input: incorrect total size");
+
188
+
189 size_t out_size = size / 4 * 3;
+
190 std::string res;
+
191 res.reserve(out_size);
+
192
+
193 auto get_sextet = [&](size_t offset) { return alphabet::index(alphabet, base[offset]); };
+
194
+
195 size_t fast_size = size - size % 4;
+
196 for (size_t i = 0; i < fast_size;) {
+
197 uint32_t sextet_a = get_sextet(i++);
+
198 uint32_t sextet_b = get_sextet(i++);
+
199 uint32_t sextet_c = get_sextet(i++);
+
200 uint32_t sextet_d = get_sextet(i++);
+
201
+
202 uint32_t triple =
+
203 (sextet_a << 3 * 6) + (sextet_b << 2 * 6) + (sextet_c << 1 * 6) + (sextet_d << 0 * 6);
+
204
+
205 res += static_cast<char>((triple >> 2 * 8) & 0xFFU);
+
206 res += static_cast<char>((triple >> 1 * 8) & 0xFFU);
+
207 res += static_cast<char>((triple >> 0 * 8) & 0xFFU);
+
208 }
+
209
+
210 if (pad.count == 0) return res;
+
211
+
212 uint32_t triple = (get_sextet(fast_size) << 3 * 6) + (get_sextet(fast_size + 1) << 2 * 6);
+
213
+
214 switch (pad.count) {
+
215 case 1:
+
216 triple |= (get_sextet(fast_size + 2) << 1 * 6);
+
217 res += static_cast<char>((triple >> 2 * 8) & 0xFFU);
+
218 res += static_cast<char>((triple >> 1 * 8) & 0xFFU);
+
219 break;
+
220 case 2: res += static_cast<char>((triple >> 2 * 8) & 0xFFU); break;
+
221 default: break;
+
222 }
+
223
+
224 return res;
+
225 }
+
226
+
227 inline std::string decode(const std::string& base, const std::array<char, 64>& alphabet,
+
228 const std::string& fill) {
+
229 return decode(base, alphabet, std::vector<std::string>{fill});
+
230 }
+
231
+
232 inline std::string pad(const std::string& base, const std::string& fill) {
+
233 std::string padding;
+
234 switch (base.size() % 4) {
+
235 case 1: padding += fill; JWT_FALLTHROUGH;
+
236 case 2: padding += fill; JWT_FALLTHROUGH;
+
237 case 3: padding += fill; JWT_FALLTHROUGH;
+
238 default: break;
+
239 }
+
240
+
241 return base + padding;
+
242 }
+
243
+
244 inline std::string trim(const std::string& base, const std::string& fill) {
+
245 auto pos = base.find(fill);
+
246 return base.substr(0, pos);
+
247 }
+
248 } // namespace details
+
249
+
260 template<typename T>
+
261 std::string encode(const std::string& bin) {
+
262 return details::encode(bin, T::data(), T::fill());
+
263 }
+
264 template<typename T>
+
265 std::string decode(const std::string& base) {
+
266 return details::decode(base, T::data(), T::fill());
+
267 }
+
268 template<typename T>
+
269 std::string pad(const std::string& base) {
+
270 return details::pad(base, T::fill());
+
271 }
+
272 template<typename T>
+
273 std::string trim(const std::string& base) {
+
274 return details::trim(base, T::fill());
+
275 }
+
276 } // namespace base
+
277} // namespace jwt
+
278
+
279#endif
+
std::string encode(const std::string &bin)
Generic base64 encoding.
Definition base.h:261
+
JSON Web Token.
Definition algorithms.h:50
+
valid list of character when working with Base64
Definition base.h:32
+
valid list of character when working with Base64URL
Definition base.h:55
+
A General purpose base64url alphabet respecting the URI Case Normalization
Definition base.h:76
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/boost-json_2defaults_8h_source.html b/boost-json_2defaults_8h_source.html new file mode 100644 index 000000000..c4b7772f4 --- /dev/null +++ b/boost-json_2defaults_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/defaults.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
+ +
31
+
32#ifndef JWT_DISABLE_BASE64
+
40 inline decoded_jwt<traits::boost_json> decode(const std::string& token) {
+ +
42 }
+
43#endif
+
44
+
56 template<typename Decode>
+
57 decoded_jwt<traits::boost_json> decode(const std::string& token, Decode decode) {
+ +
59 }
+
60
+
67 inline jwk<traits::boost_json> parse_jwk(const traits::boost_json::string_type& token) {
+
68 return jwk<traits::boost_json>(token);
+
69 }
+
70
+
77 inline jwks<traits::boost_json> parse_jwks(const traits::boost_json::string_type& token) {
+
78 return jwks<traits::boost_json>(token);
+
79 }
+
80
+ +
86} // namespace jwt
+
87
+
88#endif // JWT_CPP_BOOST_JSON_DEFAULTS_H
+
a class to store a generic JSON value as claim
Definition jwt.h:345
+
Definition jwt.h:885
+
Definition jwt.h:750
+
JSON Web Key.
Definition jwt.h:1558
+
JWK Set.
Definition jwt.h:1765
+
Definition jwt.h:1312
+
JSON Web Token.
Definition algorithms.h:50
+
builder< json_traits > create()
Definition jwt.h:1852
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:1888
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:1898
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Definition jwt.h:1865
+
Definition jwt.h:1834
+
This is the base container which holds the token that need to be verified.
Definition jwt.h:1116
+
+
+ + + + diff --git a/boost-json_2traits_8h_source.html b/boost-json_2traits_8h_source.html new file mode 100644 index 000000000..f4ee0137a --- /dev/null +++ b/boost-json_2traits_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/traits.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 {
+
11 namespace traits {
+
12 namespace json = boost::json;
+
13 struct boost_json {
+
14 using value_type = json::value;
+
15 using object_type = json::object;
+
16 using array_type = json::array;
+
17 using string_type = std::string;
+
18 using number_type = double;
+
19 using integer_type = std::int64_t;
+
20 using boolean_type = bool;
+
21
+
22 static jwt::json::type get_type(const value_type& val) {
+
23 using jwt::json::type;
+
24
+
25 if (val.kind() == json::kind::bool_) return type::boolean;
+
26 if (val.kind() == json::kind::int64) return type::integer;
+
27 if (val.kind() == json::kind::uint64) // boost internally tracks two types of integers
+
28 return type::integer;
+
29 if (val.kind() == json::kind::double_) return type::number;
+
30 if (val.kind() == json::kind::string) return type::string;
+
31 if (val.kind() == json::kind::array) return type::array;
+
32 if (val.kind() == json::kind::object) return type::object;
+
33
+
34 throw std::logic_error("invalid type");
+
35 }
+
36
+
37 static object_type as_object(const value_type& val) {
+
38 if (val.kind() != json::kind::object) throw std::bad_cast();
+
39 return val.get_object();
+
40 }
+
41
+
42 static array_type as_array(const value_type& val) {
+
43 if (val.kind() != json::kind::array) throw std::bad_cast();
+
44 return val.get_array();
+
45 }
+
46
+
47 static string_type as_string(const value_type& val) {
+
48 if (val.kind() != json::kind::string) throw std::bad_cast();
+
49 return string_type{val.get_string()};
+
50 }
+
51
+
52 static integer_type as_integer(const value_type& val) {
+
53 switch (val.kind()) {
+
54 case json::kind::int64: return val.get_int64();
+
55 case json::kind::uint64: return static_cast<int64_t>(val.get_uint64());
+
56 default: throw std::bad_cast();
+
57 }
+
58 }
+
59
+
60 static boolean_type as_boolean(const value_type& val) {
+
61 if (val.kind() != json::kind::bool_) throw std::bad_cast();
+
62 return val.get_bool();
+
63 }
+
64
+
65 static number_type as_number(const value_type& val) {
+
66 if (val.kind() != json::kind::double_) throw std::bad_cast();
+
67 return val.get_double();
+
68 }
+
69
+
70 static bool parse(value_type& val, string_type str) {
+
71 val = json::parse(str);
+
72 return true;
+
73 }
+
74
+
75 static std::string serialize(const value_type& val) { return json::serialize(val); }
+
76 };
+
77 } // namespace traits
+
78} // namespace jwt
+
79
+
80#endif // JWT_CPP_BOOSTJSON_TRAITS_H
+
type
categories for the various JSON types used in JWTs
Definition jwt.h:68
+
JSON Web Token.
Definition algorithms.h:50
+
Definition traits.h:13
+
+
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..4237d34c7 --- /dev/null +++ b/classes.html @@ -0,0 +1,156 @@ + + + + + + + +JWT-CPP: Class Index + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
B | C | D | E | H | I | J | K | N | O | P | R | S | T | V
+ +
+
+ + + + diff --git a/classjwt_1_1basic__claim-members.html b/classjwt_1_1basic__claim-members.html new file mode 100644 index 000000000..31b09eaf8 --- /dev/null +++ b/classjwt_1_1basic__claim-members.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..9ec2ff8dd --- /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.6.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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1basic__claim.js b/classjwt_1_1basic__claim.js new file mode 100644 index 000000000..ee6b60013 --- /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 000000000..4ceaa8342 --- /dev/null +++ b/classjwt_1_1builder-members.html @@ -0,0 +1,132 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::builder< json_traits > Member List
+
+
+ +

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

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

#include <jwt.h>

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

+Public Member Functions

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)
 
builderset_not_before (const date &d)
 
builderset_issued_at (const date &d)
 
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 json_traits>
+class jwt::builder< json_traits >

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

+

Member Function Documentation

+ +

◆ set_algorithm()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< json_traits >::set_expires_at (const dated)
+
+inline
+
+

Set expires at claim

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

◆ set_header_claim() [1/2]

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< json_traits >::set_issued_at (const dated)
+
+inline
+
+

Set issued at claim

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

◆ set_issuer()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< json_traits >::set_not_before (const dated)
+
+inline
+
+

Set not before claim

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

◆ set_payload_claim() [1/2]

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+ + + + + +
+ + + + + + + + +
builder & jwt::builder< 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 json_traits >
+
+template<typename Algo >
+ + + + + +
+ + + + + + + + +
json_traits::string_type jwt::builder< 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 json_traits >
+
+template<typename Algo , typename Encode >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
json_traits::string_type jwt::builder< 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 json_traits >
+
+template<typename Algo , typename Encode >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
json_traits::string_type jwt::builder< 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 json_traits >
+
+template<typename Algo >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
json_traits::string_type jwt::builder< 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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1builder.js b/classjwt_1_1builder.js new file mode 100644 index 000000000..89d90e532 --- /dev/null +++ b/classjwt_1_1builder.js @@ -0,0 +1,23 @@ +var classjwt_1_1builder = +[ + [ "set_algorithm", "classjwt_1_1builder.html#ad6a378577e46c3e12f3242c625f2f623", null ], + [ "set_audience", "classjwt_1_1builder.html#a20358aa8be0179eaa53055aaca8a7f21", null ], + [ "set_audience", "classjwt_1_1builder.html#a1e764196824144648b2b2c490bdc328d", null ], + [ "set_content_type", "classjwt_1_1builder.html#a66d603ae007cb796667b4abd095e06cb", null ], + [ "set_expires_at", "classjwt_1_1builder.html#ae3de63621c8f7b3da8415030225cd67e", null ], + [ "set_header_claim", "classjwt_1_1builder.html#a388749e54d6b89b9da6a75494fb0757e", null ], + [ "set_header_claim", "classjwt_1_1builder.html#ac8f57f1c8d27e6117c508a3619ed4561", null ], + [ "set_id", "classjwt_1_1builder.html#a95583374b3f692fa84833a0e08575665", null ], + [ "set_issued_at", "classjwt_1_1builder.html#a92bfe54290a13c640db23240536993c7", null ], + [ "set_issuer", "classjwt_1_1builder.html#ab6f6203620218fbdec21c5afda7d11fc", null ], + [ "set_key_id", "classjwt_1_1builder.html#ab5bc32a6f2cd89f65e558fd38dae21b0", null ], + [ "set_not_before", "classjwt_1_1builder.html#a82784887801a2fcf4b132b03444a4da7", null ], + [ "set_payload_claim", "classjwt_1_1builder.html#a42e050718f31a284e08142030ca91930", null ], + [ "set_payload_claim", "classjwt_1_1builder.html#a0d63ee3ba1a3bf7047239e8502e565ab", null ], + [ "set_subject", "classjwt_1_1builder.html#a4506fc0956549155546d4c80fa94ae45", null ], + [ "set_type", "classjwt_1_1builder.html#aaa284acea472b10e6a1ee142336a01aa", null ], + [ "sign", "classjwt_1_1builder.html#a18ede7eb3d5502f17f2b7c3cf31d2f1c", null ], + [ "sign", "classjwt_1_1builder.html#a1e594d5e35cbd6b799acb1a247618a40", null ], + [ "sign", "classjwt_1_1builder.html#aff43371359a2f8bc6cabd2c976050233", null ], + [ "sign", "classjwt_1_1builder.html#ad7d743a548c14c91c87450929cda8bb9", 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 000000000..7e5d414a9 --- /dev/null +++ b/classjwt_1_1decoded__jwt-members.html @@ -0,0 +1,158 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..e10317bb5 --- /dev/null +++ b/classjwt_1_1decoded__jwt.html @@ -0,0 +1,711 @@ + + + + + + + +JWT-CPP: jwt::decoded_jwt< json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 callabled, 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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1decoded__jwt.js b/classjwt_1_1decoded__jwt.js new file mode 100644 index 000000000..5b47cc6be --- /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 000000000..d2eb2f971 --- /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 000000000..3e20bd0bf --- /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 000000000..3983cb8a8 --- /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 000000000..b03eed5df --- /dev/null +++ b/classjwt_1_1header-members.html @@ -0,0 +1,123 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..d07dfddc7 --- /dev/null +++ b/classjwt_1_1header.html @@ -0,0 +1,480 @@ + + + + + + + +JWT-CPP: jwt::header< json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1header.js b/classjwt_1_1header.js new file mode 100644 index 000000000..ca3454bbe --- /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 000000000..ae7bb8d86 --- /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 000000000..9a3d663d2 --- /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 000000000..0568cd594 --- /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 000000000..fdcd1a9d1 --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle-members.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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)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 000000000..e8f207738 --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle.html @@ -0,0 +1,233 @@ + + + + + + + +JWT-CPP: jwt::helper::evp_pkey_handle Class Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 <algorithms.h>

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

+Public Member Functions

+constexpr evp_pkey_handle () noexcept=default
 Creates a null key pointer.
 
 evp_pkey_handle (EVP_PKEY *key) noexcept
 Creates a owning handle wrapper around an existing raw key.
 
 evp_pkey_handle (const evp_pkey_handle &other)
 Create a new handle incrementing the reference count.
 
evp_pkey_handle (evp_pkey_handle &&other) noexcept
 
+EVP_PKEY * get () const noexcept
 
+bool operator! () const noexcept
 
operator bool () const noexcept
 
+evp_pkey_handleoperator= (const evp_pkey_handle &other)
 
+evp_pkey_handleoperator= (evp_pkey_handle &&other) noexcept
 
+evp_pkey_handleoperator= (EVP_PKEY *key)
 
+

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() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
jwt::helper::evp_pkey_handle::evp_pkey_handle (EVP_PKEY * key)
+
+inlineexplicitnoexcept
+
+ +

Creates a owning handle wrapper around an existing raw key.

+
Parameters
+ + +
keyExisting key to reference count This does not increment the reference count
+
+
+ +
+
+ +

◆ evp_pkey_handle() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
jwt::helper::evp_pkey_handle::evp_pkey_handle (const evp_pkey_handleother)
+
+inline
+
+ +

Create a new handle incrementing the reference count.

+
Parameters
+ + +
otherkey pointer to copy and increase
+
+
+
Exceptions
+ + +
std::runtime_error
+
+
+ +
+
+
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 000000000..ca6f94bef --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle.js @@ -0,0 +1,6 @@ +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#a5170ade548395a037843f04a109ff9cb", null ], + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html#acb86af0e48ffe2b11113fb9efdec9958", 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 000000000..bb6c6d833 --- /dev/null +++ b/classjwt_1_1jwk-members.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 noexcept (defined in jwt::jwk< json_traits >)jwt::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 000000000..98dda1a0c --- /dev/null +++ b/classjwt_1_1jwk.html @@ -0,0 +1,949 @@ + + + + + + + +JWT-CPP: jwt::jwk< json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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

+ +

◆ 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 jwks claim

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 jwks 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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1jwk.js b/classjwt_1_1jwk.js new file mode 100644 index 000000000..dd703697f --- /dev/null +++ b/classjwt_1_1jwk.js @@ -0,0 +1,27 @@ +var classjwt_1_1jwk = +[ + [ "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 000000000..69b3fb91b --- /dev/null +++ b/classjwt_1_1jwks-members.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 >
jwk_t typedef (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >
jwks(const typename json_traits::string_type &str) (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >inline
jwt_vector_t typedef (defined in jwt::jwks< json_traits >)jwt::jwks< json_traits >
+
+ + + + diff --git a/classjwt_1_1jwks.html b/classjwt_1_1jwks.html new file mode 100644 index 000000000..84b2aa8c5 --- /dev/null +++ b/classjwt_1_1jwks.html @@ -0,0 +1,236 @@ + + + + + + + +JWT-CPP: jwt::jwks< json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 jwk_t = jwk< json_traits >
 
+using jwt_vector_t = std::vector< jwk_t >
 
+using iterator = typename jwt_vector_t::iterator
 
+using const_iterator = typename jwt_vector_t::const_iterator
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+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
 
jwk_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

+

Member Function Documentation

+ +

◆ get_jwk()

+ +
+
+
+template<typename json_traits >
+ + + + + +
+ + + + + + + + +
jwk_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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1jwks.js b/classjwt_1_1jwks.js new file mode 100644 index 000000000..33c4be4eb --- /dev/null +++ b/classjwt_1_1jwks.js @@ -0,0 +1,5 @@ +var classjwt_1_1jwks = +[ + [ "get_jwk", "classjwt_1_1jwks.html#ab76e769ff422c308ee17ead4ea8d8d95", 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 000000000..2cb850dda --- /dev/null +++ b/classjwt_1_1payload-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..ed5ff8c5f --- /dev/null +++ b/classjwt_1_1payload.html @@ -0,0 +1,681 @@ + + + + + + + +JWT-CPP: jwt::payload< json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1payload.js b/classjwt_1_1payload.js new file mode 100644 index 000000000..0c120c22c --- /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 000000000..b18d33739 --- /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 000000000..3489837ad --- /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 000000000..de8c75d24 --- /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_1verifier-members.html b/classjwt_1_1verifier-members.html new file mode 100644 index 000000000..cd2e61044 --- /dev/null +++ b/classjwt_1_1verifier-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..cf032d999 --- /dev/null +++ b/classjwt_1_1verifier.html @@ -0,0 +1,799 @@ + + + + + + + +JWT-CPP: jwt::verifier< Clock, json_traits > Class Template Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 = std::function< void(const verify_ops::verify_context< json_traits > &, std::error_code &ec)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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)
 
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 = std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>
+
+

Verification function

+

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.

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_taud)
+
+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).

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.

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 casesensitive.

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 casesensitive.

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 casesensitive.

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 casesensitive.

+
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:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1verifier.js b/classjwt_1_1verifier.js new file mode 100644 index 000000000..e87bcf57b --- /dev/null +++ b/classjwt_1_1verifier.js @@ -0,0 +1,20 @@ +var classjwt_1_1verifier = +[ + [ "verify_check_fn_t", "classjwt_1_1verifier.html#a1636f7274f25405fc389e829ca63da43", 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/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/danielaparker-jsoncons_2defaults_8h_source.html b/danielaparker-jsoncons_2defaults_8h_source.html new file mode 100644 index 000000000..8dca18472 --- /dev/null +++ b/danielaparker-jsoncons_2defaults_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons/defaults.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
+
30 inline builder<traits::danielaparker_jsoncons> create() { return builder<traits::danielaparker_jsoncons>(); }
+
31
+
32#ifndef JWT_DISABLE_BASE64
+
40 inline decoded_jwt<traits::danielaparker_jsoncons> decode(const std::string& token) {
+
41 return decoded_jwt<traits::danielaparker_jsoncons>(token);
+
42 }
+
43#endif
+
44
+
56 template<typename Decode>
+
57 decoded_jwt<traits::danielaparker_jsoncons> decode(const std::string& token, Decode decode) {
+ +
59 }
+
60
+
67 inline jwk<traits::danielaparker_jsoncons> parse_jwk(const traits::danielaparker_jsoncons::string_type& token) {
+
68 return jwk<traits::danielaparker_jsoncons>(token);
+
69 }
+
70
+
77 inline jwks<traits::danielaparker_jsoncons> parse_jwks(const traits::danielaparker_jsoncons::string_type& token) {
+
78 return jwks<traits::danielaparker_jsoncons>(token);
+
79 }
+
80
+
85 using verify_context = verify_ops::verify_context<traits::danielaparker_jsoncons>;
+
86} // namespace jwt
+
87
+
88#endif // JWT_CPP_DANIELAPARKER_JSONCONS_DEFAULTS_H
+
Definition jwt.h:750
+
JSON Web Token.
Definition algorithms.h:50
+
builder< json_traits > create()
Definition jwt.h:1852
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:1888
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:1898
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:85
+
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)
Definition jwt.h:1865
+
+
+ + + + diff --git a/danielaparker-jsoncons_2traits_8h_source.html b/danielaparker-jsoncons_2traits_8h_source.html new file mode 100644 index 000000000..9363aa94c --- /dev/null +++ b/danielaparker-jsoncons_2traits_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons/traits.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 {
+
11 namespace traits {
+ +
13 // Needs at least https://github.com/danielaparker/jsoncons/commit/28c56b90ec7337f98a5b8942574590111a5e5831
+
14 static_assert(jsoncons::version().minor >= 167, "A higher version of jsoncons is required!");
+
15
+
16 using json = jsoncons::json;
+
17 using value_type = json;
+
18 struct object_type : json::object {
+
19 // Add missing C++11 member types
+
20 // https://github.com/danielaparker/jsoncons/commit/1b1ceeb572f9a2db6d37cff47ac78a4f14e072e2#commitcomment-45391411
+
21 using value_type = key_value_type; // Enable optional jwt-cpp methods
+
22 using mapped_type = key_value_type::value_type;
+
23 using size_type = size_t; // for implementing count
+
24
+
25 object_type() = default;
+
26 object_type(const object_type&) = default;
+
27 explicit object_type(const json::object& o) : json::object(o) {}
+
28 object_type(object_type&&) = default;
+
29 explicit object_type(json::object&& o) : json::object(o) {}
+
30 ~object_type() = default;
+
31 object_type& operator=(const object_type& o) = default;
+
32 object_type& operator=(object_type&& o) noexcept = default;
+
33
+
34 // Add missing C++11 subscription operator
+
35 mapped_type& operator[](const key_type& key) {
+
36 // https://github.com/microsoft/STL/blob/2914b4301c59dc7ffc09d16ac6f7979fde2b7f2c/stl/inc/map#L325
+
37 return try_emplace(key).first->value();
+
38 }
+
39
+
40 // Add missing C++11 element access
+
41 const mapped_type& at(const key_type& key) const {
+
42 auto target = find(key);
+
43 if (target != end()) return target->value();
+
44
+
45 throw std::out_of_range("invalid key");
+
46 }
+
47
+
48 // Add missing C++11 lookup method
+
49 size_type count(const key_type& key) const {
+
50 struct compare {
+
51 bool operator()(const value_type& val, const key_type& key) const { return val.key() < key; }
+
52 bool operator()(const key_type& key, const value_type& val) const { return key < val.key(); }
+
53 };
+
54
+
55 // https://en.cppreference.com/w/cpp/algorithm/binary_search#Complexity
+
56 if (std::binary_search(this->begin(), this->end(), key, compare{})) return 1;
+
57 return 0;
+
58 }
+
59 };
+
60 using array_type = json::array;
+
61 using string_type = std::string; // current limitation of traits implementation
+
62 using number_type = double;
+
63 using integer_type = int64_t;
+
64 using boolean_type = bool;
+
65
+
66 static jwt::json::type get_type(const json& val) {
+
67 using jwt::json::type;
+
68
+
69 if (val.type() == jsoncons::json_type::bool_value) return type::boolean;
+
70 if (val.type() == jsoncons::json_type::int64_value) return type::integer;
+
71 if (val.type() == jsoncons::json_type::uint64_value) return type::integer;
+
72 if (val.type() == jsoncons::json_type::half_value) return type::number;
+
73 if (val.type() == jsoncons::json_type::double_value) return type::number;
+
74 if (val.type() == jsoncons::json_type::string_value) return type::string;
+
75 if (val.type() == jsoncons::json_type::array_value) return type::array;
+
76 if (val.type() == jsoncons::json_type::object_value) return type::object;
+
77
+
78 throw std::logic_error("invalid type");
+
79 }
+
80
+
81 static object_type as_object(const json& val) {
+
82 if (val.type() != jsoncons::json_type::object_value) throw std::bad_cast();
+
83 return object_type(val.object_value());
+
84 }
+
85
+
86 static array_type as_array(const json& val) {
+
87 if (val.type() != jsoncons::json_type::array_value) throw std::bad_cast();
+
88 return val.array_value();
+
89 }
+
90
+
91 static string_type as_string(const json& val) {
+
92 if (val.type() != jsoncons::json_type::string_value) throw std::bad_cast();
+
93 return val.as_string();
+
94 }
+
95
+
96 static number_type as_number(const json& val) {
+
97 if (get_type(val) != jwt::json::type::number) throw std::bad_cast();
+
98 return val.as_double();
+
99 }
+
100
+
101 static integer_type as_integer(const json& val) {
+
102 if (get_type(val) != jwt::json::type::integer) throw std::bad_cast();
+
103 return val.as<integer_type>();
+
104 }
+
105
+
106 static boolean_type as_boolean(const json& val) {
+
107 if (val.type() != jsoncons::json_type::bool_value) throw std::bad_cast();
+
108 return val.as_bool();
+
109 }
+
110
+
111 static bool parse(json& val, const std::string& str) {
+
112 val = json::parse(str);
+
113 return true;
+
114 }
+
115
+
116 static std::string serialize(const json& val) {
+
117 std::ostringstream os;
+
118 os << jsoncons::print(val);
+
119 return os.str();
+
120 }
+
121 };
+
122 } // namespace traits
+
123} // namespace jwt
+
type
categories for the various JSON types used in JWTs
Definition jwt.h:68
+
JSON Web Token.
Definition algorithms.h:50
+ + +
+
+ + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67.html b/dir_0c244ebd1071fc3a3e67bea2565ecb67.html new file mode 100644 index 000000000..89d49274f --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67.html @@ -0,0 +1,126 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
 
+
+
+ + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67.js b/dir_0c244ebd1071fc3a3e67bea2565ecb67.js new file mode 100644 index 000000000..63e8fe593 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67.js @@ -0,0 +1,7 @@ +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" ] +]; \ No newline at end of file diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map new file mode 100644 index 000000000..bc42805e8 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 new file mode 100644 index 000000000..b48e23eb3 --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 @@ -0,0 +1 @@ +e44e540b3701fbdecf38a8b8fb3d4ba2 \ No newline at end of file diff --git a/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg new file mode 100644 index 000000000..0c6f36c9b --- /dev/null +++ b/dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg @@ -0,0 +1,68 @@ + + + + + + +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 + + + + + diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html new file mode 100644 index 000000000..eb53a5241 --- /dev/null +++ b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/nlohmann-json Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..4089698ae --- /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 000000000..c543a11a6 --- /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 000000000..7c5a6c788 --- /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 000000000..c50b9a96d --- /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 000000000..102192f30 --- /dev/null +++ b/dir_2baeb9b2ab4545faf9e2316474ff25e0.html @@ -0,0 +1,109 @@ + + + + + + + +JWT-CPP: .github Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..4e572d118 --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..e8a29b526 --- /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 000000000..5834b3293 --- /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 000000000..3b50b82f7 --- /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 000000000..c5e7e5aeb --- /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 000000000..b58287cd7 --- /dev/null +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,109 @@ + + + + + + + +JWT-CPP: docs Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..ef0c1ec98 --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..95c1dfd1b --- /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 000000000..178173f12 --- /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 000000000..11a19c68a --- /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 000000000..c3896ded9 --- /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_c0a47b52146df2fb522cc2caf716c25e.html b/dir_c0a47b52146df2fb522cc2caf716c25e.html new file mode 100644 index 000000000..0931fedc2 --- /dev/null +++ b/dir_c0a47b52146df2fb522cc2caf716c25e.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..14dc854c4 --- /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 000000000..bfd2b1636 --- /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 000000000..17f86deb2 --- /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 000000000..dd2f714bc --- /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_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 000000000..0137b4592 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: include Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..1daab6e2d --- /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 000000000..98b797015 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.html @@ -0,0 +1,126 @@ + + + + + + + +JWT-CPP: include/jwt-cpp Directory Reference + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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

 algorithms.h
 
 base.h
 
 errors.h
 
 jwt.h
 
+
+
+ + + + diff --git a/dir_db0c9b95a30589e349974d93aa14253f.js b/dir_db0c9b95a30589e349974d93aa14253f.js new file mode 100644 index 000000000..56a6896a9 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.js @@ -0,0 +1,8 @@ +var dir_db0c9b95a30589e349974d93aa14253f = +[ + [ "traits", "dir_0c244ebd1071fc3a3e67bea2565ecb67.html", "dir_0c244ebd1071fc3a3e67bea2565ecb67" ], + [ "algorithms.h", "algorithms_8h_source.html", null ], + [ "base.h", "base_8h_source.html", null ], + [ "errors.h", "errors_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 000000000..4b6b9ed9c --- /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 000000000..577b2f023 --- /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 000000000..3c480ac8f --- /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 000000000..0b928a531 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /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 000000000..853f6d692 --- /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 000000000..08238977a --- /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 000000000..d0790cfac --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1667 @@ +/* The standard CSS for doxygen 1.9.7*/ + +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-weight: 400; + font-size: 14px; + 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; +} + +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: underline; +} + +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; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + color: black; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: black; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +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.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.formulaDsp { + +} + +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; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.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; + text-decoration: none; + 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.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +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.section dd { + margin-bottom: 6px; +} + + +#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 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..f579fbf3e --- /dev/null +++ b/dynsections.js @@ -0,0 +1,123 @@ +/* + @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 toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var 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; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +JWT-CPP: include/jwt-cpp/errors.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
errors.h
+
+
+
1#ifndef JWT_CPP_ERRORS_H
+
2#define JWT_CPP_ERRORS_H
+
3
+
4#include <system_error>
+
5
+
6namespace jwt {
+
10 namespace error {
+
11 struct signature_verification_exception : public std::system_error {
+
12 using system_error::system_error;
+
13 };
+
14 struct signature_generation_exception : public std::system_error {
+
15 using system_error::system_error;
+
16 };
+
17 struct rsa_exception : public std::system_error {
+
18 using system_error::system_error;
+
19 };
+
20 struct ecdsa_exception : public std::system_error {
+
21 using system_error::system_error;
+
22 };
+
23 struct token_verification_exception : public std::system_error {
+
24 using system_error::system_error;
+
25 };
+
29 enum class rsa_error {
+
30 ok = 0,
+
31 cert_load_failed = 10,
+
32 get_key_failed,
+
33 write_key_failed,
+
34 write_cert_failed,
+
35 convert_to_pem_failed,
+
36 load_key_bio_write,
+
37 load_key_bio_read,
+
38 create_mem_bio_failed,
+
39 no_key_provided
+
40 };
+
44 inline std::error_category& rsa_error_category() {
+
45 class rsa_error_cat : public std::error_category {
+
46 public:
+
47 const char* name() const noexcept override { return "rsa_error"; };
+
48 std::string message(int ev) const override {
+
49 switch (static_cast<rsa_error>(ev)) {
+
50 case rsa_error::ok: return "no error";
+
51 case rsa_error::cert_load_failed: return "error loading cert into memory";
+
52 case rsa_error::get_key_failed: return "error getting key from certificate";
+
53 case rsa_error::write_key_failed: return "error writing key data in PEM format";
+
54 case rsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
55 case rsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
56 case rsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
57 case rsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
58 case rsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
59 case rsa_error::no_key_provided: return "at least one of public or private key need to be present";
+
60 default: return "unknown RSA error";
+
61 }
+
62 }
+
63 };
+
64 static rsa_error_cat cat;
+
65 return cat;
+
66 }
+
70 inline std::error_code make_error_code(rsa_error e) { return {static_cast<int>(e), rsa_error_category()}; }
+
74 enum class ecdsa_error {
+
75 ok = 0,
+
76 load_key_bio_write = 10,
+
77 load_key_bio_read,
+
78 create_mem_bio_failed,
+
79 no_key_provided,
+
80 invalid_key_size,
+
81 invalid_key,
+
82 create_context_failed
+
83 };
+
87 inline std::error_category& ecdsa_error_category() {
+
88 class ecdsa_error_cat : public std::error_category {
+
89 public:
+
90 const char* name() const noexcept override { return "ecdsa_error"; };
+
91 std::string message(int ev) const override {
+
92 switch (static_cast<ecdsa_error>(ev)) {
+
93 case ecdsa_error::ok: return "no error";
+
94 case ecdsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
95 case ecdsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
96 case ecdsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
97 case ecdsa_error::no_key_provided:
+
98 return "at least one of public or private key need to be present";
+
99 case ecdsa_error::invalid_key_size: return "invalid key size";
+
100 case ecdsa_error::invalid_key: return "invalid key";
+
101 case ecdsa_error::create_context_failed: return "failed to create context";
+
102 default: return "unknown ECDSA error";
+
103 }
+
104 }
+
105 };
+
106 static ecdsa_error_cat cat;
+
107 return cat;
+
108 }
+
112 inline std::error_code make_error_code(ecdsa_error e) { return {static_cast<int>(e), ecdsa_error_category()}; }
+ +
117 ok = 0,
+
118 invalid_signature = 10,
+
119 create_context_failed,
+
120 verifyinit_failed,
+
121 verifyupdate_failed,
+
122 verifyfinal_failed,
+
123 get_key_failed,
+
124 set_rsa_pss_saltlen_failed,
+
125 signature_encoding_failed
+
126 };
+
130 inline std::error_category& signature_verification_error_category() {
+
131 class verification_error_cat : public std::error_category {
+
132 public:
+
133 const char* name() const noexcept override { return "signature_verification_error"; };
+
134 std::string message(int ev) const override {
+
135 switch (static_cast<signature_verification_error>(ev)) {
+
136 case signature_verification_error::ok: return "no error";
+
137 case signature_verification_error::invalid_signature: return "invalid signature";
+
138 case signature_verification_error::create_context_failed:
+
139 return "failed to verify signature: could not create context";
+
140 case signature_verification_error::verifyinit_failed:
+
141 return "failed to verify signature: VerifyInit failed";
+
142 case signature_verification_error::verifyupdate_failed:
+
143 return "failed to verify signature: VerifyUpdate failed";
+
144 case signature_verification_error::verifyfinal_failed:
+
145 return "failed to verify signature: VerifyFinal failed";
+
146 case signature_verification_error::get_key_failed:
+
147 return "failed to verify signature: Could not get key";
+
148 case signature_verification_error::set_rsa_pss_saltlen_failed:
+
149 return "failed to verify signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
150 case signature_verification_error::signature_encoding_failed:
+
151 return "failed to verify signature: i2d_ECDSA_SIG failed";
+
152 default: return "unknown signature verification error";
+
153 }
+
154 }
+
155 };
+
156 static verification_error_cat cat;
+
157 return cat;
+
158 }
+ +
163 return {static_cast<int>(e), signature_verification_error_category()};
+
164 }
+ +
169 ok = 0,
+
170 hmac_failed = 10,
+
171 create_context_failed,
+
172 signinit_failed,
+
173 signupdate_failed,
+
174 signfinal_failed,
+
175 ecdsa_do_sign_failed,
+
176 digestinit_failed,
+
177 digestupdate_failed,
+
178 digestfinal_failed,
+
179 rsa_padding_failed,
+
180 rsa_private_encrypt_failed,
+
181 get_key_failed,
+
182 set_rsa_pss_saltlen_failed,
+
183 signature_decoding_failed
+
184 };
+
188 inline std::error_category& signature_generation_error_category() {
+
189 class signature_generation_error_cat : public std::error_category {
+
190 public:
+
191 const char* name() const noexcept override { return "signature_generation_error"; };
+
192 std::string message(int ev) const override {
+
193 switch (static_cast<signature_generation_error>(ev)) {
+
194 case signature_generation_error::ok: return "no error";
+
195 case signature_generation_error::hmac_failed: return "hmac failed";
+
196 case signature_generation_error::create_context_failed:
+
197 return "failed to create signature: could not create context";
+
198 case signature_generation_error::signinit_failed:
+
199 return "failed to create signature: SignInit failed";
+
200 case signature_generation_error::signupdate_failed:
+
201 return "failed to create signature: SignUpdate failed";
+
202 case signature_generation_error::signfinal_failed:
+
203 return "failed to create signature: SignFinal failed";
+
204 case signature_generation_error::ecdsa_do_sign_failed: return "failed to generate ecdsa signature";
+
205 case signature_generation_error::digestinit_failed:
+
206 return "failed to create signature: DigestInit failed";
+
207 case signature_generation_error::digestupdate_failed:
+
208 return "failed to create signature: DigestUpdate failed";
+
209 case signature_generation_error::digestfinal_failed:
+
210 return "failed to create signature: DigestFinal failed";
+
211 case signature_generation_error::rsa_padding_failed:
+
212 return "failed to create signature: EVP_PKEY_CTX_set_rsa_padding failed";
+
213 case signature_generation_error::rsa_private_encrypt_failed:
+
214 return "failed to create signature: RSA_private_encrypt failed";
+
215 case signature_generation_error::get_key_failed:
+
216 return "failed to generate signature: Could not get key";
+
217 case signature_generation_error::set_rsa_pss_saltlen_failed:
+
218 return "failed to create signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
219 case signature_generation_error::signature_decoding_failed:
+
220 return "failed to create signature: d2i_ECDSA_SIG failed";
+
221 default: return "unknown signature generation error";
+
222 }
+
223 }
+
224 };
+
225 static signature_generation_error_cat cat = {};
+
226 return cat;
+
227 }
+
231 inline std::error_code make_error_code(signature_generation_error e) {
+
232 return {static_cast<int>(e), signature_generation_error_category()};
+
233 }
+ +
238 ok = 0,
+
239 wrong_algorithm = 10,
+
240 missing_claim,
+
241 claim_type_missmatch,
+
242 claim_value_missmatch,
+
243 token_expired,
+
244 audience_missmatch
+
245 };
+
249 inline std::error_category& token_verification_error_category() {
+
250 class token_verification_error_cat : public std::error_category {
+
251 public:
+
252 const char* name() const noexcept override { return "token_verification_error"; };
+
253 std::string message(int ev) const override {
+
254 switch (static_cast<token_verification_error>(ev)) {
+
255 case token_verification_error::ok: return "no error";
+
256 case token_verification_error::wrong_algorithm: return "wrong algorithm";
+
257 case token_verification_error::missing_claim: return "decoded JWT is missing required claim(s)";
+
258 case token_verification_error::claim_type_missmatch:
+
259 return "claim type does not match expected type";
+
260 case token_verification_error::claim_value_missmatch:
+
261 return "claim value does not match expected value";
+
262 case token_verification_error::token_expired: return "token expired";
+
263 case token_verification_error::audience_missmatch:
+
264 return "token doesn't contain the required audience";
+
265 default: return "unknown token verification error";
+
266 }
+
267 }
+
268 };
+
269 static token_verification_error_cat cat = {};
+
270 return cat;
+
271 }
+
275 inline std::error_code make_error_code(token_verification_error e) {
+
276 return {static_cast<int>(e), token_verification_error_category()};
+
277 }
+
281 inline void throw_if_error(std::error_code ec) {
+
282 if (ec) {
+
283 if (ec.category() == rsa_error_category()) throw rsa_exception(ec);
+
284 if (ec.category() == ecdsa_error_category()) throw ecdsa_exception(ec);
+
285 if (ec.category() == signature_verification_error_category())
+ + +
288 if (ec.category() == token_verification_error_category()) throw token_verification_exception(ec);
+
289 }
+
290 }
+
291 } // namespace error
+
292} // namespace jwt
+
293
+
294namespace std {
+
295 template<>
+
296 struct is_error_code_enum<jwt::error::rsa_error> : true_type {};
+
297 template<>
+
298 struct is_error_code_enum<jwt::error::ecdsa_error> : true_type {};
+
299 template<>
+
300 struct is_error_code_enum<jwt::error::signature_verification_error> : true_type {};
+
301 template<>
+
302 struct is_error_code_enum<jwt::error::signature_generation_error> : true_type {};
+
303 template<>
+
304 struct is_error_code_enum<jwt::error::token_verification_error> : true_type {};
+
305} // namespace std
+
306
+
307#endif
+
signature_verification_error
Errors related to verification of signatures.
Definition errors.h:116
+
std::error_category & token_verification_error_category()
Error category for token verification errors.
Definition errors.h:249
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition errors.h:281
+
std::error_category & ecdsa_error_category()
Error category for ECDSA errors.
Definition errors.h:87
+
std::error_category & signature_verification_error_category()
Error category for verification errors.
Definition errors.h:130
+
std::error_category & rsa_error_category()
Error category for RSA errors.
Definition errors.h:44
+
std::error_category & signature_generation_error_category()
Error category for signature generation errors.
Definition errors.h:188
+
ecdsa_error
Errors related to processing of RSA signatures.
Definition errors.h:74
+
rsa_error
Errors related to processing of RSA signatures.
Definition errors.h:29
+
signature_generation_error
Errors related to signature generation errors.
Definition errors.h:168
+
token_verification_error
Errors related to token verification errors.
Definition errors.h:237
+
std::error_code make_error_code(rsa_error e)
Converts JWT-CPP errors into generic STL error_codes.
Definition errors.h:70
+
JSON Web Token.
Definition algorithms.h:50
+
Definition errors.h:20
+
Definition errors.h:17
+ + + +
+
+ + + + diff --git a/files.html b/files.html new file mode 100644 index 000000000..5a6db675c --- /dev/null +++ b/files.html @@ -0,0 +1,131 @@ + + + + + + + +JWT-CPP: File List + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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]
+ + + + + + + + + + + + + + + + + + + +
  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
 algorithms.h
 base.h
 errors.h
 jwt.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 000000000..f1749d909 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "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 000000000..b04bed2e7 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 000000000..52f0166a2 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 000000000..f6896dd25 --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 000000000..2d1f06e7b --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..3aef18a3f --- /dev/null +++ b/functions.html @@ -0,0 +1,291 @@ + + + + + + + +JWT-CPP: Class Members + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..fd41cbea2 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,282 @@ + + + + + + + +JWT-CPP: Class Members - Functions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..ab2720e99 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,109 @@ + + + + + + + +JWT-CPP: Class Members - Typedefs + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..82b305c5f --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Class Members - Variables + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..e3d637660 --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,168 @@ + + + + + + + +JWT-CPP: Graph Legend + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 000000000..da515da9d --- /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 000000000..f90d1bfbb --- /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 000000000..d6cbf7bd3 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,171 @@ + + + + + + + +JWT-CPP: Class Hierarchy + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 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_json
 Cjwt::builder< json_traits >
 Cjwt::traits::danielaparker_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_picojson
 Cjwt::traits::nlohmann_json
 Cjwt::algorithm::none"none" algorithm
 Cboost::json::object
 Cjwt::traits::danielaparker_jsoncons::object_type
 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
 Cjwt::verifier< Clock, json_traits >
 Cjwt::verify_ops::verify_context< json_traits >This is the base container which holds the token that need to be verified
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..881317542 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,75 @@ +var hierarchy = +[ + [ "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< 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::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 ] + ] ], + [ "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 000000000..d49d53661 --- /dev/null +++ b/index.html @@ -0,0 +1,208 @@ + + + + + + + +JWT-CPP: JWT-CPP + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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

+

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

+

Signature algorithms

+

jwt-cpp supports all the algorithms defined by the specifications. The modular design allows to easily add additional algorithms without any problems. If you need any feel free to create a pull request or open an issue.

+

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
+

SSL Compatibility

+

In the name of flexibility and extensibility, jwt-cpp supports OpenSSL, LibreSSL, and wolfSSL. Read this page for more details. 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.

+
+

Overview

+

There is no hard dependency on a JSON library. Instead, there's a generic jwt::basic_claim which is templated around type traits, which described the semantic JSON types for a value, object, array, string, number, integer and boolean, as well as methods to translate between them.

+
jwt::basic_claim<my_favorite_json_library_traits> claim(json::object({{"json", true},{"example", 0}}));
+
a class to store a generic JSON value as claim
Definition jwt.h:345
+

This allows for complete freedom when picking which libraries you want to use. For more information, read this page).

+

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

+

picojson nlohmann jsoncons boostjson

+

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.

+

As for the base64 requirements of JWTs, this library provides base.h with all the required implementation; However base64 implementations are very common, with varying degrees of performance. When providing your own base64 implementation, you can define JWT_DISABLE_BASE64 to remove the jwt-cpp implementation.

+

Getting Started

+

Simple example of decoding a token and printing all claims (try it out):

+
#include <jwt-cpp/jwt.h>
+
#include <iostream>
+
+
int main() {
+
std::string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";
+
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)
Definition jwt.h:1865
+

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

+
auto verifier = jwt::verify()
+
.allow_algorithm(jwt::algorithm::hs256{ "secret" })
+
.with_issuer("auth0");
+
+
verifier.verify(decoded_token);
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
Definition algorithms.h:1259
+

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

+

Creating a token (and signing) is equally as easy.

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

‍To see more examples working with RSA public and private keys, visit our examples!

+
+

Providing your own JSON Traits

+

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

+

Contributing

+

If you have an improvement or found a bug feel free to open an issue or add the change and create a pull request. If you file a bug please make sure to include as much information about your environment (compiler version, etc.) as possible to help reproduce the issue. If you add a new feature please make sure to also include test cases for it.

+

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 000000000..1dffb65b5 --- /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/jwt_8h_source.html b/jwt_8h_source.html new file mode 100644 index 000000000..5ff41986f --- /dev/null +++ b/jwt_8h_source.html @@ -0,0 +1,1381 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/jwt.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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#include "algorithms.h"
+
12#include "errors.h"
+
13
+
14#ifndef JWT_DISABLE_BASE64
+
15#include "base.h"
+
16#endif
+
17
+
18#include <algorithm>
+
19#include <chrono>
+
20#include <climits>
+
21#include <cmath>
+
22#include <cstring>
+
23#include <functional>
+
24#include <iterator>
+
25#include <locale>
+
26#include <memory>
+
27#include <set>
+
28#include <type_traits>
+
29#include <unordered_map>
+
30#include <utility>
+
31#include <vector>
+
32
+
33#if __cplusplus > 201103L
+
34#include <codecvt>
+
35#endif
+
36
+
37#if __cplusplus >= 201402L
+
38#ifdef __has_include
+
39#if __has_include(<experimental/type_traits>)
+
40#include <experimental/type_traits>
+
41#endif
+
42#endif
+
43#endif
+
44
+
45#ifndef JWT_CLAIM_EXPLICIT
+
46#define JWT_CLAIM_EXPLICIT explicit
+
47#endif
+
48
+
56namespace jwt {
+
60 namespace json {
+
68 enum class type { boolean, integer, number, string, array, object };
+
69 } // namespace json
+
70
+
71 namespace details {
+
72#ifdef __cpp_lib_void_t
+
73 template<typename... Ts>
+
74 using void_t = std::void_t<Ts...>;
+
75#else
+
76 // https://en.cppreference.com/w/cpp/types/void_t
+
77 template<typename... Ts>
+
78 struct make_void {
+
79 using type = void;
+
80 };
+
81
+
82 template<typename... Ts>
+
83 using void_t = typename make_void<Ts...>::type;
+
84#endif
+
85
+
86#ifdef __cpp_lib_experimental_detect
+
87 template<template<typename...> class _Op, typename... _Args>
+
88 using is_detected = std::experimental::is_detected<_Op, _Args...>;
+
89#else
+
90 struct nonesuch {
+
91 nonesuch() = delete;
+
92 ~nonesuch() = delete;
+
93 nonesuch(nonesuch const&) = delete;
+
94 nonesuch(nonesuch const&&) = delete;
+
95 void operator=(nonesuch const&) = delete;
+
96 void operator=(nonesuch&&) = delete;
+
97 };
+
98
+
99 // https://en.cppreference.com/w/cpp/experimental/is_detected
+
100 template<class Default, class AlwaysVoid, template<class...> class Op, class... Args>
+
101 struct detector {
+
102 using value = std::false_type;
+
103 using type = Default;
+
104 };
+
105
+
106 template<class Default, template<class...> class Op, class... Args>
+
107 struct detector<Default, void_t<Op<Args...>>, Op, Args...> {
+
108 using value = std::true_type;
+
109 using type = Op<Args...>;
+
110 };
+
111
+
112 template<template<class...> class Op, class... Args>
+
113 using is_detected = typename detector<nonesuch, void, Op, Args...>::value;
+
114#endif
+
115
+
116 template<typename T, typename Signature>
+
117 using is_signature = typename std::is_same<T, Signature>;
+
118
+
119 template<typename traits_type, template<typename...> class Op, typename Signature>
+
120 struct is_function_signature_detected {
+
121 using type = Op<traits_type>;
+
122 static constexpr auto value = is_detected<Op, traits_type>::value && std::is_function<type>::value &&
+
123 is_signature<type, Signature>::value;
+
124 };
+
125
+
126 template<typename traits_type, typename value_type>
+
127 struct supports_get_type {
+
128 template<typename T>
+
129 using get_type_t = decltype(T::get_type);
+
130
+
131 static constexpr auto value =
+
132 is_function_signature_detected<traits_type, get_type_t, json::type(const value_type&)>::value;
+
133
+
134 // Internal assertions for better feedback
+
135 static_assert(value, "traits implementation must provide `jwt::json::type get_type(const value_type&)`");
+
136 };
+
137
+
138#define JWT_CPP_JSON_TYPE_TYPE(TYPE) json_##TYPE_type
+
139#define JWT_CPP_AS_TYPE_T(TYPE) as_##TYPE_t
+
140#define JWT_CPP_SUPPORTS_AS(TYPE) \
+
141 template<typename traits_type, typename value_type, typename JWT_CPP_JSON_TYPE_TYPE(TYPE)> \
+
142 struct supports_as_##TYPE { \
+
143 template<typename T> \
+
144 using JWT_CPP_AS_TYPE_T(TYPE) = decltype(T::as_##TYPE); \
+
145 \
+
146 static constexpr auto value = \
+
147 is_function_signature_detected<traits_type, JWT_CPP_AS_TYPE_T(TYPE), \
+
148 JWT_CPP_JSON_TYPE_TYPE(TYPE)(const value_type&)>::value; \
+
149 \
+
150 static_assert(value, "traits implementation must provide `" #TYPE "_type as_" #TYPE "(const value_type&)`"); \
+
151 }
+
152
+
153 JWT_CPP_SUPPORTS_AS(object);
+
154 JWT_CPP_SUPPORTS_AS(array);
+
155 JWT_CPP_SUPPORTS_AS(string);
+
156 JWT_CPP_SUPPORTS_AS(number);
+
157 JWT_CPP_SUPPORTS_AS(integer);
+
158 JWT_CPP_SUPPORTS_AS(boolean);
+
159
+
160#undef JWT_CPP_JSON_TYPE_TYPE
+
161#undef JWT_CPP_AS_TYPE_T
+
162#undef JWT_CPP_SUPPORTS_AS
+
163
+
164 template<typename traits>
+
165 struct is_valid_traits {
+
166 static constexpr auto value =
+
167 supports_get_type<traits, typename traits::value_type>::value &&
+
168 supports_as_object<traits, typename traits::value_type, typename traits::object_type>::value &&
+
169 supports_as_array<traits, typename traits::value_type, typename traits::array_type>::value &&
+
170 supports_as_string<traits, typename traits::value_type, typename traits::string_type>::value &&
+
171 supports_as_number<traits, typename traits::value_type, typename traits::number_type>::value &&
+
172 supports_as_integer<traits, typename traits::value_type, typename traits::integer_type>::value &&
+
173 supports_as_boolean<traits, typename traits::value_type, typename traits::boolean_type>::value;
+
174 };
+
175
+
176 template<typename value_type>
+
177 struct is_valid_json_value {
+
178 static constexpr auto value =
+
179 std::is_default_constructible<value_type>::value &&
+
180 std::is_constructible<value_type, const value_type&>::value && // a more generic is_copy_constructible
+
181 std::is_move_constructible<value_type>::value && std::is_assignable<value_type, value_type>::value &&
+
182 std::is_copy_assignable<value_type>::value && std::is_move_assignable<value_type>::value;
+
183 // TODO(prince-chrismc): Stream operators
+
184 };
+
185
+
186 // https://stackoverflow.com/a/53967057/8480874
+
187 template<typename T, typename = void>
+
188 struct is_iterable : std::false_type {};
+
189
+
190 template<typename T>
+
191 struct is_iterable<T, void_t<decltype(std::begin(std::declval<T>())), decltype(std::end(std::declval<T>())),
+
192#if __cplusplus > 201402L
+
193 decltype(std::cbegin(std::declval<T>())), decltype(std::cend(std::declval<T>()))
+
194#else
+
195 decltype(std::begin(std::declval<const T>())),
+
196 decltype(std::end(std::declval<const T>()))
+
197#endif
+
198 >> : std::true_type {
+
199 };
+
200
+
201#if __cplusplus > 201703L
+
202 template<typename T>
+
203 inline constexpr bool is_iterable_v = is_iterable<T>::value;
+
204#endif
+
205
+
206 template<typename object_type, typename string_type>
+
207 using is_count_signature = typename std::is_integral<decltype(std::declval<const object_type>().count(
+
208 std::declval<const string_type>()))>;
+
209
+
210 template<typename object_type, typename string_type, typename = void>
+
211 struct is_subcription_operator_signature : std::false_type {};
+
212
+
213 template<typename object_type, typename string_type>
+
214 struct is_subcription_operator_signature<
+
215 object_type, string_type,
+
216 void_t<decltype(std::declval<object_type>().operator[](std::declval<string_type>()))>> : std::true_type {
+
217 // TODO(prince-chrismc): I am not convinced this is meaningful anymore
+
218 static_assert(
+
219 value, "object_type must implement the subscription operator '[]' taking string_type as an argument");
+
220 };
+
221
+
222 template<typename object_type, typename value_type, typename string_type>
+
223 using is_at_const_signature =
+
224 typename std::is_same<decltype(std::declval<const object_type>().at(std::declval<const string_type>())),
+
225 const value_type&>;
+
226
+
227 template<typename value_type, typename string_type, typename object_type>
+
228 struct is_valid_json_object {
+
229 template<typename T>
+
230 using mapped_type_t = typename T::mapped_type;
+
231 template<typename T>
+
232 using key_type_t = typename T::key_type;
+
233 template<typename T>
+
234 using iterator_t = typename T::iterator;
+
235 template<typename T>
+
236 using const_iterator_t = typename T::const_iterator;
+
237
+
238 static constexpr auto value =
+
239 std::is_constructible<value_type, object_type>::value &&
+
240 is_detected<mapped_type_t, object_type>::value &&
+
241 std::is_same<typename object_type::mapped_type, value_type>::value &&
+
242 is_detected<key_type_t, object_type>::value &&
+
243 (std::is_same<typename object_type::key_type, string_type>::value ||
+
244 std::is_constructible<typename object_type::key_type, string_type>::value) &&
+
245 is_detected<iterator_t, object_type>::value && is_detected<const_iterator_t, object_type>::value &&
+
246 is_iterable<object_type>::value && is_count_signature<object_type, string_type>::value &&
+
247 is_subcription_operator_signature<object_type, string_type>::value &&
+
248 is_at_const_signature<object_type, value_type, string_type>::value;
+
249 };
+
250
+
251 template<typename value_type, typename array_type>
+
252 struct is_valid_json_array {
+
253 template<typename T>
+
254 using value_type_t = typename T::value_type;
+
255
+
256 static constexpr auto value = std::is_constructible<value_type, array_type>::value &&
+
257 is_iterable<array_type>::value &&
+
258 is_detected<value_type_t, array_type>::value &&
+
259 std::is_same<typename array_type::value_type, value_type>::value;
+
260 };
+
261
+
262 template<typename string_type, typename integer_type>
+
263 using is_substr_start_end_index_signature =
+
264 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>(),
+
265 std::declval<integer_type>())),
+
266 string_type>;
+
267
+
268 template<typename string_type, typename integer_type>
+
269 using is_substr_start_index_signature =
+
270 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>())),
+
271 string_type>;
+
272
+
273 template<typename string_type>
+
274 using is_std_operate_plus_signature =
+
275 typename std::is_same<decltype(std::operator+(std::declval<string_type>(), std::declval<string_type>())),
+
276 string_type>;
+
277
+
278 template<typename value_type, typename string_type, typename integer_type>
+
279 struct is_valid_json_string {
+
280 static constexpr auto substr = is_substr_start_end_index_signature<string_type, integer_type>::value &&
+
281 is_substr_start_index_signature<string_type, integer_type>::value;
+
282 static_assert(substr, "string_type must have a substr method taking only a start index and an overload "
+
283 "taking a start and end index, both must return a string_type");
+
284
+
285 static constexpr auto operator_plus = is_std_operate_plus_signature<string_type>::value;
+
286 static_assert(operator_plus,
+
287 "string_type must have a '+' operator implemented which returns the concatenated string");
+
288
+
289 static constexpr auto value =
+
290 std::is_constructible<value_type, string_type>::value && substr && operator_plus;
+
291 };
+
292
+
293 template<typename value_type, typename number_type>
+
294 struct is_valid_json_number {
+
295 static constexpr auto value =
+
296 std::is_floating_point<number_type>::value && std::is_constructible<value_type, number_type>::value;
+
297 };
+
298
+
299 template<typename value_type, typename integer_type>
+
300 struct is_valid_json_integer {
+
301 static constexpr auto value = std::is_signed<integer_type>::value &&
+
302 !std::is_floating_point<integer_type>::value &&
+
303 std::is_constructible<value_type, integer_type>::value;
+
304 };
+
305 template<typename value_type, typename boolean_type>
+
306 struct is_valid_json_boolean {
+
307 static constexpr auto value = std::is_convertible<boolean_type, bool>::value &&
+
308 std::is_constructible<value_type, boolean_type>::value;
+
309 };
+
310
+
311 template<typename value_type, typename object_type, typename array_type, typename string_type,
+
312 typename number_type, typename integer_type, typename boolean_type>
+
313 struct is_valid_json_types {
+
314 // Internal assertions for better feedback
+
315 static_assert(is_valid_json_value<value_type>::value,
+
316 "value_type must meet basic requirements, default constructor, copyable, moveable");
+
317 static_assert(is_valid_json_object<value_type, string_type, object_type>::value,
+
318 "object_type must be a string_type to value_type container");
+
319 static_assert(is_valid_json_array<value_type, array_type>::value,
+
320 "array_type must be a container of value_type");
+
321
+
322 static constexpr auto value = is_valid_json_value<value_type>::value &&
+
323 is_valid_json_object<value_type, string_type, object_type>::value &&
+
324 is_valid_json_array<value_type, array_type>::value &&
+
325 is_valid_json_string<value_type, string_type, integer_type>::value &&
+
326 is_valid_json_number<value_type, number_type>::value &&
+
327 is_valid_json_integer<value_type, integer_type>::value &&
+
328 is_valid_json_boolean<value_type, boolean_type>::value;
+
329 };
+
330 } // namespace details
+
331
+
335 using date = std::chrono::system_clock::time_point;
+
336
+
344 template<typename json_traits>
+ +
352 static_assert(std::is_same<typename json_traits::string_type, std::string>::value ||
+
353 std::is_convertible<typename json_traits::string_type, std::string>::value ||
+
354 std::is_constructible<typename json_traits::string_type, std::string>::value,
+
355 "string_type must be a std::string, convertible to a std::string, or construct a std::string.");
+
356
+
357 static_assert(
+
358 details::is_valid_json_types<typename json_traits::value_type, typename json_traits::object_type,
+
359 typename json_traits::array_type, typename json_traits::string_type,
+
360 typename json_traits::number_type, typename json_traits::integer_type,
+
361 typename json_traits::boolean_type>::value,
+
362 "must satisfy json container requirements");
+
363 static_assert(details::is_valid_traits<json_traits>::value, "traits must satisfy requirements");
+
364
+
365 typename json_traits::value_type val;
+
366
+
367 public:
+
371 using set_t = std::set<typename json_traits::string_type>;
+
372
+
373 basic_claim() = default;
+
374 basic_claim(const basic_claim&) = default;
+
375 basic_claim(basic_claim&&) = default;
+
376 basic_claim& operator=(const basic_claim&) = default;
+
377 basic_claim& operator=(basic_claim&&) = default;
+
378 ~basic_claim() = default;
+
379
+
380 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::string_type s) : val(std::move(s)) {}
+
381 JWT_CLAIM_EXPLICIT basic_claim(const date& d)
+
382 : val(typename json_traits::integer_type(std::chrono::system_clock::to_time_t(d))) {}
+
383 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::array_type a) : val(std::move(a)) {}
+
384 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::value_type v) : val(std::move(v)) {}
+
385 JWT_CLAIM_EXPLICIT basic_claim(const set_t& s) : val(typename json_traits::array_type(s.begin(), s.end())) {}
+
386 template<typename Iterator>
+
387 basic_claim(Iterator begin, Iterator end) : val(typename json_traits::array_type(begin, end)) {}
+
388
+
393 typename json_traits::value_type to_json() const { return val; }
+
394
+
399 std::istream& operator>>(std::istream& is) { return is >> val; }
+
400
+
405 std::ostream& operator<<(std::ostream& os) { return os << val; }
+
406
+
412 json::type get_type() const { return json_traits::get_type(val); }
+
413
+
419 typename json_traits::string_type as_string() const { return json_traits::as_string(val); }
+
420
+
429 date as_date() const {
+
430 using std::chrono::system_clock;
+
431 if (get_type() == json::type::number) return system_clock::from_time_t(std::round(as_number()));
+
432 return system_clock::from_time_t(as_integer());
+
433 }
+
434
+
440 typename json_traits::array_type as_array() const { return json_traits::as_array(val); }
+
441
+
447 set_t as_set() const {
+
448 set_t res;
+
449 for (const auto& e : json_traits::as_array(val)) {
+
450 res.insert(json_traits::as_string(e));
+
451 }
+
452 return res;
+
453 }
+
454
+
460 typename json_traits::integer_type as_integer() const { return json_traits::as_integer(val); }
+
461
+
467 typename json_traits::boolean_type as_boolean() const { return json_traits::as_boolean(val); }
+
468
+
474 typename json_traits::number_type as_number() const { return json_traits::as_number(val); }
+
475 };
+
476
+
477 namespace error {
+
481 struct invalid_json_exception : public std::runtime_error {
+
482 invalid_json_exception() : runtime_error("invalid json") {}
+
483 };
+
487 struct claim_not_present_exception : public std::out_of_range {
+
488 claim_not_present_exception() : out_of_range("claim not found") {}
+
489 };
+
490 } // namespace error
+
491
+
492 namespace details {
+
493 template<typename json_traits>
+
494 struct map_of_claims {
+
495 typename json_traits::object_type claims;
+
496 using basic_claim_t = basic_claim<json_traits>;
+
497 using iterator = typename json_traits::object_type::iterator;
+
498 using const_iterator = typename json_traits::object_type::const_iterator;
+
499
+
500 map_of_claims() = default;
+
501 map_of_claims(const map_of_claims&) = default;
+
502 map_of_claims(map_of_claims&&) = default;
+
503 map_of_claims& operator=(const map_of_claims&) = default;
+
504 map_of_claims& operator=(map_of_claims&&) = default;
+
505
+
506 map_of_claims(typename json_traits::object_type json) : claims(std::move(json)) {}
+
507
+
508 iterator begin() { return claims.begin(); }
+
509 iterator end() { return claims.end(); }
+
510 const_iterator cbegin() const { return claims.begin(); }
+
511 const_iterator cend() const { return claims.end(); }
+
512 const_iterator begin() const { return claims.begin(); }
+
513 const_iterator end() const { return claims.end(); }
+
514
+
523 static typename json_traits::object_type parse_claims(const typename json_traits::string_type& str) {
+
524 typename json_traits::value_type val;
+
525 if (!json_traits::parse(val, str)) throw error::invalid_json_exception();
+
526
+
527 return json_traits::as_object(val);
+
528 };
+
529
+
534 bool has_claim(const typename json_traits::string_type& name) const noexcept {
+
535 return claims.count(name) != 0;
+
536 }
+
537
+
545 basic_claim_t get_claim(const typename json_traits::string_type& name) const {
+
546 if (!has_claim(name)) throw error::claim_not_present_exception();
+
547 return basic_claim_t{claims.at(name)};
+
548 }
+
549 };
+
550 } // namespace details
+
551
+
556 template<typename json_traits>
+
557 class payload {
+
558 protected:
+
559 details::map_of_claims<json_traits> payload_claims;
+
560
+
561 public:
+ +
563
+
568 bool has_issuer() const noexcept { return has_payload_claim("iss"); }
+
573 bool has_subject() const noexcept { return has_payload_claim("sub"); }
+
578 bool has_audience() const noexcept { return has_payload_claim("aud"); }
+
583 bool has_expires_at() const noexcept { return has_payload_claim("exp"); }
+
588 bool has_not_before() const noexcept { return has_payload_claim("nbf"); }
+
593 bool has_issued_at() const noexcept { return has_payload_claim("iat"); }
+
598 bool has_id() const noexcept { return has_payload_claim("jti"); }
+
605 typename json_traits::string_type get_issuer() const { return get_payload_claim("iss").as_string(); }
+
612 typename json_traits::string_type get_subject() const { return get_payload_claim("sub").as_string(); }
+ +
620 auto aud = get_payload_claim("aud");
+
621 if (aud.get_type() == json::type::string) return {aud.as_string()};
+
622
+
623 return aud.as_set();
+
624 }
+
631 date get_expires_at() const { return get_payload_claim("exp").as_date(); }
+
638 date get_not_before() const { return get_payload_claim("nbf").as_date(); }
+
645 date get_issued_at() const { return get_payload_claim("iat").as_date(); }
+
652 typename json_traits::string_type get_id() const { return get_payload_claim("jti").as_string(); }
+
657 bool has_payload_claim(const typename json_traits::string_type& name) const noexcept {
+
658 return payload_claims.has_claim(name);
+
659 }
+
665 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
666 return payload_claims.get_claim(name);
+
667 }
+
668 };
+
669
+
674 template<typename json_traits>
+
675 class header {
+
676 protected:
+
677 details::map_of_claims<json_traits> header_claims;
+
678
+
679 public:
+ +
685 bool has_algorithm() const noexcept { return has_header_claim("alg"); }
+
690 bool has_type() const noexcept { return has_header_claim("typ"); }
+
695 bool has_content_type() const noexcept { return has_header_claim("cty"); }
+
700 bool has_key_id() const noexcept { return has_header_claim("kid"); }
+
707 typename json_traits::string_type get_algorithm() const { return get_header_claim("alg").as_string(); }
+
714 typename json_traits::string_type get_type() const { return get_header_claim("typ").as_string(); }
+
721 typename json_traits::string_type get_content_type() const { return get_header_claim("cty").as_string(); }
+
728 typename json_traits::string_type get_key_id() const { return get_header_claim("kid").as_string(); }
+
733 bool has_header_claim(const typename json_traits::string_type& name) const noexcept {
+
734 return header_claims.has_claim(name);
+
735 }
+
741 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
742 return header_claims.get_claim(name);
+
743 }
+
744 };
+
745
+
749 template<typename json_traits>
+
750 class decoded_jwt : public header<json_traits>, public payload<json_traits> {
+
751 protected:
+
753 typename json_traits::string_type token;
+
755 typename json_traits::string_type header;
+
757 typename json_traits::string_type header_base64;
+
759 typename json_traits::string_type payload;
+
761 typename json_traits::string_type payload_base64;
+
763 typename json_traits::string_type signature;
+
765 typename json_traits::string_type signature_base64;
+
766
+
767 public:
+ +
769#ifndef JWT_DISABLE_BASE64
+
779 JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type& token)
+
780 : decoded_jwt(token, [](const typename json_traits::string_type& str) {
+
781 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(str));
+
782 }) {}
+
783#endif
+
795 template<typename Decode>
+
796 decoded_jwt(const typename json_traits::string_type& token, Decode decode) : token(token) {
+
797 auto hdr_end = token.find('.');
+
798 if (hdr_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
799 auto payload_end = token.find('.', hdr_end + 1);
+
800 if (payload_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
801 header_base64 = token.substr(0, hdr_end);
+
802 payload_base64 = token.substr(hdr_end + 1, payload_end - hdr_end - 1);
+
803 signature_base64 = token.substr(payload_end + 1);
+
804
+ + + +
808
+
809 this->header_claims = details::map_of_claims<json_traits>::parse_claims(header);
+
810 this->payload_claims = details::map_of_claims<json_traits>::parse_claims(payload);
+
811 }
+
812
+
817 const typename json_traits::string_type& get_token() const noexcept { return token; }
+
822 const typename json_traits::string_type& get_header() const noexcept { return header; }
+
827 const typename json_traits::string_type& get_payload() const noexcept { return payload; }
+
832 const typename json_traits::string_type& get_signature() const noexcept { return signature; }
+
837 const typename json_traits::string_type& get_header_base64() const noexcept { return header_base64; }
+
842 const typename json_traits::string_type& get_payload_base64() const noexcept { return payload_base64; }
+
847 const typename json_traits::string_type& get_signature_base64() const noexcept { return signature_base64; }
+
852 typename json_traits::object_type get_payload_json() const { return this->payload_claims.claims; }
+
857 typename json_traits::object_type get_header_json() const { return this->header_claims.claims; }
+
865 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
866 return this->payload_claims.get_claim(name);
+
867 }
+
875 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
876 return this->header_claims.get_claim(name);
+
877 }
+
878 };
+
879
+
884 template<typename json_traits>
+
885 class builder {
+
886 typename json_traits::object_type header_claims;
+
887 typename json_traits::object_type payload_claims;
+
888
+
889 public:
+
890 builder() = default;
+
897 builder& set_header_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
898 header_claims[id] = std::move(c);
+
899 return *this;
+
900 }
+
901
+
908 builder& set_header_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
909 header_claims[id] = c.to_json();
+
910 return *this;
+
911 }
+
918 builder& set_payload_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
919 payload_claims[id] = std::move(c);
+
920 return *this;
+
921 }
+
928 builder& set_payload_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
929 payload_claims[id] = c.to_json();
+
930 return *this;
+
931 }
+
939 builder& set_algorithm(typename json_traits::string_type str) {
+
940 return set_header_claim("alg", typename json_traits::value_type(str));
+
941 }
+
947 builder& set_type(typename json_traits::string_type str) {
+
948 return set_header_claim("typ", typename json_traits::value_type(str));
+
949 }
+
955 builder& set_content_type(typename json_traits::string_type str) {
+
956 return set_header_claim("cty", typename json_traits::value_type(str));
+
957 }
+
964 builder& set_key_id(typename json_traits::string_type str) {
+
965 return set_header_claim("kid", typename json_traits::value_type(str));
+
966 }
+
972 builder& set_issuer(typename json_traits::string_type str) {
+
973 return set_payload_claim("iss", typename json_traits::value_type(str));
+
974 }
+
980 builder& set_subject(typename json_traits::string_type str) {
+
981 return set_payload_claim("sub", typename json_traits::value_type(str));
+
982 }
+
988 builder& set_audience(typename json_traits::array_type a) {
+
989 return set_payload_claim("aud", typename json_traits::value_type(a));
+
990 }
+
996 builder& set_audience(typename json_traits::string_type aud) {
+
997 return set_payload_claim("aud", typename json_traits::value_type(aud));
+
998 }
+ + + +
1022 builder& set_id(const typename json_traits::string_type& str) {
+
1023 return set_payload_claim("jti", typename json_traits::value_type(str));
+
1024 }
+
1025
+
1037 template<typename Algo, typename Encode>
+
1038 typename json_traits::string_type sign(const Algo& algo, Encode encode) const {
+
1039 std::error_code ec;
+
1040 auto res = sign(algo, encode, ec);
+ +
1042 return res;
+
1043 }
+
1044#ifndef JWT_DISABLE_BASE64
+
1053 template<typename Algo>
+
1054 typename json_traits::string_type sign(const Algo& algo) const {
+
1055 std::error_code ec;
+
1056 auto res = sign(algo, ec);
+ +
1058 return res;
+
1059 }
+
1060#endif
+
1061
+
1074 template<typename Algo, typename Encode>
+
1075 typename json_traits::string_type sign(const Algo& algo, Encode encode, std::error_code& ec) const {
+
1076 // make a copy such that a builder can be re-used
+
1077 typename json_traits::object_type obj_header = header_claims;
+
1078 if (header_claims.count("alg") == 0) obj_header["alg"] = typename json_traits::value_type(algo.name());
+
1079
+
1080 const auto header = encode(json_traits::serialize(typename json_traits::value_type(obj_header)));
+
1081 const auto payload = encode(json_traits::serialize(typename json_traits::value_type(payload_claims)));
+
1082 const auto token = header + "." + payload;
+
1083
+
1084 auto signature = algo.sign(token, ec);
+
1085 if (ec) return {};
+
1086
+
1087 return token + "." + encode(signature);
+
1088 }
+
1089#ifndef JWT_DISABLE_BASE64
+
1099 template<typename Algo>
+
1100 typename json_traits::string_type sign(const Algo& algo, std::error_code& ec) const {
+
1101 return sign(
+
1102 algo,
+
1103 [](const typename json_traits::string_type& data) {
+
1104 return base::trim<alphabet::base64url>(base::encode<alphabet::base64url>(data));
+
1105 },
+
1106 ec);
+
1107 }
+
1108#endif
+
1109 };
+
1110
+
1111 namespace verify_ops {
+
1115 template<typename json_traits>
+ +
1117 verify_context(date ctime, const decoded_jwt<json_traits>& j, size_t l)
+
1118 : current_time(ctime), jwt(j), default_leeway(l) {}
+
1119 // Current time, retrieved from the verifiers clock and cached for performance and consistency
+
1120 date current_time;
+
1121 // The jwt passed to the verifier
+ +
1123 // The configured default leeway for this verification
+
1124 size_t default_leeway{0};
+
1125
+
1126 // The claim key to apply this comparison on
+
1127 typename json_traits::string_type claim_key{};
+
1128
+
1129 // Helper method to get a claim from the jwt in this context
+
1130 basic_claim<json_traits> get_claim(bool in_header, std::error_code& ec) const {
+
1131 if (in_header) {
+
1132 if (!jwt.has_header_claim(claim_key)) {
+
1133 ec = error::token_verification_error::missing_claim;
+
1134 return {};
+
1135 }
+
1136 return jwt.get_header_claim(claim_key);
+
1137 } else {
+
1138 if (!jwt.has_payload_claim(claim_key)) {
+
1139 ec = error::token_verification_error::missing_claim;
+
1140 return {};
+
1141 }
+
1142 return jwt.get_payload_claim(claim_key);
+
1143 }
+
1144 }
+
1145 basic_claim<json_traits> get_claim(bool in_header, json::type t, std::error_code& ec) const {
+
1146 auto c = get_claim(in_header, ec);
+
1147 if (ec) return {};
+
1148 if (c.get_type() != t) {
+
1149 ec = error::token_verification_error::claim_type_missmatch;
+
1150 return {};
+
1151 }
+
1152 return c;
+
1153 }
+
1154 basic_claim<json_traits> get_claim(std::error_code& ec) const { return get_claim(false, ec); }
+
1155 basic_claim<json_traits> get_claim(json::type t, std::error_code& ec) const {
+
1156 return get_claim(false, t, ec);
+
1157 }
+
1158 };
+
1159
+
1163 template<typename json_traits, bool in_header = false>
+ +
1165 const basic_claim<json_traits> expected;
+
1166 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
1167 auto jc = ctx.get_claim(in_header, expected.get_type(), ec);
+
1168 if (ec) return;
+
1169 const bool matches = [&]() {
+
1170 switch (expected.get_type()) {
+
1171 case json::type::boolean: return expected.as_boolean() == jc.as_boolean();
+
1172 case json::type::integer: return expected.as_integer() == jc.as_integer();
+
1173 case json::type::number: return expected.as_number() == jc.as_number();
+
1174 case json::type::string: return expected.as_string() == jc.as_string();
+
1175 case json::type::array:
+
1176 case json::type::object:
+
1177 return json_traits::serialize(expected.to_json()) == json_traits::serialize(jc.to_json());
+
1178 default: throw std::logic_error("internal error, should be unreachable");
+
1179 }
+
1180 }();
+
1181 if (!matches) {
+
1182 ec = error::token_verification_error::claim_value_missmatch;
+
1183 return;
+
1184 }
+
1185 }
+
1186 };
+
1187
+
1192 template<typename json_traits, bool in_header = false>
+ +
1194 const size_t leeway;
+
1195 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
1196 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
1197 if (ec) return;
+
1198 auto c = jc.as_date();
+
1199 if (ctx.current_time > c + std::chrono::seconds(leeway)) {
+
1200 ec = error::token_verification_error::token_expired;
+
1201 }
+
1202 }
+
1203 };
+
1204
+
1209 template<typename json_traits, bool in_header = false>
+ +
1211 const size_t leeway;
+
1212 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
1213 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
1214 if (ec) return;
+
1215 auto c = jc.as_date();
+
1216 if (ctx.current_time < c - std::chrono::seconds(leeway)) {
+
1217 ec = error::token_verification_error::token_expired;
+
1218 }
+
1219 }
+
1220 };
+
1221
+
1227 template<typename json_traits, bool in_header = false>
+ +
1229 const typename basic_claim<json_traits>::set_t expected;
+
1230 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
1231 auto c = ctx.get_claim(in_header, ec);
+
1232 if (ec) return;
+
1233 if (c.get_type() == json::type::string) {
+
1234 if (expected.size() != 1 || *expected.begin() != c.as_string()) {
+
1235 ec = error::token_verification_error::audience_missmatch;
+
1236 return;
+
1237 }
+
1238 } else if (c.get_type() == json::type::array) {
+
1239 auto jc = c.as_set();
+
1240 for (auto& e : expected) {
+
1241 if (jc.find(e) == jc.end()) {
+
1242 ec = error::token_verification_error::audience_missmatch;
+
1243 return;
+
1244 }
+
1245 }
+
1246 } else {
+
1247 ec = error::token_verification_error::claim_type_missmatch;
+
1248 return;
+
1249 }
+
1250 }
+
1251 };
+
1252
+
1256 template<typename json_traits, bool in_header = false>
+ +
1258 const typename json_traits::string_type expected;
+
1259 std::locale locale;
+
1260 insensitive_string_claim(const typename json_traits::string_type& e, std::locale loc)
+
1261 : expected(to_lower_unicode(e, loc)), locale(loc) {}
+
1262
+
1263 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
1264 const auto c = ctx.get_claim(in_header, json::type::string, ec);
+
1265 if (ec) return;
+
1266 if (to_lower_unicode(c.as_string(), locale) != expected) {
+
1267 ec = error::token_verification_error::claim_value_missmatch;
+
1268 }
+
1269 }
+
1270
+
1271 static std::string to_lower_unicode(const std::string& str, const std::locale& loc) {
+
1272 std::mbstate_t state = std::mbstate_t();
+
1273 const char* in_next = str.data();
+
1274 const char* in_end = str.data() + str.size();
+
1275 std::wstring wide;
+
1276 wide.reserve(str.size());
+
1277
+
1278 while (in_next != in_end) {
+
1279 wchar_t wc;
+
1280 std::size_t result = std::mbrtowc(&wc, in_next, in_end - in_next, &state);
+
1281 if (result == static_cast<std::size_t>(-1)) {
+
1282 throw std::runtime_error("encoding error: " + std::string(std::strerror(errno)));
+
1283 } else if (result == static_cast<std::size_t>(-2)) {
+
1284 throw std::runtime_error("conversion error: next bytes constitute an incomplete, but so far "
+
1285 "valid, multibyte character.");
+
1286 }
+
1287 in_next += result;
+
1288 wide.push_back(wc);
+
1289 }
+
1290
+
1291 auto& f = std::use_facet<std::ctype<wchar_t>>(loc);
+
1292 f.tolower(&wide[0], &wide[0] + wide.size());
+
1293
+
1294 std::string out;
+
1295 out.reserve(wide.size());
+
1296 for (wchar_t wc : wide) {
+
1297 char mb[MB_LEN_MAX];
+
1298 std::size_t n = std::wcrtomb(mb, wc, &state);
+
1299 if (n != static_cast<std::size_t>(-1)) out.append(mb, n);
+
1300 }
+
1301
+
1302 return out;
+
1303 }
+
1304 };
+
1305 } // namespace verify_ops
+
1306
+
1311 template<typename Clock, typename json_traits>
+
1312 class verifier {
+
1313 public:
+ + +
1325 std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>;
+
1326
+
1327 private:
+
1328 struct algo_base {
+
1329 virtual ~algo_base() = default;
+
1330 virtual void verify(const std::string& data, const std::string& sig, std::error_code& ec) = 0;
+
1331 };
+
1332 template<typename T>
+
1333 struct algo : public algo_base {
+
1334 T alg;
+
1335 explicit algo(T a) : alg(a) {}
+
1336 void verify(const std::string& data, const std::string& sig, std::error_code& ec) override {
+
1337 alg.verify(data, sig, ec);
+
1338 }
+
1339 };
+
1341 std::unordered_map<typename json_traits::string_type, verify_check_fn_t> claims;
+
1343 size_t default_leeway = 0;
+
1345 Clock clock;
+
1347 std::unordered_map<std::string, std::shared_ptr<algo_base>> algs;
+
1348
+
1349 public:
+
1354 explicit verifier(Clock c) : clock(c) {
+
1355 claims["exp"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
1356 if (!ctx.jwt.has_expires_at()) return;
+
1357 auto exp = ctx.jwt.get_expires_at();
+
1358 if (ctx.current_time > exp + std::chrono::seconds(ctx.default_leeway)) {
+
1359 ec = error::token_verification_error::token_expired;
+
1360 }
+
1361 };
+
1362 claims["iat"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
1363 if (!ctx.jwt.has_issued_at()) return;
+
1364 auto iat = ctx.jwt.get_issued_at();
+
1365 if (ctx.current_time < iat - std::chrono::seconds(ctx.default_leeway)) {
+
1366 ec = error::token_verification_error::token_expired;
+
1367 }
+
1368 };
+
1369 claims["nbf"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
1370 if (!ctx.jwt.has_not_before()) return;
+
1371 auto nbf = ctx.jwt.get_not_before();
+
1372 if (ctx.current_time < nbf - std::chrono::seconds(ctx.default_leeway)) {
+
1373 ec = error::token_verification_error::token_expired;
+
1374 }
+
1375 };
+
1376 }
+
1377
+ +
1384 default_leeway = leeway;
+
1385 return *this;
+
1386 }
+ + +
1395 return *this;
+
1396 }
+ + +
1405 return *this;
+
1406 }
+ + +
1415 return *this;
+
1416 }
+
1417
+
1429 verifier& with_type(const typename json_traits::string_type& type, std::locale locale = std::locale{}) {
+
1430 return with_claim("typ", verify_ops::insensitive_string_claim<json_traits, true>{type, std::move(locale)});
+
1431 }
+
1432
+
1439 verifier& with_issuer(const typename json_traits::string_type& iss) {
+
1440 return with_claim("iss", basic_claim_t(iss));
+
1441 }
+
1442
+
1449 verifier& with_subject(const typename json_traits::string_type& sub) {
+
1450 return with_claim("sub", basic_claim_t(sub));
+
1451 }
+ +
1459 claims["aud"] = verify_ops::is_subset_claim<json_traits>{aud};
+
1460 return *this;
+
1461 }
+
1468 verifier& with_audience(const typename json_traits::string_type& aud) {
+
1469 typename basic_claim_t::set_t s;
+
1470 s.insert(aud);
+
1471 return with_audience(s);
+
1472 }
+
1479 verifier& with_id(const typename json_traits::string_type& id) { return with_claim("jti", basic_claim_t(id)); }
+
1480
+
1487 verifier& with_claim(const typename json_traits::string_type& name, verify_check_fn_t fn) {
+
1488 claims[name] = fn;
+
1489 return *this;
+
1490 }
+
1491
+
1498 verifier& with_claim(const typename json_traits::string_type& name, basic_claim_t c) {
+ +
1500 }
+
1501
+
1507 template<typename Algorithm>
+
1508 verifier& allow_algorithm(Algorithm alg) {
+
1509 algs[alg.name()] = std::make_shared<algo<Algorithm>>(alg);
+
1510 return *this;
+
1511 }
+
1512
+ +
1519 std::error_code ec;
+
1520 verify(jwt, ec);
+ +
1522 }
+
1528 void verify(const decoded_jwt<json_traits>& jwt, std::error_code& ec) const {
+
1529 ec.clear();
+
1530 const typename json_traits::string_type data = jwt.get_header_base64() + "." + jwt.get_payload_base64();
+
1531 const typename json_traits::string_type sig = jwt.get_signature();
+
1532 const std::string algo = jwt.get_algorithm();
+
1533 if (algs.count(algo) == 0) {
+
1534 ec = error::token_verification_error::wrong_algorithm;
+
1535 return;
+
1536 }
+
1537 algs.at(algo)->verify(data, sig, ec);
+
1538 if (ec) return;
+
1539
+
1540 verify_ops::verify_context<json_traits> ctx{clock.now(), jwt, default_leeway};
+
1541 for (auto& c : claims) {
+
1542 ctx.claim_key = c.first;
+
1543 c.second(ctx, ec);
+
1544 if (ec) return;
+
1545 }
+
1546 }
+
1547 };
+
1548
+
1557 template<typename json_traits>
+
1558 class jwk {
+ +
1560 const details::map_of_claims<json_traits> jwk_claims;
+
1561
+
1562 public:
+
1563 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::string_type& str)
+
1564 : jwk_claims(details::map_of_claims<json_traits>::parse_claims(str)) {}
+
1565
+
1566 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::value_type& json)
+
1567 : jwk_claims(json_traits::as_object(json)) {}
+
1568
+
1577 typename json_traits::string_type get_key_type() const { return get_jwk_claim("kty").as_string(); }
+
1578
+
1585 typename json_traits::string_type get_use() const { return get_jwk_claim("use").as_string(); }
+
1586
+
1593 typename basic_claim_t::set_t get_key_operations() const { return get_jwk_claim("key_ops").as_set(); }
+
1594
+
1601 typename json_traits::string_type get_algorithm() const { return get_jwk_claim("alg").as_string(); }
+
1602
+
1609 typename json_traits::string_type get_key_id() const { return get_jwk_claim("kid").as_string(); }
+
1610
+
1621 typename json_traits::string_type get_curve() const { return get_jwk_claim("crv").as_string(); }
+
1622
+
1629 typename json_traits::array_type get_x5c() const { return get_jwk_claim("x5c").as_array(); };
+
1630
+
1637 typename json_traits::string_type get_x5u() const { return get_jwk_claim("x5u").as_string(); };
+
1638
+
1645 typename json_traits::string_type get_x5t() const { return get_jwk_claim("x5t").as_string(); };
+
1646
+
1653 typename json_traits::string_type get_x5t_sha256() const { return get_jwk_claim("x5t#S256").as_string(); };
+
1654
+
1661 typename json_traits::string_type get_x5c_key_value() const {
+
1662 auto x5c_array = get_jwk_claim("x5c").as_array();
+
1663 if (x5c_array.size() == 0) throw error::claim_not_present_exception();
+
1664
+
1665 return json_traits::as_string(x5c_array.front());
+
1666 };
+
1667
+
1672 bool has_key_type() const noexcept { return has_jwk_claim("kty"); }
+
1673
+
1678 bool has_use() const noexcept { return has_jwk_claim("use"); }
+
1679
+
1684 bool has_key_operations() const noexcept { return has_jwk_claim("key_ops"); }
+
1685
+
1690 bool has_algorithm() const noexcept { return has_jwk_claim("alg"); }
+
1691
+
1696 bool has_curve() const noexcept { return has_jwk_claim("crv"); }
+
1697
+
1702 bool has_key_id() const noexcept { return has_jwk_claim("kid"); }
+
1703
+
1708 bool has_x5u() const noexcept { return has_jwk_claim("x5u"); }
+
1709
+
1714 bool has_x5c() const noexcept { return has_jwk_claim("x5c"); }
+
1715
+
1720 bool has_x5t() const noexcept { return has_jwk_claim("x5t"); }
+
1721
+
1726 bool has_x5t_sha256() const noexcept { return has_jwk_claim("x5t#S256"); }
+
1727
+
1732 bool has_jwk_claim(const typename json_traits::string_type& name) const noexcept {
+
1733 return jwk_claims.has_claim(name);
+
1734 }
+
1735
+
1741 basic_claim_t get_jwk_claim(const typename json_traits::string_type& name) const {
+
1742 return jwk_claims.get_claim(name);
+
1743 }
+
1744
+
1745 bool empty() const noexcept { return jwk_claims.empty(); }
+
1746
+
1751 typename json_traits::object_type get_claims() const { return this->jwk_claims.claims; }
+
1752 };
+
1753
+
1764 template<typename json_traits>
+
1765 class jwks {
+
1766 public:
+
1767 using jwk_t = jwk<json_traits>;
+
1768 using jwt_vector_t = std::vector<jwk_t>;
+
1769 using iterator = typename jwt_vector_t::iterator;
+
1770 using const_iterator = typename jwt_vector_t::const_iterator;
+
1771
+
1772 JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type& str) {
+
1773 typename json_traits::value_type parsed_val;
+
1774 if (!json_traits::parse(parsed_val, str)) throw error::invalid_json_exception();
+
1775
+
1776 const details::map_of_claims<json_traits> jwks_json = json_traits::as_object(parsed_val);
+
1777 if (!jwks_json.has_claim("keys")) throw error::invalid_json_exception();
+
1778
+
1779 auto jwk_list = jwks_json.get_claim("keys").as_array();
+
1780 std::transform(jwk_list.begin(), jwk_list.end(), std::back_inserter(jwk_claims),
+
1781 [](const typename json_traits::value_type& val) { return jwk_t{val}; });
+
1782 }
+
1783
+
1784 iterator begin() { return jwk_claims.begin(); }
+
1785 iterator end() { return jwk_claims.end(); }
+
1786 const_iterator cbegin() const { return jwk_claims.begin(); }
+
1787 const_iterator cend() const { return jwk_claims.end(); }
+
1788 const_iterator begin() const { return jwk_claims.begin(); }
+
1789 const_iterator end() const { return jwk_claims.end(); }
+
1790
+
1795 bool has_jwk(const typename json_traits::string_type& key_id) const noexcept {
+
1796 return find_by_kid(key_id) != end();
+
1797 }
+
1798
+
1804 jwk_t get_jwk(const typename json_traits::string_type& key_id) const {
+
1805 const auto maybe = find_by_kid(key_id);
+
1806 if (maybe == end()) throw error::claim_not_present_exception();
+
1807 return *maybe;
+
1808 }
+
1809
+
1810 private:
+
1811 jwt_vector_t jwk_claims;
+
1812
+
1813 const_iterator find_by_kid(const typename json_traits::string_type& key_id) const noexcept {
+
1814 return std::find_if(cbegin(), cend(), [key_id](const jwk_t& jwk) {
+
1815 if (!jwk.has_key_id()) { return false; }
+
1816 return jwk.get_key_id() == key_id;
+
1817 });
+
1818 }
+
1819 };
+
1820
+
1826 template<typename Clock, typename json_traits>
+ + +
1829 }
+
1830
+ +
1835 date now() const { return date::clock::now(); }
+
1836 };
+
1837
+
1843 template<typename json_traits>
+ +
1845 return verifier<default_clock, json_traits>(c);
+
1846 }
+
1847
+
1851 template<typename json_traits>
+ +
1853 return builder<json_traits>();
+
1854 }
+
1855
+
1864 template<typename json_traits, typename Decode>
+
1865 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token, Decode decode) {
+
1866 return decoded_jwt<json_traits>(token, decode);
+
1867 }
+
1868
+
1877 template<typename json_traits>
+
1878 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token) {
+
1879 return decoded_jwt<json_traits>(token);
+
1880 }
+
1887 template<typename json_traits>
+
1888 jwk<json_traits> parse_jwk(const typename json_traits::string_type& jwk_) {
+
1889 return jwk<json_traits>(jwk_);
+
1890 }
+
1897 template<typename json_traits>
+
1898 jwks<json_traits> parse_jwks(const typename json_traits::string_type& jwks_) {
+
1899 return jwks<json_traits>(jwks_);
+
1900 }
+
1901} // namespace jwt
+
1902
+
1903template<typename json_traits>
+
1904std::istream& operator>>(std::istream& is, jwt::basic_claim<json_traits>& c) {
+
1905 return c.operator>>(is);
+
1906}
+
1907
+
1908template<typename json_traits>
+
1909std::ostream& operator<<(std::ostream& os, const jwt::basic_claim<json_traits>& c) {
+
1910 return os << c.to_json();
+
1911}
+
1912
+
1913#ifndef JWT_DISABLE_PICOJSON
+
1914#include "traits/kazuho-picojson/defaults.h"
+
1915#endif
+
1916
+
1917#endif
+
a class to store a generic JSON value as claim
Definition jwt.h:345
+
json_traits::number_type as_number() const
Definition jwt.h:474
+
set_t as_set() const
Definition jwt.h:447
+
json::type get_type() const
Definition jwt.h:412
+
std::set< typename json_traits::string_type > set_t
Definition jwt.h:371
+
std::istream & operator>>(std::istream &is)
Definition jwt.h:399
+
json_traits::boolean_type as_boolean() const
Definition jwt.h:467
+
date as_date() const
Get the contained JSON value as a date.
Definition jwt.h:429
+
std::ostream & operator<<(std::ostream &os)
Definition jwt.h:405
+
json_traits::integer_type as_integer() const
Definition jwt.h:460
+
json_traits::value_type to_json() const
Definition jwt.h:393
+
json_traits::array_type as_array() const
Definition jwt.h:440
+
json_traits::string_type as_string() const
Definition jwt.h:419
+
Definition jwt.h:885
+
builder & set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:918
+
json_traits::string_type sign(const Algo &algo) const
Definition jwt.h:1054
+
json_traits::string_type sign(const Algo &algo, Encode encode) const
Definition jwt.h:1038
+
builder & set_audience(typename json_traits::string_type aud)
Definition jwt.h:996
+
builder & set_audience(typename json_traits::array_type a)
Definition jwt.h:988
+
builder & set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:908
+
builder & set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:928
+
builder & set_subject(typename json_traits::string_type str)
Definition jwt.h:980
+
builder & set_content_type(typename json_traits::string_type str)
Definition jwt.h:955
+
builder & set_not_before(const date &d)
Definition jwt.h:1010
+
builder & set_issued_at(const date &d)
Definition jwt.h:1016
+
builder & set_id(const typename json_traits::string_type &str)
Definition jwt.h:1022
+
builder & set_type(typename json_traits::string_type str)
Definition jwt.h:947
+
builder & set_key_id(typename json_traits::string_type str)
Set key id claim.
Definition jwt.h:964
+
builder & set_issuer(typename json_traits::string_type str)
Definition jwt.h:972
+
builder & set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:897
+
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:939
+
json_traits::string_type sign(const Algo &algo, std::error_code &ec) const
Definition jwt.h:1100
+
builder & set_expires_at(const date &d)
Definition jwt.h:1004
+
json_traits::string_type sign(const Algo &algo, Encode encode, std::error_code &ec) const
Definition jwt.h:1075
+
Definition jwt.h:750
+
const json_traits::string_type & get_header() const noexcept
Definition jwt.h:822
+
const json_traits::string_type & get_signature_base64() const noexcept
Definition jwt.h:847
+
json_traits::string_type signature
Signature part decoded from base64.
Definition jwt.h:763
+
json_traits::string_type header
Header part decoded from base64.
Definition jwt.h:755
+
json_traits::string_type header_base64
Unmodified header part in base64.
Definition jwt.h:757
+
json_traits::string_type token
Unmodified token, as passed to constructor.
Definition jwt.h:753
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:865
+
const json_traits::string_type & get_signature() const noexcept
Definition jwt.h:832
+
JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type &token)
Parses a given token.
Definition jwt.h:779
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:875
+
decoded_jwt(const typename json_traits::string_type &token, Decode decode)
Parses a given token.
Definition jwt.h:796
+
json_traits::object_type get_payload_json() const
Definition jwt.h:852
+
json_traits::string_type signature_base64
Unmodified signature part in base64.
Definition jwt.h:765
+
const json_traits::string_type & get_payload_base64() const noexcept
Definition jwt.h:842
+
const json_traits::string_type & get_token() const noexcept
Definition jwt.h:817
+
json_traits::object_type get_header_json() const
Definition jwt.h:857
+
const json_traits::string_type & get_payload() const noexcept
Definition jwt.h:827
+
const json_traits::string_type & get_header_base64() const noexcept
Definition jwt.h:837
+
json_traits::string_type payload_base64
Unmodified payload part in base64.
Definition jwt.h:761
+
json_traits::string_type payload
Payload part decoded from base64.
Definition jwt.h:759
+
Definition jwt.h:675
+
json_traits::string_type get_type() const
Definition jwt.h:714
+
bool has_header_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:733
+
bool has_algorithm() const noexcept
Definition jwt.h:685
+
bool has_type() const noexcept
Definition jwt.h:690
+
json_traits::string_type get_algorithm() const
Definition jwt.h:707
+
bool has_content_type() const noexcept
Definition jwt.h:695
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:741
+
json_traits::string_type get_key_id() const
Definition jwt.h:728
+
json_traits::string_type get_content_type() const
Definition jwt.h:721
+
bool has_key_id() const noexcept
Definition jwt.h:700
+
JSON Web Key.
Definition jwt.h:1558
+
bool has_x5c() const noexcept
Definition jwt.h:1714
+
json_traits::string_type get_curve() const
Get curve claim.
Definition jwt.h:1621
+
bool has_x5t_sha256() const noexcept
Definition jwt.h:1726
+
json_traits::string_type get_algorithm() const
Definition jwt.h:1601
+
json_traits::array_type get_x5c() const
Definition jwt.h:1629
+
json_traits::object_type get_claims() const
Definition jwt.h:1751
+
json_traits::string_type get_x5t() const
Definition jwt.h:1645
+
json_traits::string_type get_x5c_key_value() const
Definition jwt.h:1661
+
json_traits::string_type get_x5t_sha256() const
Definition jwt.h:1653
+
json_traits::string_type get_key_id() const
Definition jwt.h:1609
+
bool has_algorithm() const noexcept
Definition jwt.h:1690
+
json_traits::string_type get_use() const
Definition jwt.h:1585
+
bool has_key_id() const noexcept
Definition jwt.h:1702
+
bool has_x5u() const noexcept
Definition jwt.h:1708
+
bool has_key_operations() const noexcept
Definition jwt.h:1684
+
bool has_use() const noexcept
Definition jwt.h:1678
+
bool has_x5t() const noexcept
Definition jwt.h:1720
+
bool has_jwk_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:1732
+
basic_claim_t::set_t get_key_operations() const
Definition jwt.h:1593
+
bool has_curve() const noexcept
Definition jwt.h:1696
+
bool has_key_type() const noexcept
Definition jwt.h:1672
+
basic_claim_t get_jwk_claim(const typename json_traits::string_type &name) const
Definition jwt.h:1741
+
json_traits::string_type get_x5u() const
Definition jwt.h:1637
+
json_traits::string_type get_key_type() const
Definition jwt.h:1577
+
JWK Set.
Definition jwt.h:1765
+
jwk_t get_jwk(const typename json_traits::string_type &key_id) const
Definition jwt.h:1804
+
bool has_jwk(const typename json_traits::string_type &key_id) const noexcept
Definition jwt.h:1795
+
Definition jwt.h:557
+
basic_claim_t::set_t get_audience() const
Definition jwt.h:619
+
json_traits::string_type get_id() const
Definition jwt.h:652
+
bool has_issued_at() const noexcept
Definition jwt.h:593
+
bool has_not_before() const noexcept
Definition jwt.h:588
+
bool has_payload_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:657
+
bool has_subject() const noexcept
Definition jwt.h:573
+
date get_not_before() const
Definition jwt.h:638
+
bool has_issuer() const noexcept
Definition jwt.h:568
+
bool has_id() const noexcept
Definition jwt.h:598
+
bool has_expires_at() const noexcept
Definition jwt.h:583
+
date get_issued_at() const
Definition jwt.h:645
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:665
+
bool has_audience() const noexcept
Definition jwt.h:578
+
date get_expires_at() const
Definition jwt.h:631
+
json_traits::string_type get_subject() const
Definition jwt.h:612
+
json_traits::string_type get_issuer() const
Definition jwt.h:605
+
Definition jwt.h:1312
+
verifier & expires_at_leeway(size_t leeway)
Definition jwt.h:1393
+
std::function< void(const verify_ops::verify_context< json_traits > &, std::error_code &ec)> verify_check_fn_t
Definition jwt.h:1325
+
verifier & with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)
Definition jwt.h:1487
+
void verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const
Definition jwt.h:1528
+
verifier & not_before_leeway(size_t leeway)
Definition jwt.h:1403
+
verifier & issued_at_leeway(size_t leeway)
Definition jwt.h:1413
+
verifier & with_subject(const typename json_traits::string_type &sub)
Definition jwt.h:1449
+
verifier & with_audience(const typename basic_claim_t::set_t &aud)
Definition jwt.h:1458
+
verifier & with_claim(const typename json_traits::string_type &name, basic_claim_t c)
Definition jwt.h:1498
+
verifier & with_audience(const typename json_traits::string_type &aud)
Definition jwt.h:1468
+
void verify(const decoded_jwt< json_traits > &jwt) const
Definition jwt.h:1518
+
verifier(Clock c)
Definition jwt.h:1354
+
verifier & leeway(size_t leeway)
Definition jwt.h:1383
+
verifier & with_issuer(const typename json_traits::string_type &iss)
Definition jwt.h:1439
+
verifier & allow_algorithm(Algorithm alg)
Definition jwt.h:1508
+
verifier & with_type(const typename json_traits::string_type &type, std::locale locale=std::locale{})
Definition jwt.h:1429
+
verifier & with_id(const typename json_traits::string_type &id)
Definition jwt.h:1479
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition errors.h:281
+
type
categories for the various JSON types used in JWTs
Definition jwt.h:68
+
JSON Web Token.
Definition algorithms.h:50
+
verifier< Clock, json_traits > verify(Clock c)
Definition jwt.h:1827
+
builder< json_traits > create()
Definition jwt.h:1852
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:1888
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:1898
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
std::chrono::system_clock::time_point date
Definition jwt.h:335
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Definition jwt.h:1865
+
Definition jwt.h:1834
+ + + + +
Definition jwt.h:1164
+ + +
This is the base container which holds the token that need to be verified.
Definition jwt.h:1116
+
+
+ + + + diff --git a/kazuho-picojson_2defaults_8h_source.html b/kazuho-picojson_2defaults_8h_source.html new file mode 100644 index 000000000..35db99b11 --- /dev/null +++ b/kazuho-picojson_2defaults_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/defaults.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
+
26 inline builder<traits::kazuho_picojson> create() { return builder<traits::kazuho_picojson>(); }
+
27
+
28#ifndef JWT_DISABLE_BASE64
+
36 inline decoded_jwt<traits::kazuho_picojson> decode(const std::string& token) {
+
37 return decoded_jwt<traits::kazuho_picojson>(token);
+
38 }
+
39#endif
+
40
+
52 template<typename Decode>
+
53 decoded_jwt<traits::kazuho_picojson> decode(const std::string& token, Decode decode) {
+ +
55 }
+
56
+
63 inline jwk<traits::kazuho_picojson> parse_jwk(const traits::kazuho_picojson::string_type& token) {
+
64 return jwk<traits::kazuho_picojson>(token);
+
65 }
+
66
+
73 inline jwks<traits::kazuho_picojson> parse_jwks(const traits::kazuho_picojson::string_type& token) {
+
74 return jwks<traits::kazuho_picojson>(token);
+
75 }
+
76
+
81 using verify_context = verify_ops::verify_context<traits::kazuho_picojson>;
+
82} // namespace jwt
+
83
+
84#endif // JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
Definition jwt.h:750
+
JSON Web Token.
Definition algorithms.h:50
+
builder< json_traits > create()
Definition jwt.h:1852
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:1888
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:1898
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:85
+
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)
Definition jwt.h:1865
+
+
+ + + + diff --git a/kazuho-picojson_2traits_8h_source.html b/kazuho-picojson_2traits_8h_source.html new file mode 100644 index 000000000..3f6c6eb02 --- /dev/null +++ b/kazuho-picojson_2traits_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/traits.h Source File + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 {
+
15 namespace traits {
+ +
17 using value_type = picojson::value;
+
18 using object_type = picojson::object;
+
19 using array_type = picojson::array;
+
20 using string_type = std::string;
+
21 using number_type = double;
+
22 using integer_type = int64_t;
+
23 using boolean_type = bool;
+
24
+
25 static json::type get_type(const picojson::value& val) {
+
26 using json::type;
+
27 if (val.is<bool>()) return type::boolean;
+
28 if (val.is<int64_t>()) return type::integer;
+
29 if (val.is<double>()) return type::number;
+
30 if (val.is<std::string>()) return type::string;
+
31 if (val.is<picojson::array>()) return type::array;
+
32 if (val.is<picojson::object>()) return type::object;
+
33
+
34 throw std::logic_error("invalid type");
+
35 }
+
36
+
37 static picojson::object as_object(const picojson::value& val) {
+
38 if (!val.is<picojson::object>()) throw std::bad_cast();
+
39 return val.get<picojson::object>();
+
40 }
+
41
+
42 static std::string as_string(const picojson::value& val) {
+
43 if (!val.is<std::string>()) throw std::bad_cast();
+
44 return val.get<std::string>();
+
45 }
+
46
+
47 static picojson::array as_array(const picojson::value& val) {
+
48 if (!val.is<picojson::array>()) throw std::bad_cast();
+
49 return val.get<picojson::array>();
+
50 }
+
51
+
52 static int64_t as_integer(const picojson::value& val) {
+
53 if (!val.is<int64_t>()) throw std::bad_cast();
+
54 return val.get<int64_t>();
+
55 }
+
56
+
57 static bool as_boolean(const picojson::value& val) {
+
58 if (!val.is<bool>()) throw std::bad_cast();
+
59 return val.get<bool>();
+
60 }
+
61
+
62 static double as_number(const picojson::value& val) {
+
63 if (!val.is<double>()) throw std::bad_cast();
+
64 return val.get<double>();
+
65 }
+
66
+
67 static bool parse(picojson::value& val, const std::string& str) {
+
68 return picojson::parse(val, str).empty();
+
69 }
+
70
+
71 static std::string serialize(const picojson::value& val) { return val.serialize(); }
+
72 };
+
73 } // namespace traits
+
74} // namespace jwt
+
75
+
76#endif
+
JSON Web Token.
Definition algorithms.h:50
+
Definition traits.h:16
+
+
+ + + + diff --git a/md__8github_2security.html b/md__8github_2security.html new file mode 100644 index 000000000..acf16e351 --- /dev/null +++ b/md__8github_2security.html @@ -0,0 +1,120 @@ + + + + + + + +JWT-CPP: Reporting Security Issues + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 000000000..ee9178a9f --- /dev/null +++ b/md_docs_2faqs.html @@ -0,0 +1,148 @@ + + + + + + + +JWT-CPP: Frequently Asked Questions + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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_at(std::chrono::system_clock::now())
+
.set_expires_at(std::chrono::system_clock::now() + std::chrono::seconds{3600})
+
.sign(jwt::algorithm::hs256{"secret"});
+
builder< json_traits > create()
Definition jwt.h:1852
+
Definition algorithms.h:1259
+

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_2signing.html b/md_docs_2signing.html new file mode 100644 index 000000000..a8131461d --- /dev/null +++ b/md_docs_2signing.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: Signing Tokens + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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 examples 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:1827
+

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

+
auto token = jwt::create()
+
.set_id("custom-algo-example")
+
.set_issued_at(std::chrono::system_clock::now())
+
.set_expires_at(std::chrono::system_clock::now() + 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:345
+
builder< json_traits > create()
Definition jwt.h:1852
+
+
+
+ + + + diff --git a/md_docs_2ssl.html b/md_docs_2ssl.html new file mode 100644 index 000000000..55485dcb6 --- /dev/null +++ b/md_docs_2ssl.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: Cryptography Libraries + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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
+

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 000000000..20f808777 --- /dev/null +++ b/md_docs_2traits.html @@ -0,0 +1,164 @@ + + + + + + + +JWT-CPP: JSON Traits + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.6.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.

+

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.

+
+

‍:warning: 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:68
+
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @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) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + 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; + } + var 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('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var 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 000000000..990d93f71 --- /dev/null +++ b/menudata.js @@ -0,0 +1,95 @@ +/* + @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:"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:"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:"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:"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:"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:"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/namespacejwt.html b/namespacejwt.html new file mode 100644 index 000000000..a5fdfe139 --- /dev/null +++ b/namespacejwt.html @@ -0,0 +1,880 @@ + + + + + + + +JWT-CPP: jwt Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
     
    namespace  json
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +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 json_traits >
    verifier< default_clock, json_traits > verify (default_clock c={})
     
    template<typename json_traits >
    builder< json_traits > create ()
     
    template<typename json_traits , typename Decode >
    decoded_jwt< json_traits > decode (const typename json_traits::string_type &token, Decode decode)
     
    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< 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)
     
    +

    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 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.

    +

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

    + +
    +
    + +

    ◆ date

    + +
    +
    + + + + +
    using jwt::date = typedef 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/2]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + +
    builder< traits::nlohmann_json > jwt::create ()
    +
    +inline
    +
    +

    Return a builder instance to create a new token

    + +
    +
    + +

    ◆ create() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    builder< traits::boost_json > jwt::create ()
    +
    +inline
    +
    +

    Return a builder instance to create a new token

    + +
    +
    + +

    ◆ decode() [1/7]

    + +
    +
    + + + + + +
    + + + + + + + + +
    decoded_jwt< traits::nlohmann_json > 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/7]

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

    Decode a token

    Template Parameters
    + + +
    Decodeis callabled, 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/7]

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

    Decode a token

    Template Parameters
    + + +
    Decodeis callabled, 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/7]

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

    Decode a token

    Template Parameters
    + + +
    Decodeis callabled, 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/7]

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

    Decode a token

    Template Parameters
    + + +
    Decodeis callabled, 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/7]

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

    Decode a token

    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() [7/7]

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

    Decode a token

    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::nlohmann_json > 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::nlohmann_json > 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

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

    ◆ verify() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    verifier< default_clock, traits::nlohmann_json > 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 given clock

    Parameters
    + + +
    cClock instance to use
    +
    +
    +
    Returns
    verifier instance
    + +
    +
    +
    +
    + + + + diff --git a/namespacejwt.js b/namespacejwt.js new file mode 100644 index 000000000..04281abdb --- /dev/null +++ b/namespacejwt.js @@ -0,0 +1,48 @@ +var namespacejwt = +[ + [ "algorithm", "namespacejwt_1_1algorithm.html", "namespacejwt_1_1algorithm" ], + [ "alphabet", "namespacejwt_1_1alphabet.html", "namespacejwt_1_1alphabet" ], + [ "base", "namespacejwt_1_1base.html", [ + [ "encode", "namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28", 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 ] + ] ] + ] ], + [ "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", null ], + [ "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#ac746f304c522d67c96b3b3f8bfa92e98", null ], + [ "date", "namespacejwt.html#ad1a72c1ea3d67e3d9bd554e26856523d", null ], + [ "verify_context", "namespacejwt.html#ac6661f443e9d9cdd8ff26b5f59b4777c", null ], + [ "create", "namespacejwt.html#a2c5962f1775bac1a99e326e761b2e05e", null ], + [ "create", "namespacejwt.html#a119b3861d510205d5c626b794c06d020", null ], + [ "decode", "namespacejwt.html#ae63bcbdf9caf43a79f3c140708552761", null ], + [ "decode", "namespacejwt.html#a1888325882765254b8d2680ff1cf3210", null ], + [ "decode", "namespacejwt.html#a98607d668bf63870e5dab3f81afe0320", null ], + [ "decode", "namespacejwt.html#a627d2f26db17185e7eb7bb92defa70cc", null ], + [ "decode", "namespacejwt.html#a65d515aeb39cb5829c7af774051ae91e", null ], + [ "decode", "namespacejwt.html#ade66496cbe78db1ca2fd769b6982bbc9", null ], + [ "decode", "namespacejwt.html#aefffdd7d2a79d6872c15a7ec1661b149", null ], + [ "parse_jwk", "namespacejwt.html#a400ddb1cef610c92831bd577fd81d4e6", null ], + [ "parse_jwk", "namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0", null ], + [ "parse_jwks", "namespacejwt.html#a19ba6f93afb62925496c134f15c89116", null ], + [ "parse_jwks", "namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec", null ], + [ "verify", "namespacejwt.html#aac658f79d5123d53c3edcbecbbbdc149", 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 000000000..19713178f --- /dev/null +++ b/namespacejwt_1_1algorithm.html @@ -0,0 +1,169 @@ + + + + + + + +JWT-CPP: jwt::algorithm Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..f370325c1 --- /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 000000000..be6918452 --- /dev/null +++ b/namespacejwt_1_1alphabet.html @@ -0,0 +1,133 @@ + + + + + + + +JWT-CPP: jwt::alphabet Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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< char, 64 > &alphabet, 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 000000000..88d18ba68 --- /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 000000000..2c222cf8e --- /dev/null +++ b/namespacejwt_1_1base.html @@ -0,0 +1,161 @@ + + + + + + + +JWT-CPP: jwt::base Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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)
     
    +template<typename T >
    std::string pad (const std::string &base)
     
    +template<typename T >
    std::string trim (const std::string &base)
     
    +

    Detailed Description

    +

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

    +

    Function Documentation

    + +

    ◆ 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")
    +
    +
    +
    +
    +
    + + + + diff --git a/namespacejwt_1_1error.html b/namespacejwt_1_1error.html new file mode 100644 index 000000000..2aa43c0f4 --- /dev/null +++ b/namespacejwt_1_1error.html @@ -0,0 +1,269 @@ + + + + + + + +JWT-CPP: jwt::error Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 +
    + }
     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 +
    + }
     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 000000000..ef833a90c --- /dev/null +++ b/namespacejwt_1_1error.js @@ -0,0 +1,80 @@ +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 ] + ] ], + [ "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 ] + ] ], + [ "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 000000000..7d7836140 --- /dev/null +++ b/namespacejwt_1_1helper.html @@ -0,0 +1,971 @@ + + + + + + + +JWT-CPP: jwt::helper Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::helper Namespace Reference
    +
    +
    + + + + + +

    +Classes

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

    +Functions

    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.
     
    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.
     
    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.
     
    evp_pkey_handle load_public_key_from_string (const std::string &key, const std::string &password="")
     Load a public key from a string.
     
    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.
     
    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.
     
    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.
     
    evp_pkey_handle load_private_ec_key_from_string (const std::string &key, const std::string &password="")
     Load a private key from a string.
     
    +

    Detailed Description

    +

    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

    + +

    ◆ 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)
    +
    +
    + +
    +
    + +

    ◆ extract_pubkey_from_cert() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::extract_pubkey_from_cert (const std::string & certstr,
    const std::string & pw,
    std::error_code & ec 
    )
    +
    +inline
    +
    + +

    Extract the public key of a PEM certificate.

    +
    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]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::string jwt::helper::extract_pubkey_from_cert (const std::string & certstr,
    const std::string & pw = "" 
    )
    +
    +inline
    +
    + +

    Extract the public key of a pem certificate.

    +
    Parameters
    + + + +
    certstrString containing the certificate encoded as pem
    pwPassword used to decrypt certificate (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif 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.

    +
    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.

    +
    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]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    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.

    +
    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]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    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.

    +
    Parameters
    + + + +
    keyString containing a private key as pem
    passwordPassword used to decrypt key (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif 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

    +
    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

    +
    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]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    evp_pkey_handle jwt::helper::load_public_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

    +
    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]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    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

    +
    Parameters
    + + + +
    keyString containing the certificate or key encoded as pem
    passwordPassword used to decrypt certificate or key (leave empty if not encrypted)
    +
    +
    +
    Exceptions
    + + +
    rsa_exceptionif an error occurred
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/namespacejwt_1_1helper.js b/namespacejwt_1_1helper.js new file mode 100644 index 000000000..39184dc11 --- /dev/null +++ b/namespacejwt_1_1helper.js @@ -0,0 +1,20 @@ +var namespacejwt_1_1helper = +[ + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html", "classjwt_1_1helper_1_1evp__pkey__handle" ], + [ "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 ], + [ "extract_pubkey_from_cert", "namespacejwt_1_1helper.html#a85fab72593fea9a3bb704464be2bfc18", null ], + [ "extract_pubkey_from_cert", "namespacejwt_1_1helper.html#a8a102b1b679467ba520e8cae3ceed9da", 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#aec26aaa1b60b17039046cd5043a520f8", null ], + [ "load_private_key_from_string", "namespacejwt_1_1helper.html#aa14d03fa5947ac066d8890a050116b93", 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#aff6d5a71d864f47402606ce7d22ae5aa", null ], + [ "load_public_key_from_string", "namespacejwt_1_1helper.html#a026ca0f48025b1ec3502e3ea42efd2ab", null ] +]; \ No newline at end of file diff --git a/namespacejwt_1_1json.html b/namespacejwt_1_1json.html new file mode 100644 index 000000000..4ba2aa69f --- /dev/null +++ b/namespacejwt_1_1json.html @@ -0,0 +1,155 @@ + + + + + + + +JWT-CPP: jwt::json Namespace Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::json Namespace Reference
    +
    +
    + + + + + +

    +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 needign a "concept" to capture that defintion to compare against a concrete type.

    + +
    +
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..a6e42be05 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,174 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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:
    + +

    - c -

    + + +

    - d -

      +
    • date : jwt
    • +
    • decode() : jwt
    • +
    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

      +
    • parse_jwk() : jwt
    • +
    • parse_jwks() : jwt
    • +
    + + +

    - 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 000000000..f919b7df6 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..3e6fe1ba7 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,165 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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:
    + +

    - c -

    + + +

    - d -

      +
    • decode() : jwt
    • +
    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

      +
    • parse_jwk() : jwt
    • +
    • parse_jwks() : jwt
    • +
    + + +

    - 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 000000000..cfcd2016a --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,110 @@ + + + + + + + +JWT-CPP: Namespace Members + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..6421b6120 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,159 @@ + + + + + + + +JWT-CPP: Namespace List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     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
     Nhelper
     Cevp_pkey_handleHandle class for EVP_PKEY structures
     Njson
     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 000000000..8ef37513a --- /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 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..d70f378b3 --- /dev/null +++ b/navtree.css @@ -0,0 +1,150 @@ +#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; + outline:none; +} + +#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 000000000..f23e98495 --- /dev/null +++ b/navtree.js @@ -0,0 +1,556 @@ +/* + @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 navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + 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=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var 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) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var 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) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var 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 + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var 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'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var 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); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var 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(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var 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.6.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
    +
    30 inline builder<traits::nlohmann_json> create() { return builder<traits::nlohmann_json>(); }
    +
    31
    +
    32#ifndef JWT_DISABLE_BASE64
    +
    40 inline decoded_jwt<traits::nlohmann_json> decode(const std::string& token) {
    +
    41 return decoded_jwt<traits::nlohmann_json>(token);
    +
    42 }
    +
    43#endif
    +
    44
    +
    56 template<typename Decode>
    +
    57 decoded_jwt<traits::nlohmann_json> decode(const std::string& token, Decode decode) {
    + +
    59 }
    +
    60
    +
    67 inline jwk<traits::nlohmann_json> parse_jwk(const traits::nlohmann_json::string_type& token) {
    +
    68 return jwk<traits::nlohmann_json>(token);
    +
    69 }
    +
    70
    +
    77 inline jwks<traits::nlohmann_json> parse_jwks(const traits::nlohmann_json::string_type& token) {
    +
    78 return jwks<traits::nlohmann_json>(token);
    +
    79 }
    +
    80
    +
    85 using verify_context = verify_ops::verify_context<traits::nlohmann_json>;
    +
    86} // namespace jwt
    +
    87
    +
    88#endif // JWT_CPP_NLOHMANN_JSON_DEFAULTS_H
    +
    Definition jwt.h:750
    +
    JSON Web Token.
    Definition algorithms.h:50
    +
    builder< json_traits > create()
    Definition jwt.h:1852
    +
    jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
    Definition jwt.h:1888
    +
    jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
    Definition jwt.h:1898
    +
    verifier< default_clock, traits::boost_json > verify()
    Definition defaults.h:23
    +
    verify_ops::verify_context< traits::boost_json > verify_context
    Definition defaults.h:85
    +
    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)
    Definition jwt.h:1865
    +
    +
    + + + + diff --git a/nlohmann-json_2traits_8h_source.html b/nlohmann-json_2traits_8h_source.html new file mode 100644 index 000000000..dc4bbfe66 --- /dev/null +++ b/nlohmann-json_2traits_8h_source.html @@ -0,0 +1,189 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/nlohmann-json/traits.h Source File + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 {
    +
    8 namespace traits {
    +
    9 struct nlohmann_json {
    +
    10 using json = nlohmann::json;
    +
    11 using value_type = json;
    +
    12 using object_type = json::object_t;
    +
    13 using array_type = json::array_t;
    +
    14 using string_type = std::string; // current limitation of traits implementation
    +
    15 using number_type = json::number_float_t;
    +
    16 using integer_type = json::number_integer_t;
    +
    17 using boolean_type = json::boolean_t;
    +
    18
    +
    19 static jwt::json::type get_type(const json& val) {
    +
    20 using jwt::json::type;
    +
    21
    +
    22 if (val.type() == json::value_t::boolean) return type::boolean;
    +
    23 // nlohmann internally tracks two types of integers
    +
    24 if (val.type() == json::value_t::number_integer) return type::integer;
    +
    25 if (val.type() == json::value_t::number_unsigned) return type::integer;
    +
    26 if (val.type() == json::value_t::number_float) return type::number;
    +
    27 if (val.type() == json::value_t::string) return type::string;
    +
    28 if (val.type() == json::value_t::array) return type::array;
    +
    29 if (val.type() == json::value_t::object) return type::object;
    +
    30
    +
    31 throw std::logic_error("invalid type");
    +
    32 }
    +
    33
    +
    34 static json::object_t as_object(const json& val) {
    +
    35 if (val.type() != json::value_t::object) throw std::bad_cast();
    +
    36 return val.get<json::object_t>();
    +
    37 }
    +
    38
    +
    39 static std::string as_string(const json& val) {
    +
    40 if (val.type() != json::value_t::string) throw std::bad_cast();
    +
    41 return val.get<std::string>();
    +
    42 }
    +
    43
    +
    44 static json::array_t as_array(const json& val) {
    +
    45 if (val.type() != json::value_t::array) throw std::bad_cast();
    +
    46 return val.get<json::array_t>();
    +
    47 }
    +
    48
    +
    49 static int64_t as_integer(const json& val) {
    +
    50 switch (val.type()) {
    +
    51 case json::value_t::number_integer:
    +
    52 case json::value_t::number_unsigned: return val.get<int64_t>();
    +
    53 default: throw std::bad_cast();
    +
    54 }
    +
    55 }
    +
    56
    +
    57 static bool as_boolean(const json& val) {
    +
    58 if (val.type() != json::value_t::boolean) throw std::bad_cast();
    +
    59 return val.get<bool>();
    +
    60 }
    +
    61
    +
    62 static double as_number(const json& val) {
    +
    63 if (val.type() != json::value_t::number_float) throw std::bad_cast();
    +
    64 return val.get<double>();
    +
    65 }
    +
    66
    +
    67 static bool parse(json& val, std::string str) {
    +
    68 val = json::parse(str.begin(), str.end());
    +
    69 return true;
    +
    70 }
    +
    71
    +
    72 static std::string serialize(const json& val) { return val.dump(); }
    +
    73 };
    +
    74 } // namespace traits
    +
    75} // namespace jwt
    +
    76
    +
    77#endif
    +
    type
    categories for the various JSON types used in JWTs
    Definition jwt.h:68
    +
    JSON Web Token.
    Definition algorithms.h:50
    +
    Definition traits.h:9
    +
    +
    + + + + diff --git a/open.png b/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +JWT-CPP: Related Pages + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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/resize.js b/resize.js new file mode 100644 index 000000000..aaeb6fc0a --- /dev/null +++ b/resize.js @@ -0,0 +1,155 @@ +/* + @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 once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + 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() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var 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() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var 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; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..4d21ccf62 --- /dev/null +++ b/search/all_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/all_1.js b/search/all_1.js new file mode 100644 index 000000000..abf1bda9c --- /dev/null +++ b/search/all_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/all_10.js b/search/all_10.js new file mode 100644 index 000000000..a7133b5a8 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['reporting_20security_20issues_0',['Reporting Security Issues',['../md__8github_2security.html',1,'']]], + ['rs256_1',['rs256',['../structjwt_1_1algorithm_1_1rs256.html',1,'jwt::algorithm::rs256'],['../structjwt_1_1algorithm_1_1rs256.html#aa87ccde15aad4ad592fa4ac0a2a5f748',1,'jwt::algorithm::rs256::rs256()']]], + ['rs384_2',['rs384',['../structjwt_1_1algorithm_1_1rs384.html',1,'jwt::algorithm::rs384'],['../structjwt_1_1algorithm_1_1rs384.html#a3f5bada82c323b97a6b1c5777bc512ef',1,'jwt::algorithm::rs384::rs384()']]], + ['rs512_3',['rs512',['../structjwt_1_1algorithm_1_1rs512.html',1,'jwt::algorithm::rs512'],['../structjwt_1_1algorithm_1_1rs512.html#aa3331d1fbe994d97ee57ffdabd05eb1b',1,'jwt::algorithm::rs512::rs512()']]], + ['rsa_4',['rsa',['../structjwt_1_1algorithm_1_1rsa.html',1,'jwt::algorithm::rsa'],['../structjwt_1_1algorithm_1_1rsa.html#a505ccbff5695e94370cc4549c2426bc7',1,'jwt::algorithm::rsa::rsa()']]], + ['rsa_5ferror_5',['rsa_error',['../namespacejwt_1_1error.html#a98235b94b0e6df132992e15d5da6b9a7',1,'jwt::error']]], + ['rsa_5ferror_5fcategory_6',['rsa_error_category',['../namespacejwt_1_1error.html#a7fd09a10a0c499fe063293a10caf89e9',1,'jwt::error']]], + ['rsa_5fexception_7',['rsa_exception',['../structjwt_1_1error_1_1rsa__exception.html',1,'jwt::error']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..10965f1f3 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['set_5falgorithm_0',['set_algorithm',['../classjwt_1_1builder.html#ad6a378577e46c3e12f3242c625f2f623',1,'jwt::builder']]], + ['set_5faudience_1',['set_audience',['../classjwt_1_1builder.html#a20358aa8be0179eaa53055aaca8a7f21',1,'jwt::builder::set_audience(typename json_traits::array_type a)'],['../classjwt_1_1builder.html#a1e764196824144648b2b2c490bdc328d',1,'jwt::builder::set_audience(typename json_traits::string_type aud)']]], + ['set_5fcontent_5ftype_2',['set_content_type',['../classjwt_1_1builder.html#a66d603ae007cb796667b4abd095e06cb',1,'jwt::builder']]], + ['set_5fexpires_5fat_3',['set_expires_at',['../classjwt_1_1builder.html#ae3de63621c8f7b3da8415030225cd67e',1,'jwt::builder']]], + ['set_5fheader_5fclaim_4',['set_header_claim',['../classjwt_1_1builder.html#ac8f57f1c8d27e6117c508a3619ed4561',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#a388749e54d6b89b9da6a75494fb0757e',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fid_5',['set_id',['../classjwt_1_1builder.html#a95583374b3f692fa84833a0e08575665',1,'jwt::builder']]], + ['set_5fissued_5fat_6',['set_issued_at',['../classjwt_1_1builder.html#a92bfe54290a13c640db23240536993c7',1,'jwt::builder']]], + ['set_5fissuer_7',['set_issuer',['../classjwt_1_1builder.html#ab6f6203620218fbdec21c5afda7d11fc',1,'jwt::builder']]], + ['set_5fkey_5fid_8',['set_key_id',['../classjwt_1_1builder.html#ab5bc32a6f2cd89f65e558fd38dae21b0',1,'jwt::builder']]], + ['set_5fnot_5fbefore_9',['set_not_before',['../classjwt_1_1builder.html#a82784887801a2fcf4b132b03444a4da7',1,'jwt::builder']]], + ['set_5fpayload_5fclaim_10',['set_payload_claim',['../classjwt_1_1builder.html#a42e050718f31a284e08142030ca91930',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)'],['../classjwt_1_1builder.html#a0d63ee3ba1a3bf7047239e8502e565ab',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)']]], + ['set_5fsubject_11',['set_subject',['../classjwt_1_1builder.html#a4506fc0956549155546d4c80fa94ae45',1,'jwt::builder']]], + ['set_5ft_12',['set_t',['../classjwt_1_1basic__claim.html#a7f91e69345710ff7d8c4a7cc9089c000',1,'jwt::basic_claim']]], + ['set_5ftype_13',['set_type',['../classjwt_1_1builder.html#aaa284acea472b10e6a1ee142336a01aa',1,'jwt::builder']]], + ['sign_14',['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#aff43371359a2f8bc6cabd2c976050233',1,'jwt::builder::sign(const Algo &algo, Encode encode, std::error_code &ec) const'],['../classjwt_1_1builder.html#a1e594d5e35cbd6b799acb1a247618a40',1,'jwt::builder::sign(const Algo &algo, Encode encode) const'],['../classjwt_1_1builder.html#a18ede7eb3d5502f17f2b7c3cf31d2f1c',1,'jwt::builder::sign(const Algo &algo) const'],['../structjwt_1_1algorithm_1_1ecdsa.html#a1498ffe04434510bc854e20f9c6c81ed',1,'jwt::algorithm::ecdsa::sign()'],['../structjwt_1_1algorithm_1_1rsa.html#a35ceb620da332ce4b487866a4bb16eb4',1,'jwt::algorithm::rsa::sign()'],['../structjwt_1_1algorithm_1_1hmacsha.html#a1c4b1e54522894fb83c18b52dd06fc70',1,'jwt::algorithm::hmacsha::sign()'],['../structjwt_1_1algorithm_1_1none.html#ad672c49fb2931f1fe5daae3595daf090',1,'jwt::algorithm::none::sign()'],['../classjwt_1_1builder.html#ad7d743a548c14c91c87450929cda8bb9',1,'jwt::builder::sign()']]], + ['signature_15',['signature',['../classjwt_1_1decoded__jwt.html#a029ac1ee047b99ac75265755a3107ccb',1,'jwt::decoded_jwt']]], + ['signature_5fbase64_16',['signature_base64',['../classjwt_1_1decoded__jwt.html#a8ccaba87d81df84591da392cb8702f2e',1,'jwt::decoded_jwt']]], + ['signature_5fgeneration_5ferror_17',['signature_generation_error',['../namespacejwt_1_1error.html#aa5bd68bdbf7467bc15ca7786e2aeb1cd',1,'jwt::error']]], + ['signature_5fgeneration_5ferror_5fcategory_18',['signature_generation_error_category',['../namespacejwt_1_1error.html#a86c5b0c1df898d66161455b323b8053e',1,'jwt::error']]], + ['signature_5fgeneration_5fexception_19',['signature_generation_exception',['../structjwt_1_1error_1_1signature__generation__exception.html',1,'jwt::error']]], + ['signature_5fverification_5ferror_20',['signature_verification_error',['../namespacejwt_1_1error.html#a016a92ceca8cb48466c0e250b4fca244',1,'jwt::error']]], + ['signature_5fverification_5ferror_5fcategory_21',['signature_verification_error_category',['../namespacejwt_1_1error.html#a7c0e4691aa8c55743300cd068ad23aec',1,'jwt::error']]], + ['signature_5fverification_5fexception_22',['signature_verification_exception',['../structjwt_1_1error_1_1signature__verification__exception.html',1,'jwt::error']]], + ['signing_20tokens_23',['Signing Tokens',['../md_docs_2signing.html',1,'']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..6ada4ce33 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,10 @@ +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']]], + ['type_6',['type',['../namespacejwt_1_1json.html#aa4e55c1854b652f73fad3b811ff94a3e',1,'jwt::json']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..563dc75c7 --- /dev/null +++ b/search/all_13.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#aac658f79d5123d53c3edcbecbbbdc149',1,'jwt::verify()']]], + ['verify_5fcheck_5ffn_5ft_2',['verify_check_fn_t',['../classjwt_1_1verifier.html#a1636f7274f25405fc389e829ca63da43',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#ac6661f443e9d9cdd8ff26b5f59b4777c',1,'jwt::verify_context']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..7830ef909 --- /dev/null +++ b/search/all_14.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 000000000..4390836af --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['claim_0',['claim',['../namespacejwt.html#ac746f304c522d67c96b3b3f8bfa92e98',1,'jwt']]], + ['claim_5fnot_5fpresent_5fexception_1',['claim_not_present_exception',['../structjwt_1_1error_1_1claim__not__present__exception.html',1,'jwt::error']]], + ['convert_5fbase64_5fder_5fto_5fpem_2',['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_3',['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_4',['create',['../namespacejwt.html#a2c5962f1775bac1a99e326e761b2e05e',1,'jwt::create()'],['../namespacejwt.html#a119b3861d510205d5c626b794c06d020',1,'jwt::create()']]], + ['cryptography_20libraries_5',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..a8c25cd63 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['danielaparker_5fjsoncons_0',['danielaparker_jsoncons',['../structjwt_1_1traits_1_1danielaparker__jsoncons.html',1,'jwt::traits']]], + ['date_1',['date',['../namespacejwt.html#ad1a72c1ea3d67e3d9bd554e26856523d',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.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#ae63bcbdf9caf43a79f3c140708552761',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)']]], + ['decoded_5fjwt_5',['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)'],['../classjwt_1_1decoded__jwt.html',1,'jwt::decoded_jwt< json_traits >']]], + ['default_5fclock_6',['default_clock',['../structjwt_1_1default__clock.html',1,'jwt']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..2fc3d1f1b --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['ecdsa_0',['ecdsa',['../structjwt_1_1algorithm_1_1ecdsa.html#a26916f3b94cced8e413df2b3312432c5',1,'jwt::algorithm::ecdsa::ecdsa()'],['../structjwt_1_1algorithm_1_1ecdsa.html',1,'jwt::algorithm::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#aa6c66e731c2b597965768cdcdea29b9a',1,'jwt::algorithm::ed25519::ed25519()'],['../structjwt_1_1algorithm_1_1ed25519.html',1,'jwt::algorithm::ed25519']]], + ['ed448_5',['ed448',['../structjwt_1_1algorithm_1_1ed448.html#a4fa1fcbc8669ef749f65c39b8a976df7',1,'jwt::algorithm::ed448::ed448()'],['../structjwt_1_1algorithm_1_1ed448.html',1,'jwt::algorithm::ed448']]], + ['eddsa_6',['eddsa',['../structjwt_1_1algorithm_1_1eddsa.html#a35aca8602274c1d8afc8ed90532466d1',1,'jwt::algorithm::eddsa::eddsa()'],['../structjwt_1_1algorithm_1_1eddsa.html',1,'jwt::algorithm::eddsa']]], + ['encode_7',['encode',['../namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28',1,'jwt::base']]], + ['equals_5fclaim_8',['equals_claim',['../structjwt_1_1verify__ops_1_1equals__claim.html',1,'jwt::verify_ops']]], + ['es256_9',['es256',['../structjwt_1_1algorithm_1_1es256.html#aac62df85a6311e2e3bdfc8821a522127',1,'jwt::algorithm::es256::es256()'],['../structjwt_1_1algorithm_1_1es256.html',1,'jwt::algorithm::es256']]], + ['es256k_10',['es256k',['../structjwt_1_1algorithm_1_1es256k.html#ad88e35c7c3494b7da3024f019ab59097',1,'jwt::algorithm::es256k::es256k()'],['../structjwt_1_1algorithm_1_1es256k.html',1,'jwt::algorithm::es256k']]], + ['es384_11',['es384',['../structjwt_1_1algorithm_1_1es384.html#a820e0e6673d7c429bfd8bb272d57d849',1,'jwt::algorithm::es384::es384()'],['../structjwt_1_1algorithm_1_1es384.html',1,'jwt::algorithm::es384']]], + ['es512_12',['es512',['../structjwt_1_1algorithm_1_1es512.html#aa37f9fe9071c49b7f686fe382d20e7d7',1,'jwt::algorithm::es512::es512()'],['../structjwt_1_1algorithm_1_1es512.html',1,'jwt::algorithm::es512']]], + ['evp_5fpkey_5fhandle_13',['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#acb86af0e48ffe2b11113fb9efdec9958',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(const evp_pkey_handle &other)'],['../classjwt_1_1helper_1_1evp__pkey__handle.html#a5170ade548395a037843f04a109ff9cb',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(EVP_PKEY *key) noexcept'],['../classjwt_1_1helper_1_1evp__pkey__handle.html',1,'jwt::helper::evp_pkey_handle']]], + ['expires_5fat_5fleeway_14',['expires_at_leeway',['../classjwt_1_1verifier.html#a157d3a7b128aaac1b37a9ba47dd72718',1,'jwt::verifier']]], + ['extract_5fpubkey_5ffrom_5fcert_15',['extract_pubkey_from_cert',['../namespacejwt_1_1helper.html#a85fab72593fea9a3bb704464be2bfc18',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a8a102b1b679467ba520e8cae3ceed9da',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 000000000..546872a25 --- /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 000000000..aab5e736b --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['get_5falgorithm_0',['get_algorithm',['../classjwt_1_1jwk.html#a50b2c64b52a7028acfad1e4ac64c8e66',1,'jwt::jwk::get_algorithm()'],['../classjwt_1_1header.html#a8ac7e7c26859e172a3f0f22ded7b307f',1,'jwt::header::get_algorithm()']]], + ['get_5faudience_1',['get_audience',['../classjwt_1_1payload.html#a0131e3f94dc5deaef9f2128e61675ef3',1,'jwt::payload']]], + ['get_5fclaims_2',['get_claims',['../classjwt_1_1jwk.html#a5628cd17ea929a33e6d40eef5b073d0d',1,'jwt::jwk']]], + ['get_5fcontent_5ftype_3',['get_content_type',['../classjwt_1_1header.html#ae2cb8d327ed651286af732663ef23c44',1,'jwt::header']]], + ['get_5fcurve_4',['get_curve',['../classjwt_1_1jwk.html#a09d3afa0dcca94aee47c8cb9eb42dc9f',1,'jwt::jwk']]], + ['get_5fexpires_5fat_5',['get_expires_at',['../classjwt_1_1payload.html#adab036c2f63dad223d163ad6689938e5',1,'jwt::payload']]], + ['get_5fheader_6',['get_header',['../classjwt_1_1decoded__jwt.html#a00a77aedba4b77d9ee0a6f32307c2f92',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fbase64_7',['get_header_base64',['../classjwt_1_1decoded__jwt.html#af55156d334c665ad0b11cb6881d242c2',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fclaim_8',['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_9',['get_header_json',['../classjwt_1_1decoded__jwt.html#acc90b0d668345b0f3c41d382fe087a08',1,'jwt::decoded_jwt']]], + ['get_5fid_10',['get_id',['../classjwt_1_1payload.html#a0cb0076f6d6ca4c8acb498076c8f5721',1,'jwt::payload']]], + ['get_5fissued_5fat_11',['get_issued_at',['../classjwt_1_1payload.html#aa1efb5105a9c3efb49d08b8651069d15',1,'jwt::payload']]], + ['get_5fissuer_12',['get_issuer',['../classjwt_1_1payload.html#afbad104eceb35855baa247ec211eeac4',1,'jwt::payload']]], + ['get_5fjwk_13',['get_jwk',['../classjwt_1_1jwks.html#ab76e769ff422c308ee17ead4ea8d8d95',1,'jwt::jwks']]], + ['get_5fjwk_5fclaim_14',['get_jwk_claim',['../classjwt_1_1jwk.html#af814feaeb94f0394d14341e4e7024ebb',1,'jwt::jwk']]], + ['get_5fkey_5fid_15',['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_16',['get_key_operations',['../classjwt_1_1jwk.html#ae5f0bb1bc9728e721c62e7aa0ab1ce5a',1,'jwt::jwk']]], + ['get_5fkey_5ftype_17',['get_key_type',['../classjwt_1_1jwk.html#afcfb7ade4ffa503db7c5b92280b49514',1,'jwt::jwk']]], + ['get_5fnot_5fbefore_18',['get_not_before',['../classjwt_1_1payload.html#a60f492d8bda3225155b6f10f05273f35',1,'jwt::payload']]], + ['get_5fpayload_19',['get_payload',['../classjwt_1_1decoded__jwt.html#adb1dc325d49e01838e78e9cd809aaa2b',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fbase64_20',['get_payload_base64',['../classjwt_1_1decoded__jwt.html#aa137fa9dfcf54444901618bfa0fc2ac4',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fclaim_21',['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_22',['get_payload_json',['../classjwt_1_1decoded__jwt.html#a8a4dea7cc8187e496feaf3112a6de419',1,'jwt::decoded_jwt']]], + ['get_5fsignature_23',['get_signature',['../classjwt_1_1decoded__jwt.html#a715bf6407901d555442ba79e68e96ddb',1,'jwt::decoded_jwt']]], + ['get_5fsignature_5fbase64_24',['get_signature_base64',['../classjwt_1_1decoded__jwt.html#a0210f5688a6b0327b781fbd3d6e124f7',1,'jwt::decoded_jwt']]], + ['get_5fsubject_25',['get_subject',['../classjwt_1_1payload.html#adb0c71f6a7ea21910314ff4372a945dd',1,'jwt::payload']]], + ['get_5ftoken_26',['get_token',['../classjwt_1_1decoded__jwt.html#ac6dce886f27c3a5afadea6ae991063fb',1,'jwt::decoded_jwt']]], + ['get_5ftype_27',['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_28',['get_use',['../classjwt_1_1jwk.html#a8581a05f8628ce98a898e36fb30649df',1,'jwt::jwk']]], + ['get_5fx5c_29',['get_x5c',['../classjwt_1_1jwk.html#a50c5eb1410fc69363527329efd58d09c',1,'jwt::jwk']]], + ['get_5fx5c_5fkey_5fvalue_30',['get_x5c_key_value',['../classjwt_1_1jwk.html#a5e3675060ca4b75d675ed4a301abac95',1,'jwt::jwk']]], + ['get_5fx5t_31',['get_x5t',['../classjwt_1_1jwk.html#a5a1e7e2940e23e2e2a4f64e1db9d5f38',1,'jwt::jwk']]], + ['get_5fx5t_5fsha256_32',['get_x5t_sha256',['../classjwt_1_1jwk.html#a6f49dc9f0e73b9f34044ee56b49c8baa',1,'jwt::jwk']]], + ['get_5fx5u_33',['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 000000000..34a9dfb23 --- /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_1jwk.html#a8fd4f19ffb59645a70182aa53ee773d8',1,'jwt::jwk::has_key_id()'],['../classjwt_1_1header.html#af8fb4b77c7c066bb4a6ffefc0d459000',1,'jwt::header::has_key_id()']]], + ['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_1decoded__jwt.html#a1029396a3c9d1a6a9946ab000546b58f',1,'jwt::decoded_jwt::header'],['../classjwt_1_1header.html',1,'jwt::header< json_traits >']]], + ['header_5fbase64_24',['header_base64',['../classjwt_1_1decoded__jwt.html#a1b5eb0489af7f8158779b59d03bc0431',1,'jwt::decoded_jwt']]], + ['hmacsha_25',['hmacsha',['../structjwt_1_1algorithm_1_1hmacsha.html#adae33c918a428ab910dc83384f15136c',1,'jwt::algorithm::hmacsha::hmacsha()'],['../structjwt_1_1algorithm_1_1hmacsha.html',1,'jwt::algorithm::hmacsha']]], + ['hs256_26',['hs256',['../structjwt_1_1algorithm_1_1hs256.html#aeba2d057f0864940ac7970df581a2202',1,'jwt::algorithm::hs256::hs256()'],['../structjwt_1_1algorithm_1_1hs256.html',1,'jwt::algorithm::hs256']]], + ['hs384_27',['hs384',['../structjwt_1_1algorithm_1_1hs384.html#adf9de575602f35da6872d0bc29768d32',1,'jwt::algorithm::hs384::hs384()'],['../structjwt_1_1algorithm_1_1hs384.html',1,'jwt::algorithm::hs384']]], + ['hs512_28',['hs512',['../structjwt_1_1algorithm_1_1hs512.html#aa78caccdfba79b545cd18d94fd9b5da2',1,'jwt::algorithm::hs512::hs512()'],['../structjwt_1_1algorithm_1_1hs512.html',1,'jwt::algorithm::hs512']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..5af00e98b --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,7 @@ +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']]], + ['issued_5fat_5fleeway_3',['issued_at_leeway',['../classjwt_1_1verifier.html#a6d5c5569c3ec1f91393ea4dcf6c3e21f',1,'jwt::verifier']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..4f03fb8bb --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['algorithm_0',['algorithm',['../namespacejwt_1_1algorithm.html',1,'jwt']]], + ['alphabet_1',['alphabet',['../namespacejwt_1_1alphabet.html',1,'jwt']]], + ['base_2',['base',['../namespacejwt_1_1base.html',1,'jwt']]], + ['error_3',['error',['../namespacejwt_1_1error.html',1,'jwt']]], + ['helper_4',['helper',['../namespacejwt_1_1helper.html',1,'jwt']]], + ['json_5',['json',['../namespacejwt_1_1json.html',1,'jwt']]], + ['json_20traits_6',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['jwk_7',['jwk',['../classjwt_1_1jwk.html',1,'jwt']]], + ['jwks_8',['jwks',['../classjwt_1_1jwks.html',1,'jwt']]], + ['jwt_9',['jwt',['../namespacejwt.html',1,'']]], + ['jwt_2dcpp_10',['JWT-CPP',['../index.html',1,'']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..0391e2d8b --- /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 000000000..2714d308f --- /dev/null +++ b/search/all_b.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#aec26aaa1b60b17039046cd5043a520f8',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aa14d03fa5947ac066d8890a050116b93',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#aff6d5a71d864f47402606ce7d22ae5aa',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a026ca0f48025b1ec3502e3ea42efd2ab',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 000000000..c46f27c4b --- /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 000000000..d0bd91040 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,7 @@ +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']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..39db78cfd --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['object_5ftype_0',['object_type',['../structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html',1,'jwt::traits::danielaparker_jsoncons']]], + ['operator_3c_3c_1',['operator<<',['../classjwt_1_1basic__claim.html#acb0dd9d4a9c683a33877b56c386a1428',1,'jwt::basic_claim']]], + ['operator_3e_3e_2',['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 000000000..d5801405d --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['parse_5fjwk_0',['parse_jwk',['../namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0',1,'jwt::parse_jwk(const typename json_traits::string_type &jwk_)'],['../namespacejwt.html#a400ddb1cef610c92831bd577fd81d4e6',1,'jwt::parse_jwk(const traits::boost_json::string_type &token)']]], + ['parse_5fjwks_1',['parse_jwks',['../namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec',1,'jwt::parse_jwks(const typename json_traits::string_type &jwks_)'],['../namespacejwt.html#a19ba6f93afb62925496c134f15c89116',1,'jwt::parse_jwks(const traits::boost_json::string_type &token)']]], + ['payload_2',['payload',['../classjwt_1_1payload.html',1,'jwt::payload< json_traits >'],['../classjwt_1_1decoded__jwt.html#af9b33ca8b170b91f255ff7afe9fbf3c1',1,'jwt::decoded_jwt::payload']]], + ['payload_5fbase64_3',['payload_base64',['../classjwt_1_1decoded__jwt.html#af9013de47f7e628c23b80f55d84b03d1',1,'jwt::decoded_jwt']]], + ['ps256_4',['ps256',['../structjwt_1_1algorithm_1_1ps256.html',1,'jwt::algorithm::ps256'],['../structjwt_1_1algorithm_1_1ps256.html#a58a149697a0a03d79f955c2698233637',1,'jwt::algorithm::ps256::ps256()']]], + ['ps384_5',['ps384',['../structjwt_1_1algorithm_1_1ps384.html',1,'jwt::algorithm::ps384'],['../structjwt_1_1algorithm_1_1ps384.html#a5a9548f6f07d1dbcea66a17c32cdcb71',1,'jwt::algorithm::ps384::ps384()']]], + ['ps512_6',['ps512',['../structjwt_1_1algorithm_1_1ps512.html',1,'jwt::algorithm::ps512'],['../structjwt_1_1algorithm_1_1ps512.html#aeffb86b581f7a6c82a485672527fccb4',1,'jwt::algorithm::ps512::ps512()']]], + ['pss_7',['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 000000000..abf1bda9c --- /dev/null +++ b/search/classes_0.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_1.js b/search/classes_1.js new file mode 100644 index 000000000..926c94fa4 --- /dev/null +++ b/search/classes_1.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_2.js b/search/classes_2.js new file mode 100644 index 000000000..a1b62a8f6 --- /dev/null +++ b/search/classes_2.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_3.js b/search/classes_3.js new file mode 100644 index 000000000..09d4eb2a4 --- /dev/null +++ b/search/classes_3.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_4.js b/search/classes_4.js new file mode 100644 index 000000000..cdf92ea53 --- /dev/null +++ b/search/classes_4.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_5.js b/search/classes_5.js new file mode 100644 index 000000000..bd757e779 --- /dev/null +++ b/search/classes_5.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_6.js b/search/classes_6.js new file mode 100644 index 000000000..e24e33cff --- /dev/null +++ b/search/classes_6.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_7.js b/search/classes_7.js new file mode 100644 index 000000000..0391e2d8b --- /dev/null +++ b/search/classes_7.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_8.js b/search/classes_8.js new file mode 100644 index 000000000..d55fa8a6d --- /dev/null +++ b/search/classes_8.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_9.js b/search/classes_9.js new file mode 100644 index 000000000..b5280afbd --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['object_5ftype_0',['object_type',['../structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html',1,'jwt::traits::danielaparker_jsoncons']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..3a962cbd4 --- /dev/null +++ b/search/classes_a.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_b.js b/search/classes_b.js new file mode 100644 index 000000000..860b075ad --- /dev/null +++ b/search/classes_b.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_c.js b/search/classes_c.js new file mode 100644 index 000000000..c1d9d5ec1 --- /dev/null +++ b/search/classes_c.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_d.js b/search/classes_d.js new file mode 100644 index 000000000..78bea800c --- /dev/null +++ b/search/classes_d.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_e.js b/search/classes_e.js new file mode 100644 index 000000000..e02960835 --- /dev/null +++ b/search/classes_e.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 000000000..337d6cc13 --- /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 000000000..b7670d6e9 --- /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 000000000..2edd1e114 --- /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 000000000..d58f1a94a --- /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 000000000..8ba1c33cf --- /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/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..4d21ccf62 --- /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 000000000..542ca950c --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,6 @@ +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#a2c5962f1775bac1a99e326e761b2e05e',1,'jwt::create()'],['../namespacejwt.html#a119b3861d510205d5c626b794c06d020',1,'jwt::create()']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..7830ef909 --- /dev/null +++ b/search/functions_10.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 000000000..74be7011d --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['decode_0',['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#ae63bcbdf9caf43a79f3c140708552761',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)']]], + ['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_3.js b/search/functions_3.js new file mode 100644 index 000000000..442af4fd9 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,16 @@ +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']]], + ['encode_5',['encode',['../namespacejwt_1_1base.html#ad2ca00edb94734c69742a1aa867e9d28',1,'jwt::base']]], + ['es256_6',['es256',['../structjwt_1_1algorithm_1_1es256.html#aac62df85a6311e2e3bdfc8821a522127',1,'jwt::algorithm::es256']]], + ['es256k_7',['es256k',['../structjwt_1_1algorithm_1_1es256k.html#ad88e35c7c3494b7da3024f019ab59097',1,'jwt::algorithm::es256k']]], + ['es384_8',['es384',['../structjwt_1_1algorithm_1_1es384.html#a820e0e6673d7c429bfd8bb272d57d849',1,'jwt::algorithm::es384']]], + ['es512_9',['es512',['../structjwt_1_1algorithm_1_1es512.html#aa37f9fe9071c49b7f686fe382d20e7d7',1,'jwt::algorithm::es512']]], + ['evp_5fpkey_5fhandle_10',['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#a5170ade548395a037843f04a109ff9cb',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(EVP_PKEY *key) noexcept'],['../classjwt_1_1helper_1_1evp__pkey__handle.html#acb86af0e48ffe2b11113fb9efdec9958',1,'jwt::helper::evp_pkey_handle::evp_pkey_handle(const evp_pkey_handle &other)']]], + ['expires_5fat_5fleeway_11',['expires_at_leeway',['../classjwt_1_1verifier.html#a157d3a7b128aaac1b37a9ba47dd72718',1,'jwt::verifier']]], + ['extract_5fpubkey_5ffrom_5fcert_12',['extract_pubkey_from_cert',['../namespacejwt_1_1helper.html#a85fab72593fea9a3bb704464be2bfc18',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a8a102b1b679467ba520e8cae3ceed9da',1,'jwt::helper::extract_pubkey_from_cert(const std::string &certstr, const std::string &pw="")']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..aab5e736b --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['get_5falgorithm_0',['get_algorithm',['../classjwt_1_1jwk.html#a50b2c64b52a7028acfad1e4ac64c8e66',1,'jwt::jwk::get_algorithm()'],['../classjwt_1_1header.html#a8ac7e7c26859e172a3f0f22ded7b307f',1,'jwt::header::get_algorithm()']]], + ['get_5faudience_1',['get_audience',['../classjwt_1_1payload.html#a0131e3f94dc5deaef9f2128e61675ef3',1,'jwt::payload']]], + ['get_5fclaims_2',['get_claims',['../classjwt_1_1jwk.html#a5628cd17ea929a33e6d40eef5b073d0d',1,'jwt::jwk']]], + ['get_5fcontent_5ftype_3',['get_content_type',['../classjwt_1_1header.html#ae2cb8d327ed651286af732663ef23c44',1,'jwt::header']]], + ['get_5fcurve_4',['get_curve',['../classjwt_1_1jwk.html#a09d3afa0dcca94aee47c8cb9eb42dc9f',1,'jwt::jwk']]], + ['get_5fexpires_5fat_5',['get_expires_at',['../classjwt_1_1payload.html#adab036c2f63dad223d163ad6689938e5',1,'jwt::payload']]], + ['get_5fheader_6',['get_header',['../classjwt_1_1decoded__jwt.html#a00a77aedba4b77d9ee0a6f32307c2f92',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fbase64_7',['get_header_base64',['../classjwt_1_1decoded__jwt.html#af55156d334c665ad0b11cb6881d242c2',1,'jwt::decoded_jwt']]], + ['get_5fheader_5fclaim_8',['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_9',['get_header_json',['../classjwt_1_1decoded__jwt.html#acc90b0d668345b0f3c41d382fe087a08',1,'jwt::decoded_jwt']]], + ['get_5fid_10',['get_id',['../classjwt_1_1payload.html#a0cb0076f6d6ca4c8acb498076c8f5721',1,'jwt::payload']]], + ['get_5fissued_5fat_11',['get_issued_at',['../classjwt_1_1payload.html#aa1efb5105a9c3efb49d08b8651069d15',1,'jwt::payload']]], + ['get_5fissuer_12',['get_issuer',['../classjwt_1_1payload.html#afbad104eceb35855baa247ec211eeac4',1,'jwt::payload']]], + ['get_5fjwk_13',['get_jwk',['../classjwt_1_1jwks.html#ab76e769ff422c308ee17ead4ea8d8d95',1,'jwt::jwks']]], + ['get_5fjwk_5fclaim_14',['get_jwk_claim',['../classjwt_1_1jwk.html#af814feaeb94f0394d14341e4e7024ebb',1,'jwt::jwk']]], + ['get_5fkey_5fid_15',['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_16',['get_key_operations',['../classjwt_1_1jwk.html#ae5f0bb1bc9728e721c62e7aa0ab1ce5a',1,'jwt::jwk']]], + ['get_5fkey_5ftype_17',['get_key_type',['../classjwt_1_1jwk.html#afcfb7ade4ffa503db7c5b92280b49514',1,'jwt::jwk']]], + ['get_5fnot_5fbefore_18',['get_not_before',['../classjwt_1_1payload.html#a60f492d8bda3225155b6f10f05273f35',1,'jwt::payload']]], + ['get_5fpayload_19',['get_payload',['../classjwt_1_1decoded__jwt.html#adb1dc325d49e01838e78e9cd809aaa2b',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fbase64_20',['get_payload_base64',['../classjwt_1_1decoded__jwt.html#aa137fa9dfcf54444901618bfa0fc2ac4',1,'jwt::decoded_jwt']]], + ['get_5fpayload_5fclaim_21',['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_22',['get_payload_json',['../classjwt_1_1decoded__jwt.html#a8a4dea7cc8187e496feaf3112a6de419',1,'jwt::decoded_jwt']]], + ['get_5fsignature_23',['get_signature',['../classjwt_1_1decoded__jwt.html#a715bf6407901d555442ba79e68e96ddb',1,'jwt::decoded_jwt']]], + ['get_5fsignature_5fbase64_24',['get_signature_base64',['../classjwt_1_1decoded__jwt.html#a0210f5688a6b0327b781fbd3d6e124f7',1,'jwt::decoded_jwt']]], + ['get_5fsubject_25',['get_subject',['../classjwt_1_1payload.html#adb0c71f6a7ea21910314ff4372a945dd',1,'jwt::payload']]], + ['get_5ftoken_26',['get_token',['../classjwt_1_1decoded__jwt.html#ac6dce886f27c3a5afadea6ae991063fb',1,'jwt::decoded_jwt']]], + ['get_5ftype_27',['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_28',['get_use',['../classjwt_1_1jwk.html#a8581a05f8628ce98a898e36fb30649df',1,'jwt::jwk']]], + ['get_5fx5c_29',['get_x5c',['../classjwt_1_1jwk.html#a50c5eb1410fc69363527329efd58d09c',1,'jwt::jwk']]], + ['get_5fx5c_5fkey_5fvalue_30',['get_x5c_key_value',['../classjwt_1_1jwk.html#a5e3675060ca4b75d675ed4a301abac95',1,'jwt::jwk']]], + ['get_5fx5t_31',['get_x5t',['../classjwt_1_1jwk.html#a5a1e7e2940e23e2e2a4f64e1db9d5f38',1,'jwt::jwk']]], + ['get_5fx5t_5fsha256_32',['get_x5t_sha256',['../classjwt_1_1jwk.html#a6f49dc9f0e73b9f34044ee56b49c8baa',1,'jwt::jwk']]], + ['get_5fx5u_33',['get_x5u',['../classjwt_1_1jwk.html#af9e5af688ecdc3c88579ba5bfcfa4f17',1,'jwt::jwk']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..d038e8aa1 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['has_5falgorithm_0',['has_algorithm',['../classjwt_1_1jwk.html#a7791ca410ed90a89a4325b990efdb1bd',1,'jwt::jwk::has_algorithm()'],['../classjwt_1_1header.html#a59cc46de655365a8c1d99c60828051c0',1,'jwt::header::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_6.js b/search/functions_6.js new file mode 100644 index 000000000..9b37427cb --- /dev/null +++ b/search/functions_6.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_7.js b/search/functions_7.js new file mode 100644 index 000000000..2714d308f --- /dev/null +++ b/search/functions_7.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#aec26aaa1b60b17039046cd5043a520f8',1,'jwt::helper::load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#aa14d03fa5947ac066d8890a050116b93',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#aff6d5a71d864f47402606ce7d22ae5aa',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)'],['../namespacejwt_1_1helper.html#a026ca0f48025b1ec3502e3ea42efd2ab',1,'jwt::helper::load_public_key_from_string(const std::string &key, const std::string &password="")']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..c46f27c4b --- /dev/null +++ b/search/functions_8.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_9.js b/search/functions_9.js new file mode 100644 index 000000000..ebbac3070 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,5 @@ +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']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..262cf4f69 --- /dev/null +++ b/search/functions_a.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_b.js b/search/functions_b.js new file mode 100644 index 000000000..29fe48f9c --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parse_5fjwk_0',['parse_jwk',['../namespacejwt.html#a8948012a32d2d558ced39f6101c5c7e0',1,'jwt::parse_jwk(const typename json_traits::string_type &jwk_)'],['../namespacejwt.html#a400ddb1cef610c92831bd577fd81d4e6',1,'jwt::parse_jwk(const traits::boost_json::string_type &token)']]], + ['parse_5fjwks_1',['parse_jwks',['../namespacejwt.html#a978368e4ebd959166629b689fbe3e4ec',1,'jwt::parse_jwks(const typename json_traits::string_type &jwks_)'],['../namespacejwt.html#a19ba6f93afb62925496c134f15c89116',1,'jwt::parse_jwks(const traits::boost_json::string_type &token)']]], + ['ps256_2',['ps256',['../structjwt_1_1algorithm_1_1ps256.html#a58a149697a0a03d79f955c2698233637',1,'jwt::algorithm::ps256']]], + ['ps384_3',['ps384',['../structjwt_1_1algorithm_1_1ps384.html#a5a9548f6f07d1dbcea66a17c32cdcb71',1,'jwt::algorithm::ps384']]], + ['ps512_4',['ps512',['../structjwt_1_1algorithm_1_1ps512.html#aeffb86b581f7a6c82a485672527fccb4',1,'jwt::algorithm::ps512']]], + ['pss_5',['pss',['../structjwt_1_1algorithm_1_1pss.html#ac42f049712066e8c8b41433185177b01',1,'jwt::algorithm::pss']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..657a0705e --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['rs256_0',['rs256',['../structjwt_1_1algorithm_1_1rs256.html#aa87ccde15aad4ad592fa4ac0a2a5f748',1,'jwt::algorithm::rs256']]], + ['rs384_1',['rs384',['../structjwt_1_1algorithm_1_1rs384.html#a3f5bada82c323b97a6b1c5777bc512ef',1,'jwt::algorithm::rs384']]], + ['rs512_2',['rs512',['../structjwt_1_1algorithm_1_1rs512.html#aa3331d1fbe994d97ee57ffdabd05eb1b',1,'jwt::algorithm::rs512']]], + ['rsa_3',['rsa',['../structjwt_1_1algorithm_1_1rsa.html#a505ccbff5695e94370cc4549c2426bc7',1,'jwt::algorithm::rsa']]], + ['rsa_5ferror_5fcategory_4',['rsa_error_category',['../namespacejwt_1_1error.html#a7fd09a10a0c499fe063293a10caf89e9',1,'jwt::error']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..fb2d367a8 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['set_5falgorithm_0',['set_algorithm',['../classjwt_1_1builder.html#ad6a378577e46c3e12f3242c625f2f623',1,'jwt::builder']]], + ['set_5faudience_1',['set_audience',['../classjwt_1_1builder.html#a20358aa8be0179eaa53055aaca8a7f21',1,'jwt::builder::set_audience(typename json_traits::array_type a)'],['../classjwt_1_1builder.html#a1e764196824144648b2b2c490bdc328d',1,'jwt::builder::set_audience(typename json_traits::string_type aud)']]], + ['set_5fcontent_5ftype_2',['set_content_type',['../classjwt_1_1builder.html#a66d603ae007cb796667b4abd095e06cb',1,'jwt::builder']]], + ['set_5fexpires_5fat_3',['set_expires_at',['../classjwt_1_1builder.html#ae3de63621c8f7b3da8415030225cd67e',1,'jwt::builder']]], + ['set_5fheader_5fclaim_4',['set_header_claim',['../classjwt_1_1builder.html#ac8f57f1c8d27e6117c508a3619ed4561',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#a388749e54d6b89b9da6a75494fb0757e',1,'jwt::builder::set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fid_5',['set_id',['../classjwt_1_1builder.html#a95583374b3f692fa84833a0e08575665',1,'jwt::builder']]], + ['set_5fissued_5fat_6',['set_issued_at',['../classjwt_1_1builder.html#a92bfe54290a13c640db23240536993c7',1,'jwt::builder']]], + ['set_5fissuer_7',['set_issuer',['../classjwt_1_1builder.html#ab6f6203620218fbdec21c5afda7d11fc',1,'jwt::builder']]], + ['set_5fkey_5fid_8',['set_key_id',['../classjwt_1_1builder.html#ab5bc32a6f2cd89f65e558fd38dae21b0',1,'jwt::builder']]], + ['set_5fnot_5fbefore_9',['set_not_before',['../classjwt_1_1builder.html#a82784887801a2fcf4b132b03444a4da7',1,'jwt::builder']]], + ['set_5fpayload_5fclaim_10',['set_payload_claim',['../classjwt_1_1builder.html#a0d63ee3ba1a3bf7047239e8502e565ab',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)'],['../classjwt_1_1builder.html#a42e050718f31a284e08142030ca91930',1,'jwt::builder::set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)']]], + ['set_5fsubject_11',['set_subject',['../classjwt_1_1builder.html#a4506fc0956549155546d4c80fa94ae45',1,'jwt::builder']]], + ['set_5ftype_12',['set_type',['../classjwt_1_1builder.html#aaa284acea472b10e6a1ee142336a01aa',1,'jwt::builder']]], + ['sign_13',['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#a1e594d5e35cbd6b799acb1a247618a40',1,'jwt::builder::sign(const Algo &algo, Encode encode) const'],['../classjwt_1_1builder.html#a18ede7eb3d5502f17f2b7c3cf31d2f1c',1,'jwt::builder::sign(const Algo &algo) const'],['../classjwt_1_1builder.html#aff43371359a2f8bc6cabd2c976050233',1,'jwt::builder::sign(const Algo &algo, Encode encode, std::error_code &ec) const'],['../classjwt_1_1builder.html#ad7d743a548c14c91c87450929cda8bb9',1,'jwt::builder::sign(const Algo &algo, std::error_code &ec) const']]], + ['signature_5fgeneration_5ferror_5fcategory_14',['signature_generation_error_category',['../namespacejwt_1_1error.html#a86c5b0c1df898d66161455b323b8053e',1,'jwt::error']]], + ['signature_5fverification_5ferror_5fcategory_15',['signature_verification_error_category',['../namespacejwt_1_1error.html#a7c0e4691aa8c55743300cd068ad23aec',1,'jwt::error']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..4403dae69 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,6 @@ +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']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..c1bcd535f --- /dev/null +++ b/search/functions_f.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#aac658f79d5123d53c3edcbecbbbdc149',1,'jwt::verify()']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /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 000000000..4122773f9 --- /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 000000000..553dba877 --- /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 000000000..c906f84c8 --- /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 000000000..b50e78ce2 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['algorithm_0',['algorithm',['../namespacejwt_1_1algorithm.html',1,'jwt']]], + ['alphabet_1',['alphabet',['../namespacejwt_1_1alphabet.html',1,'jwt']]], + ['base_2',['base',['../namespacejwt_1_1base.html',1,'jwt']]], + ['error_3',['error',['../namespacejwt_1_1error.html',1,'jwt']]], + ['helper_4',['helper',['../namespacejwt_1_1helper.html',1,'jwt']]], + ['json_5',['json',['../namespacejwt_1_1json.html',1,'jwt']]], + ['jwt_6',['jwt',['../namespacejwt.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..412e118ce --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cryptography_20libraries_0',['Cryptography Libraries',['../md_docs_2ssl.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..546872a25 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['frequently_20asked_20questions_0',['Frequently Asked Questions',['../md_docs_2faqs.html',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 000000000..6fc08060c --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['json_20traits_0',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['jwt_2dcpp_1',['JWT-CPP',['../index.html',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 000000000..587c8b7f1 --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reporting_20security_20issues_0',['Reporting Security Issues',['../md__8github_2security.html',1,'']]] +]; diff --git a/search/pages_4.js b/search/pages_4.js new file mode 100644 index 000000000..f094e9b74 --- /dev/null +++ b/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['signing_20tokens_0',['Signing Tokens',['../md_docs_2signing.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..d7b0f90b7 --- /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 000000000..9b7a52a19 --- /dev/null +++ b/search/search.js @@ -0,0 +1,820 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var 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) + { + 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 + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var 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'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var 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(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var 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) + { + var 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); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var focusItem; + while (1) + { + var 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) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // 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 + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var 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 + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var 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) + { + var 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 + { + var newIndex = childIndex+1; + var 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 + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +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); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/structjwt_1_1algorithm_1_1ecdsa-members.html b/structjwt_1_1algorithm_1_1ecdsa-members.html new file mode 100644 index 000000000..2eafdbba9 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..4dcbaa4a5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ecdsa.html @@ -0,0 +1,340 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ecdsa Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ecdsa.js b/structjwt_1_1algorithm_1_1ecdsa.js new file mode 100644 index 000000000..69c4e9000 --- /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 000000000..f3127b032 --- /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 000000000..526273a3b --- /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 000000000..1f64fd679 --- /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 000000000..649f74614 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..edc8cebe4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519.html @@ -0,0 +1,199 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ed25519 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519.js b/structjwt_1_1algorithm_1_1ed25519.js new file mode 100644 index 000000000..048afc4e4 --- /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 000000000..eb2432065 --- /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 000000000..5d6377425 --- /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 000000000..12ab39679 --- /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 000000000..c045bca57 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..a113f96a5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448.html @@ -0,0 +1,199 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ed448 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed448.js b/structjwt_1_1algorithm_1_1ed448.js new file mode 100644 index 000000000..3acc36b52 --- /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 000000000..f795de386 --- /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 000000000..5d508863c --- /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 000000000..f146780cc --- /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 000000000..4258e5d66 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..a6c1d9b71 --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa.html @@ -0,0 +1,327 @@ + + + + + + + +JWT-CPP: jwt::algorithm::eddsa Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa.js b/structjwt_1_1algorithm_1_1eddsa.js new file mode 100644 index 000000000..8ff501b4d --- /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 000000000..5ca31a43a --- /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 000000000..f8086c4b1 --- /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 000000000..cc9010374 --- /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 000000000..57d7fceda --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..20e6a36ad --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es256 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256.js b/structjwt_1_1algorithm_1_1es256.js new file mode 100644 index 000000000..b0426f883 --- /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 000000000..0ea1596ae --- /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 000000000..b8521bed8 --- /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 000000000..385dd6e56 --- /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 000000000..6fe6a7b92 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..3feb7df2c --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es256k Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256k.js b/structjwt_1_1algorithm_1_1es256k.js new file mode 100644 index 000000000..9e464728f --- /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 000000000..fc21cc518 --- /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 000000000..4e3f28d87 --- /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 000000000..2e65dc7a4 --- /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 000000000..09a49540e --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..d55f9fef1 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es384 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es384.js b/structjwt_1_1algorithm_1_1es384.js new file mode 100644 index 000000000..cac769b51 --- /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 000000000..ba2f6a396 --- /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 000000000..ff51f235b --- /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 000000000..d9d24f398 --- /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 000000000..fe64b1260 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..66e3d4dfd --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::es512 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es512.js b/structjwt_1_1algorithm_1_1es512.js new file mode 100644 index 000000000..fc4a64cf8 --- /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 000000000..6c8eb2428 --- /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 000000000..1061e3195 --- /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 000000000..d48d39d9a --- /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 000000000..cd0ed4b9b --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..26bf00ca1 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha.html @@ -0,0 +1,315 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hmacsha Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha.js b/structjwt_1_1algorithm_1_1hmacsha.js new file mode 100644 index 000000000..4862ebc48 --- /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 000000000..38a7ffa65 --- /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 000000000..84f7d3cbd --- /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 000000000..6358609b2 --- /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 000000000..67b20632f --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..532e7f70f --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256.html @@ -0,0 +1,172 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs256 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs256.js b/structjwt_1_1algorithm_1_1hs256.js new file mode 100644 index 000000000..8c870ca79 --- /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 000000000..2e9d09d92 --- /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 000000000..5fe81153a --- /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 000000000..e22d17193 --- /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 000000000..b54c93858 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..deaac3275 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384.html @@ -0,0 +1,172 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs384 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs384.js b/structjwt_1_1algorithm_1_1hs384.js new file mode 100644 index 000000000..81fb09104 --- /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 000000000..049f7da10 --- /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 000000000..4a720aebe --- /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 000000000..641951fd8 --- /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 000000000..90a105d01 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..138980062 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512.html @@ -0,0 +1,172 @@ + + + + + + + +JWT-CPP: jwt::algorithm::hs512 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs512.js b/structjwt_1_1algorithm_1_1hs512.js new file mode 100644 index 000000000..55000cc3a --- /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 000000000..55ee94e02 --- /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 000000000..1becc04b9 --- /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 000000000..e1f3211b2 --- /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 000000000..e64aa6dd2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1none-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..ec3e8803e --- /dev/null +++ b/structjwt_1_1algorithm_1_1none.html @@ -0,0 +1,190 @@ + + + + + + + +JWT-CPP: jwt::algorithm::none Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1none.js b/structjwt_1_1algorithm_1_1none.js new file mode 100644 index 000000000..31b294c3e --- /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 000000000..fb5439d59 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..c88c6c030 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps256 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps256.js b/structjwt_1_1algorithm_1_1ps256.js new file mode 100644 index 000000000..a38e13585 --- /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 000000000..8a4e9009e --- /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 000000000..76e40132d --- /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 000000000..11df54aed --- /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 000000000..14ea32ca2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..1cf03e748 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps384 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps384.js b/structjwt_1_1algorithm_1_1ps384.js new file mode 100644 index 000000000..158ae0c86 --- /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 000000000..03a9b9850 --- /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 000000000..a65811f20 --- /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 000000000..dbd7c737f --- /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 000000000..7c4fad530 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..448a15978 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::ps512 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps512.js b/structjwt_1_1algorithm_1_1ps512.js new file mode 100644 index 000000000..ccf3c89a9 --- /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 000000000..b0923f05d --- /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 000000000..f71f7b3fe --- /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 000000000..5695c0db2 --- /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 000000000..a1c9360b6 --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..cfe6f4d4e --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss.html @@ -0,0 +1,332 @@ + + + + + + + +JWT-CPP: jwt::algorithm::pss Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1pss.js b/structjwt_1_1algorithm_1_1pss.js new file mode 100644 index 000000000..dae32b0ba --- /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 000000000..6d35c8330 --- /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 000000000..b40400a32 --- /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 000000000..572b50235 --- /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 000000000..4e4c46112 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..f414742ba --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs256 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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="")
     
    - 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

    +

    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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs256.js b/structjwt_1_1algorithm_1_1rs256.js new file mode 100644 index 000000000..2fdca23e1 --- /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 000000000..dcad1931d --- /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 000000000..7ec792a60 --- /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 000000000..0f9ebb7c5 --- /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 000000000..b35ffcd27 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..26e23e057 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs384 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs384.js b/structjwt_1_1algorithm_1_1rs384.js new file mode 100644 index 000000000..3af7d03e1 --- /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 000000000..dd01df38c --- /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 000000000..4a3e39d06 --- /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 000000000..4638ec5dd --- /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 000000000..b113a9b42 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..6e003be9d --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512.html @@ -0,0 +1,197 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rs512 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs512.js b/structjwt_1_1algorithm_1_1rs512.js new file mode 100644 index 000000000..7069663b5 --- /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 000000000..837098183 --- /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 000000000..93745d16b --- /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 000000000..4e8632122 --- /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 000000000..dc2ae6fbe --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..0cd3c4f8b --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa.html @@ -0,0 +1,334 @@ + + + + + + + +JWT-CPP: jwt::algorithm::rsa Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 <algorithms.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: +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rsa.js b/structjwt_1_1algorithm_1_1rsa.js new file mode 100644 index 000000000..1eaee175e --- /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 000000000..ea6a8123a --- /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 000000000..2b26a0d4f --- /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 000000000..0e4b747c7 --- /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 000000000..12721933c --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1base64.html b/structjwt_1_1alphabet_1_1base64.html new file mode 100644 index 000000000..651d1c86c --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64.html @@ -0,0 +1,133 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64 Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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::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 000000000..eca72b6a8 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    + + + + diff --git a/structjwt_1_1alphabet_1_1base64url.html b/structjwt_1_1alphabet_1_1base64url.html new file mode 100644 index 000000000..f7a137ec8 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64url Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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::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 000000000..2c4737b9f --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..0d2aa526e --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html @@ -0,0 +1,133 @@ + + + + + + + +JWT-CPP: jwt::alphabet::helper::base64url_percent_encoding Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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::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 000000000..4c891d65a --- /dev/null +++ b/structjwt_1_1default__clock-members.html @@ -0,0 +1,112 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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() const (defined in jwt::default_clock)jwt::default_clockinline
    +
    + + + + diff --git a/structjwt_1_1default__clock.html b/structjwt_1_1default__clock.html new file mode 100644 index 000000000..21c346727 --- /dev/null +++ b/structjwt_1_1default__clock.html @@ -0,0 +1,126 @@ + + + + + + + +JWT-CPP: jwt::default_clock Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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.

    +

    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-members.html b/structjwt_1_1error_1_1claim__not__present__exception-members.html new file mode 100644 index 000000000..92400e585 --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception-members.html @@ -0,0 +1,112 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..a4f8a507b --- /dev/null +++ b/structjwt_1_1error_1_1claim__not__present__exception.html @@ -0,0 +1,123 @@ + + + + + + + +JWT-CPP: jwt::error::claim_not_present_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..e93efbabb --- /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 000000000..05340f289 --- /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 000000000..7cbe5cb18 --- /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 000000000..92cde81b8 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: jwt::error::ecdsa_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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: +
    +
    + + + + 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 000000000..e2843bc30 --- /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 000000000..5d827f34b --- /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 000000000..923e4b77d --- /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 000000000..9582d4e07 --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception-members.html @@ -0,0 +1,112 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..7c887261d --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception.html @@ -0,0 +1,123 @@ + + + + + + + +JWT-CPP: jwt::error::invalid_json_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..5769fe433 --- /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 000000000..fa5a6edb6 --- /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 000000000..f68cb8088 --- /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 000000000..06e89dae8 --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: jwt::error::rsa_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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: +
    +
    + + + + 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 000000000..d67a95b56 --- /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 000000000..cb1aa2052 --- /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 000000000..3109c00d4 --- /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 000000000..f116f24db --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: jwt::error::signature_generation_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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: +
    +
    + + + + 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 000000000..fffb2d1bd --- /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 000000000..31312e16b --- /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 000000000..bd7b440f2 --- /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 000000000..259c86c9c --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: jwt::error::signature_verification_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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: +
    +
    + + + + 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 000000000..30d7c660c --- /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 000000000..be14f6777 --- /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 000000000..896841c2a --- /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 000000000..c8c6ccd39 --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: jwt::error::token_verification_exception Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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: +
    +
    + + + + 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 000000000..c484ec40b --- /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 000000000..aa0d90cec --- /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 000000000..8ce255c85 --- /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 000000000..7e0258799 --- /dev/null +++ b/structjwt_1_1traits_1_1boost__json-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..593eb34b5 --- /dev/null +++ b/structjwt_1_1traits_1_1boost__json.html @@ -0,0 +1,171 @@ + + + + + + + +JWT-CPP: jwt::traits::boost_json Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    +
    + + + + + + + + + + + + + + + + +

    +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)
     
    +
    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 000000000..44e563cae --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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.

    + + + + + + + + + + + + + + + + + +
    array_type typedef (defined in jwt::traits::danielaparker_jsoncons)jwt::traits::danielaparker_jsoncons
    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 000000000..e932c574c --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons.html @@ -0,0 +1,177 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    +
    + + + + +

    +Classes

    struct  object_type
     
    + + + + + + + + + + + + + + + +

    +Public Types

    +using json = jsoncons::json
     
    +using value_type = json
     
    +using array_type = json::array
     
    +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)
     
    +
    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 000000000..c6e1c03ae --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons.js @@ -0,0 +1,4 @@ +var structjwt_1_1traits_1_1danielaparker__jsoncons = +[ + [ "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 000000000..98ed72a05 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html @@ -0,0 +1,125 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..baeb0b4b1 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type.html @@ -0,0 +1,164 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons::object_type Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..c2c0fc21d --- /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 000000000..4db174cf9 --- /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 000000000..fc8f8cec9 --- /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 000000000..ca05c2bc4 --- /dev/null +++ b/structjwt_1_1traits_1_1kazuho__picojson-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..04985ffad --- /dev/null +++ b/structjwt_1_1traits_1_1kazuho__picojson.html @@ -0,0 +1,171 @@ + + + + + + + +JWT-CPP: jwt::traits::kazuho_picojson Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    +
    + + + + + + + + + + + + + + + + +

    +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)
     
    +
    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 000000000..7b7ae0bd0 --- /dev/null +++ b/structjwt_1_1traits_1_1nlohmann__json-members.html @@ -0,0 +1,128 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..932d9efbe --- /dev/null +++ b/structjwt_1_1traits_1_1nlohmann__json.html @@ -0,0 +1,174 @@ + + + + + + + +JWT-CPP: jwt::traits::nlohmann_json Struct Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +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)
     
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/nlohmann-json/traits.h
    • +
    +
    +
    + + + + 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 000000000..5ebff1109 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..9b3e35ea7 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_after_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..01263fb70 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..8d77ca075 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_before_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..4ba3ba482 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..406ebce18 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::equals_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..dea212c40 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..a59fe76d0 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim.html @@ -0,0 +1,147 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..44cd9b20d --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim-members.html @@ -0,0 +1,113 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..c73cc2387 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::is_subset_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 traited as a set of 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 000000000..fdbb5d197 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context-members.html @@ -0,0 +1,120 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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 000000000..58f0e339a --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context.html @@ -0,0 +1,158 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::verify_context< json_traits > Struct Template Reference + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.6.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
    +
    +
    + +

    This is the base container which holds the token that need to be verified. + More...

    + +

    #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
     
    +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
     
    +basic_claim< json_traits > get_claim (json::type t, std::error_code &ec) const
     
    + + + + + + + + + +

    +Public Attributes

    +date current_time
     
    +const decoded_jwt< json_traits > & jwt
     
    +size_t default_leeway {0}
     
    +json_traits::string_type claim_key {}
     
    +

    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.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..89201170c --- /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;color:#555555;background-image:none}.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