From 2a35ce86350d32fa349f782c1606eecc8c146fa2 Mon Sep 17 00:00:00 2001 From: prince-chrismc Date: Tue, 23 Jan 2024 19:03:00 +0000 Subject: [PATCH] deploy: 59cb1e633fe4106495adec74c65a940ce78df973 --- .nojekyll | 0 annotated.html | 177 + annotated_dup.js | 71 + base_8h_source.html | 386 ++ bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes boost-json_2defaults_8h_source.html | 185 + boost-json_2traits_8h_source.html | 203 ++ classes.html | 161 + classjwt_1_1basic__claim-members.html | 137 + classjwt_1_1basic__claim.html | 574 +++ classjwt_1_1basic__claim.js | 15 + classjwt_1_1builder-members.html | 136 + classjwt_1_1builder.html | 1031 ++++++ classjwt_1_1builder.js | 26 + classjwt_1_1decoded__jwt-members.html | 160 + classjwt_1_1decoded__jwt.html | 703 ++++ 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 | 125 + 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 | 124 + classjwt_1_1helper_1_1evp__pkey__handle.html | 194 + classjwt_1_1helper_1_1evp__pkey__handle.js | 5 + classjwt_1_1jwk-members.html | 140 + classjwt_1_1jwk.html | 976 +++++ classjwt_1_1jwk.js | 28 + classjwt_1_1jwks-members.html | 126 + classjwt_1_1jwks.html | 277 ++ classjwt_1_1jwks.js | 8 + classjwt_1_1payload-members.html | 131 + 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 + ...rsers__jsoncpp_1_1array__type-members.html | 123 + ...urce__parsers__jsoncpp_1_1array__type.html | 155 + ...jsoncpp_1_1array__type__inherit__graph.map | 5 + ...jsoncpp_1_1array__type__inherit__graph.md5 | 1 + ...jsoncpp_1_1array__type__inherit__graph.svg | 40 + ...sers__jsoncpp_1_1object__type-members.html | 126 + ...rce__parsers__jsoncpp_1_1object__type.html | 163 + ...soncpp_1_1object__type__inherit__graph.map | 5 + ...soncpp_1_1object__type__inherit__graph.md5 | 1 + ...soncpp_1_1object__type__inherit__graph.svg | 40 + classjwt_1_1verifier-members.html | 131 + classjwt_1_1verifier.html | 792 ++++ classjwt_1_1verifier.js | 20 + clipboard.js | 61 + closed.png | Bin 0 -> 132 bytes cookie.js | 58 + ...laparker-jsoncons_2defaults_8h_source.html | 170 + danielaparker-jsoncons_2traits_8h_source.html | 247 ++ deprecated.html | 121 + dir_0c244ebd1071fc3a3e67bea2565ecb67.html | 130 + dir_0c244ebd1071fc3a3e67bea2565ecb67.js | 8 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.map | 9 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.md5 | 1 + dir_0c244ebd1071fc3a3e67bea2565ecb67_dep.svg | 78 + dir_21e3d14daf2ae74f69a5ba3bdd78405a.html | 124 + dir_21e3d14daf2ae74f69a5ba3bdd78405a.js | 5 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.map | 4 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.md5 | 1 + dir_21e3d14daf2ae74f69a5ba3bdd78405a_dep.svg | 29 + dir_2baeb9b2ab4545faf9e2316474ff25e0.html | 111 + dir_40e93e4016c3584ba3b333387b8a88a2.html | 124 + dir_40e93e4016c3584ba3b333387b8a88a2.js | 5 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.map | 4 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.md5 | 1 + dir_40e93e4016c3584ba3b333387b8a88a2_dep.svg | 29 + dir_49e56c817e5e54854c35e136979f97ca.html | 111 + dir_767a780e71f3df42bff551d84f4be7e4.html | 124 + dir_767a780e71f3df42bff551d84f4be7e4.js | 5 + dir_767a780e71f3df42bff551d84f4be7e4_dep.map | 4 + dir_767a780e71f3df42bff551d84f4be7e4_dep.md5 | 1 + dir_767a780e71f3df42bff551d84f4be7e4_dep.svg | 29 + dir_7a723e4d2b0344c6223a621594d1203e.html | 116 + dir_7a723e4d2b0344c6223a621594d1203e_dep.map | 4 + dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 | 1 + dir_7a723e4d2b0344c6223a621594d1203e_dep.svg | 29 + dir_8b41630aed217e5c54affba2453ee0df.html | 124 + dir_8b41630aed217e5c54affba2453ee0df.js | 5 + dir_8b41630aed217e5c54affba2453ee0df_dep.map | 4 + dir_8b41630aed217e5c54affba2453ee0df_dep.md5 | 1 + dir_8b41630aed217e5c54affba2453ee0df_dep.svg | 30 + dir_c0a47b52146df2fb522cc2caf716c25e.html | 124 + dir_c0a47b52146df2fb522cc2caf716c25e.js | 5 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.map | 4 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.md5 | 1 + dir_c0a47b52146df2fb522cc2caf716c25e_dep.svg | 29 + dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html | 134 + dir_cfafba98a580ce4b62f8a6fa96d7cbb0.js | 10 + dir_d44c64559bbebec7f509842c48db8b23.html | 117 + dir_d44c64559bbebec7f509842c48db8b23.js | 4 + dir_db0c9b95a30589e349974d93aa14253f.html | 124 + dir_db0c9b95a30589e349974d93aa14253f.js | 6 + 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 | 1819 ++++++++++ doxygen.svg | 28 + doxygen_crawl.html | 246 ++ dynsections.js | 194 + es256k_8cpp.html | 127 + es256k_8cpp__incl.map | 73 + es256k_8cpp__incl.md5 | 1 + es256k_8cpp__incl.svg | 652 ++++ files.html | 142 + files_dup.js | 5 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + functions.html | 318 ++ functions_func.html | 299 ++ functions_type.html | 113 + functions_vars.html | 120 + graph_legend.html | 170 + graph_legend.md5 | 1 + graph_legend.svg | 167 + hierarchy.html | 177 + hierarchy.js | 80 + index.html | 205 ++ jquery.js | 34 + jwks-verify_8cpp.html | 130 + jwks-verify_8cpp__incl.map | 75 + jwks-verify_8cpp__incl.md5 | 1 + jwks-verify_8cpp__incl.svg | 670 ++++ jwt_8h_source.html | 3171 +++++++++++++++++ kazuho-picojson_2defaults_8h_source.html | 166 + kazuho-picojson_2traits_8h_source.html | 196 + md__8github_2security.html | 122 + md_docs_2faqs.html | 150 + md_docs_2install.html | 155 + md_docs_2signing.html | 137 + md_docs_2ssl.html | 138 + md_docs_2traits.html | 197 + menu.js | 134 + menudata.js | 102 + minus.svg | 8 + minusd.svg | 8 + namespacejwt.html | 931 +++++ namespacejwt.js | 54 + namespacejwt_1_1algorithm.html | 171 + namespacejwt_1_1algorithm.js | 24 + namespacejwt_1_1alphabet.html | 135 + namespacejwt_1_1alphabet.js | 5 + namespacejwt_1_1base.html | 231 ++ namespacejwt_1_1error.html | 280 ++ namespacejwt_1_1error.js | 87 + namespacejwt_1_1helper.html | 1213 +++++++ namespacejwt_1_1helper.js | 27 + namespacejwt_1_1json.html | 160 + namespacejwt_1_1traits.html | 137 + namespacejwt_1_1traits.js | 8 + namespacemembers.html | 185 + namespacemembers_enum.html | 115 + namespacemembers_func.html | 176 + namespacemembers_type.html | 112 + namespaces.html | 170 + 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 | 149 + navtree.js | 482 +++ navtreedata.js | 69 + navtreeindex0.js | 253 ++ navtreeindex1.js | 253 ++ navtreeindex2.js | 137 + nlohmann-json_2defaults_8h_source.html | 170 + nlohmann-json_2traits_8h_source.html | 198 + ...e-parsers-jsoncpp_2defaults_8h_source.html | 172 + ...rce-parsers-jsoncpp_2traits_8h_source.html | 258 ++ open.png | Bin 0 -> 123 bytes overrides.css | 26 + pages.html | 121 + partial-claim-verifier_8cpp.html | 127 + partial-claim-verifier_8cpp__incl.map | 79 + partial-claim-verifier_8cpp__incl.md5 | 1 + partial-claim-verifier_8cpp__incl.svg | 708 ++++ plus.svg | 9 + plusd.svg | 9 + print-claims_8cpp.html | 127 + print-claims_8cpp__incl.map | 73 + print-claims_8cpp__incl.md5 | 1 + print-claims_8cpp__incl.svg | 652 ++++ private-claims_8cpp.html | 138 + private-claims_8cpp__incl.map | 75 + private-claims_8cpp__incl.md5 | 1 + private-claims_8cpp__incl.svg | 670 ++++ resize.js | 109 + rsa-create_8cpp.html | 127 + rsa-create_8cpp__incl.map | 73 + rsa-create_8cpp__incl.md5 | 1 + rsa-create_8cpp__incl.svg | 652 ++++ rsa-verify_8cpp.html | 127 + rsa-verify_8cpp__incl.map | 73 + rsa-verify_8cpp__incl.md5 | 1 + rsa-verify_8cpp__incl.svg | 652 ++++ search/all_0.js | 13 + search/all_1.js | 10 + search/all_10.js | 4 + search/all_11.js | 14 + search/all_12.js | 30 + search/all_13.js | 13 + search/all_14.js | 7 + search/all_15.js | 9 + search/all_2.js | 13 + search/all_3.js | 12 + search/all_4.js | 21 + search/all_5.js | 4 + search/all_6.js | 38 + search/all_7.js | 32 + search/all_8.js | 9 + search/all_9.js | 18 + search/all_a.js | 4 + search/all_b.js | 10 + search/all_c.js | 4 + search/all_d.js | 8 + search/all_e.js | 7 + search/all_f.js | 15 + search/classes_0.js | 4 + search/classes_1.js | 9 + search/classes_2.js | 4 + search/classes_3.js | 8 + search/classes_4.js | 14 + search/classes_5.js | 8 + search/classes_6.js | 6 + search/classes_7.js | 5 + search/classes_8.js | 4 + search/classes_9.js | 5 + search/classes_a.js | 5 + search/classes_b.js | 8 + search/classes_c.js | 8 + search/classes_d.js | 5 + search/classes_e.js | 4 + search/classes_f.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/files_0.js | 4 + search/files_1.js | 4 + search/files_2.js | 6 + search/files_3.js | 5 + search/functions_0.js | 11 + search/functions_1.js | 5 + search/functions_10.js | 7 + search/functions_11.js | 5 + search/functions_12.js | 9 + search/functions_2.js | 7 + search/functions_3.js | 5 + search/functions_4.js | 17 + search/functions_5.js | 38 + search/functions_6.js | 30 + search/functions_7.js | 4 + search/functions_8.js | 4 + search/functions_9.js | 8 + search/functions_a.js | 4 + search/functions_b.js | 6 + search/functions_c.js | 5 + search/functions_d.js | 10 + search/functions_e.js | 9 + search/functions_f.js | 21 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/namespaces_0.js | 11 + search/pages_0.js | 4 + search/pages_1.js | 5 + search/pages_2.js | 4 + search/pages_3.js | 4 + search/pages_4.js | 5 + search/pages_5.js | 5 + search/pages_6.js | 5 + search/pages_7.js | 4 + search/pages_8.js | 4 + search/pages_9.js | 5 + search/pages_a.js | 5 + search/search.css | 291 ++ search/search.js | 694 ++++ search/searchdata.js | 39 + search/typedefs_0.js | 4 + search/typedefs_1.js | 4 + search/typedefs_2.js | 5 + search/typedefs_3.js | 4 + search/typedefs_4.js | 5 + search/variables_0.js | 5 + search/variables_1.js | 4 + search/variables_2.js | 5 + search/variables_3.js | 4 + search/variables_4.js | 5 + search/variables_5.js | 5 + search/variables_6.js | 4 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes structjwt_1_1algorithm_1_1ecdsa-members.html | 117 + structjwt_1_1algorithm_1_1ecdsa.html | 315 ++ 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 | 118 + structjwt_1_1algorithm_1_1ed25519.html | 192 + 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 | 118 + structjwt_1_1algorithm_1_1ed448.html | 192 + 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 | 117 + structjwt_1_1algorithm_1_1eddsa.html | 304 ++ 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 | 118 + structjwt_1_1algorithm_1_1es256.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1es256k.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1es384.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1es512.html | 190 + 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 | 117 + structjwt_1_1algorithm_1_1hmacsha.html | 294 ++ 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 | 118 + structjwt_1_1algorithm_1_1hs256.html | 173 + 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 | 118 + structjwt_1_1algorithm_1_1hs384.html | 173 + 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 | 118 + structjwt_1_1algorithm_1_1hs512.html | 173 + 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 | 116 + structjwt_1_1algorithm_1_1none.html | 184 + structjwt_1_1algorithm_1_1none.js | 6 + structjwt_1_1algorithm_1_1ps256-members.html | 118 + structjwt_1_1algorithm_1_1ps256.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1ps384.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1ps512.html | 190 + 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 | 117 + structjwt_1_1algorithm_1_1pss.html | 308 ++ 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 | 118 + structjwt_1_1algorithm_1_1rs256.html | 194 + 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 | 118 + structjwt_1_1algorithm_1_1rs384.html | 190 + 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 | 118 + structjwt_1_1algorithm_1_1rs512.html | 190 + 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 | 117 + structjwt_1_1algorithm_1_1rsa.html | 310 ++ 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 | 115 + structjwt_1_1alphabet_1_1base64.html | 135 + ...tjwt_1_1alphabet_1_1base64url-members.html | 115 + structjwt_1_1alphabet_1_1base64url.html | 138 + ...1base64url__percent__encoding-members.html | 115 + ...elper_1_1base64url__percent__encoding.html | 135 + structjwt_1_1default__clock-members.html | 114 + structjwt_1_1default__clock.html | 154 + structjwt_1_1default__clock.js | 4 + ...laim__not__present__exception-members.html | 114 + ...ror_1_1claim__not__present__exception.html | 125 + ...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 | 119 + ...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 | 114 + ..._1_1error_1_1invalid__json__exception.html | 125 + ...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 | 119 + ...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 | 119 + ..._generation__exception__inherit__graph.map | 5 + ..._generation__exception__inherit__graph.md5 | 1 + ..._generation__exception__inherit__graph.svg | 40 + ...1_1signature__verification__exception.html | 119 + ...erification__exception__inherit__graph.map | 5 + ...erification__exception__inherit__graph.md5 | 1 + ...erification__exception__inherit__graph.svg | 40 + ...ror_1_1token__verification__exception.html | 119 + ...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 | 129 + structjwt_1_1traits_1_1boost__json.html | 180 + ...ts_1_1danielaparker__jsoncons-members.html | 129 + ..._1_1traits_1_1danielaparker__jsoncons.html | 186 + ...wt_1_1traits_1_1danielaparker__jsoncons.js | 4 + ...ker__jsoncons_1_1object__type-members.html | 127 + ...nielaparker__jsoncons_1_1object__type.html | 166 + ...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 | 129 + structjwt_1_1traits_1_1kazuho__picojson.html | 180 + ...t_1_1traits_1_1nlohmann__json-members.html | 130 + structjwt_1_1traits_1_1nlohmann__json.html | 183 + ...pen__source__parsers__jsoncpp-members.html | 127 + ...its_1_1open__source__parsers__jsoncpp.html | 182 + ...raits_1_1open__source__parsers__jsoncpp.js | 5 + ...fy__ops_1_1date__after__claim-members.html | 115 + ..._1_1verify__ops_1_1date__after__claim.html | 136 + ...y__ops_1_1date__before__claim-members.html | 115 + ...1_1verify__ops_1_1date__before__claim.html | 136 + ...1verify__ops_1_1equals__claim-members.html | 115 + ...ctjwt_1_1verify__ops_1_1equals__claim.html | 136 + ...1_1insensitive__string__claim-members.html | 118 + ...fy__ops_1_1insensitive__string__claim.html | 149 + ...ify__ops_1_1is__subset__claim-members.html | 115 + ...t_1_1verify__ops_1_1is__subset__claim.html | 136 + ...erify__ops_1_1verify__context-members.html | 122 + ...jwt_1_1verify__ops_1_1verify__context.html | 324 ++ ...ctjwt_1_1verify__ops_1_1verify__context.js | 11 + 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 + 515 files changed, 52050 insertions(+) create mode 100644 .nojekyll 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_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.map create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.md5 create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type__inherit__graph.svg create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type-members.html create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.map create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__inherit__graph.md5 create mode 100644 classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type__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 clipboard.js create mode 100644 closed.png create mode 100644 cookie.js create mode 100644 danielaparker-jsoncons_2defaults_8h_source.html create mode 100644 danielaparker-jsoncons_2traits_8h_source.html create mode 100644 deprecated.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_7a723e4d2b0344c6223a621594d1203e.html create mode 100644 dir_7a723e4d2b0344c6223a621594d1203e_dep.map create mode 100644 dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 create mode 100644 dir_7a723e4d2b0344c6223a621594d1203e_dep.svg create mode 100644 dir_8b41630aed217e5c54affba2453ee0df.html create mode 100644 dir_8b41630aed217e5c54affba2453ee0df.js create mode 100644 dir_8b41630aed217e5c54affba2453ee0df_dep.map create mode 100644 dir_8b41630aed217e5c54affba2453ee0df_dep.md5 create mode 100644 dir_8b41630aed217e5c54affba2453ee0df_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_cfafba98a580ce4b62f8a6fa96d7cbb0.html create mode 100644 dir_cfafba98a580ce4b62f8a6fa96d7cbb0.js 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 doxygen_crawl.html create mode 100644 dynsections.js create mode 100644 es256k_8cpp.html create mode 100644 es256k_8cpp__incl.map create mode 100644 es256k_8cpp__incl.md5 create mode 100644 es256k_8cpp__incl.svg 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 jwks-verify_8cpp.html create mode 100644 jwks-verify_8cpp__incl.map create mode 100644 jwks-verify_8cpp__incl.md5 create mode 100644 jwks-verify_8cpp__incl.svg 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_2install.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 minus.svg create mode 100644 minusd.svg 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 namespacejwt_1_1traits.html create mode 100644 namespacejwt_1_1traits.js 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-source-parsers-jsoncpp_2defaults_8h_source.html create mode 100644 open-source-parsers-jsoncpp_2traits_8h_source.html create mode 100644 open.png create mode 100644 overrides.css create mode 100644 pages.html create mode 100644 partial-claim-verifier_8cpp.html create mode 100644 partial-claim-verifier_8cpp__incl.map create mode 100644 partial-claim-verifier_8cpp__incl.md5 create mode 100644 partial-claim-verifier_8cpp__incl.svg create mode 100644 plus.svg create mode 100644 plusd.svg create mode 100644 print-claims_8cpp.html create mode 100644 print-claims_8cpp__incl.map create mode 100644 print-claims_8cpp__incl.md5 create mode 100644 print-claims_8cpp__incl.svg create mode 100644 private-claims_8cpp.html create mode 100644 private-claims_8cpp__incl.map create mode 100644 private-claims_8cpp__incl.md5 create mode 100644 private-claims_8cpp__incl.svg create mode 100644 resize.js create mode 100644 rsa-create_8cpp.html create mode 100644 rsa-create_8cpp__incl.map create mode 100644 rsa-create_8cpp__incl.md5 create mode 100644 rsa-create_8cpp__incl.svg create mode 100644 rsa-verify_8cpp.html create mode 100644 rsa-verify_8cpp__incl.map create mode 100644 rsa-verify_8cpp__incl.md5 create mode 100644 rsa-verify_8cpp__incl.svg 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_15.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/classes_f.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/files_0.js create mode 100644 search/files_1.js create mode 100644 search/files_2.js create mode 100644 search/files_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_11.js create mode 100644 search/functions_12.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/pages_5.js create mode 100644 search/pages_6.js create mode 100644 search/pages_7.js create mode 100644 search/pages_8.js create mode 100644 search/pages_9.js create mode 100644 search/pages_a.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/typedefs_4.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 search/variables_4.js create mode 100644 search/variables_5.js create mode 100644 search/variables_6.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_1default__clock.js 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_1traits_1_1open__source__parsers__jsoncpp-members.html create mode 100644 structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html create mode 100644 structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js 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 structjwt_1_1verify__ops_1_1verify__context.js 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/annotated.html b/annotated.html new file mode 100644 index 000000000..c96315aa1 --- /dev/null +++ b/annotated.html @@ -0,0 +1,177 @@ + + + + + + + +JWT-CPP: Class List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NjwtJSON Web Token
 NalgorithmVarious cryptographic algorithms when working with JWT
 CecdsaBase class for ECDSA family of algorithms
 Ced25519
 Ced448
 CeddsaBase class for EdDSA family of algorithms
 Ces256
 Ces256k
 Ces384
 Ces512
 ChmacshaBase class for HMAC family of algorithms
 Chs256
 Chs384
 Chs512
 Cnone"none" algorithm
 Cps256
 Cps384
 Cps512
 CpssBase class for PSS-RSA family of algorithms
 Crs256
 Crs384
 Crs512
 CrsaBase class for RSA family of algorithms
 NalphabetCharacter maps when encoding and decoding
 Nhelper
 Cbase64url_percent_encodingA General purpose base64url alphabet respecting the URI Case Normalization
 Cbase64Valid list of character when working with Base64
 Cbase64urlValid list of character when working with Base64URL
 NerrorEverything related to error codes issued by the library
 Cclaim_not_present_exception
 Cecdsa_exception
 Cinvalid_json_exception
 Crsa_exception
 Csignature_generation_exception
 Csignature_verification_exception
 Ctoken_verification_exception
 NhelperA collection for working with certificates
 Cevp_pkey_handleHandle class for EVP_PKEY structures
 NtraitsNamespace containing all the json_trait implementations for a jwt::basic_claim
 Cboost_jsonBasic_claim's JSON trait implementation for Boost.JSON
 Cdanielaparker_jsonconsBasic_claim's JSON trait implementation for jsoncons
 Cobject_type
 Ckazuho_picojsonBasic_claim's JSON trait implementation for picojson
 Cnlohmann_jsonBasic_claim's JSON trait implementation for Modern C++ JSON
 Copen_source_parsers_jsoncppBasic_claim's JSON trait implementation for jsoncpp
 Carray_type
 Cobject_type
 Nverify_ops
 Cdate_after_claim
 Cdate_before_claim
 Cequals_claim
 Cinsensitive_string_claim
 Cis_subset_claim
 Cverify_context
 Cbasic_claimClass to store a generic JSON value as claim
 Cbuilder
 Cdecoded_jwt
 Cdefault_clock
 Cheader
 CjwkJSON Web Key
 CjwksJWK Set
 Cpayload
 Cverifier
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..fec4471ff --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,71 @@ +var annotated_dup = +[ + [ "jwt", "namespacejwt.html", [ + [ "algorithm", "namespacejwt_1_1algorithm.html", [ + [ "ecdsa", "structjwt_1_1algorithm_1_1ecdsa.html", "structjwt_1_1algorithm_1_1ecdsa" ], + [ "ed25519", "structjwt_1_1algorithm_1_1ed25519.html", "structjwt_1_1algorithm_1_1ed25519" ], + [ "ed448", "structjwt_1_1algorithm_1_1ed448.html", "structjwt_1_1algorithm_1_1ed448" ], + [ "eddsa", "structjwt_1_1algorithm_1_1eddsa.html", "structjwt_1_1algorithm_1_1eddsa" ], + [ "es256", "structjwt_1_1algorithm_1_1es256.html", "structjwt_1_1algorithm_1_1es256" ], + [ "es256k", "structjwt_1_1algorithm_1_1es256k.html", "structjwt_1_1algorithm_1_1es256k" ], + [ "es384", "structjwt_1_1algorithm_1_1es384.html", "structjwt_1_1algorithm_1_1es384" ], + [ "es512", "structjwt_1_1algorithm_1_1es512.html", "structjwt_1_1algorithm_1_1es512" ], + [ "hmacsha", "structjwt_1_1algorithm_1_1hmacsha.html", "structjwt_1_1algorithm_1_1hmacsha" ], + [ "hs256", "structjwt_1_1algorithm_1_1hs256.html", "structjwt_1_1algorithm_1_1hs256" ], + [ "hs384", "structjwt_1_1algorithm_1_1hs384.html", "structjwt_1_1algorithm_1_1hs384" ], + [ "hs512", "structjwt_1_1algorithm_1_1hs512.html", "structjwt_1_1algorithm_1_1hs512" ], + [ "none", "structjwt_1_1algorithm_1_1none.html", "structjwt_1_1algorithm_1_1none" ], + [ "ps256", "structjwt_1_1algorithm_1_1ps256.html", "structjwt_1_1algorithm_1_1ps256" ], + [ "ps384", "structjwt_1_1algorithm_1_1ps384.html", "structjwt_1_1algorithm_1_1ps384" ], + [ "ps512", "structjwt_1_1algorithm_1_1ps512.html", "structjwt_1_1algorithm_1_1ps512" ], + [ "pss", "structjwt_1_1algorithm_1_1pss.html", "structjwt_1_1algorithm_1_1pss" ], + [ "rs256", "structjwt_1_1algorithm_1_1rs256.html", "structjwt_1_1algorithm_1_1rs256" ], + [ "rs384", "structjwt_1_1algorithm_1_1rs384.html", "structjwt_1_1algorithm_1_1rs384" ], + [ "rs512", "structjwt_1_1algorithm_1_1rs512.html", "structjwt_1_1algorithm_1_1rs512" ], + [ "rsa", "structjwt_1_1algorithm_1_1rsa.html", "structjwt_1_1algorithm_1_1rsa" ] + ] ], + [ "alphabet", "namespacejwt_1_1alphabet.html", [ + [ "helper", null, [ + [ "base64url_percent_encoding", "structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html", null ] + ] ], + [ "base64", "structjwt_1_1alphabet_1_1base64.html", null ], + [ "base64url", "structjwt_1_1alphabet_1_1base64url.html", null ] + ] ], + [ "error", "namespacejwt_1_1error.html", [ + [ "claim_not_present_exception", "structjwt_1_1error_1_1claim__not__present__exception.html", null ], + [ "ecdsa_exception", "structjwt_1_1error_1_1ecdsa__exception.html", null ], + [ "invalid_json_exception", "structjwt_1_1error_1_1invalid__json__exception.html", null ], + [ "rsa_exception", "structjwt_1_1error_1_1rsa__exception.html", null ], + [ "signature_generation_exception", "structjwt_1_1error_1_1signature__generation__exception.html", null ], + [ "signature_verification_exception", "structjwt_1_1error_1_1signature__verification__exception.html", null ], + [ "token_verification_exception", "structjwt_1_1error_1_1token__verification__exception.html", null ] + ] ], + [ "helper", "namespacejwt_1_1helper.html", [ + [ "evp_pkey_handle", "classjwt_1_1helper_1_1evp__pkey__handle.html", "classjwt_1_1helper_1_1evp__pkey__handle" ] + ] ], + [ "traits", "namespacejwt_1_1traits.html", [ + [ "boost_json", "structjwt_1_1traits_1_1boost__json.html", null ], + [ "danielaparker_jsoncons", "structjwt_1_1traits_1_1danielaparker__jsoncons.html", "structjwt_1_1traits_1_1danielaparker__jsoncons" ], + [ "kazuho_picojson", "structjwt_1_1traits_1_1kazuho__picojson.html", null ], + [ "nlohmann_json", "structjwt_1_1traits_1_1nlohmann__json.html", null ], + [ "open_source_parsers_jsoncpp", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp.html", "structjwt_1_1traits_1_1open__source__parsers__jsoncpp" ] + ] ], + [ "verify_ops", null, [ + [ "date_after_claim", "structjwt_1_1verify__ops_1_1date__after__claim.html", null ], + [ "date_before_claim", "structjwt_1_1verify__ops_1_1date__before__claim.html", null ], + [ "equals_claim", "structjwt_1_1verify__ops_1_1equals__claim.html", null ], + [ "insensitive_string_claim", "structjwt_1_1verify__ops_1_1insensitive__string__claim.html", null ], + [ "is_subset_claim", "structjwt_1_1verify__ops_1_1is__subset__claim.html", null ], + [ "verify_context", "structjwt_1_1verify__ops_1_1verify__context.html", "structjwt_1_1verify__ops_1_1verify__context" ] + ] ], + [ "basic_claim", "classjwt_1_1basic__claim.html", "classjwt_1_1basic__claim" ], + [ "builder", "classjwt_1_1builder.html", "classjwt_1_1builder" ], + [ "decoded_jwt", "classjwt_1_1decoded__jwt.html", "classjwt_1_1decoded__jwt" ], + [ "default_clock", "structjwt_1_1default__clock.html", "structjwt_1_1default__clock" ], + [ "header", "classjwt_1_1header.html", "classjwt_1_1header" ], + [ "jwk", "classjwt_1_1jwk.html", "classjwt_1_1jwk" ], + [ "jwks", "classjwt_1_1jwks.html", "classjwt_1_1jwks" ], + [ "payload", "classjwt_1_1payload.html", "classjwt_1_1payload" ], + [ "verifier", "classjwt_1_1verifier.html", "classjwt_1_1verifier" ] + ] ] +]; \ No newline at end of file diff --git a/base_8h_source.html b/base_8h_source.html new file mode 100644 index 000000000..5c26c7f7b --- /dev/null +++ b/base_8h_source.html @@ -0,0 +1,386 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/base.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
base.h
+
+
+
1#ifndef JWT_CPP_BASE_H
+
2#define JWT_CPP_BASE_H
+
3
+
4#include <algorithm>
+
5#include <array>
+
6#include <cstdint>
+
7#include <stdexcept>
+
8#include <string>
+
9#include <vector>
+
10
+
11#ifdef __has_cpp_attribute
+
12#if __has_cpp_attribute(fallthrough)
+
13#define JWT_FALLTHROUGH [[fallthrough]]
+
14#endif
+
15#endif
+
16
+
17#ifndef JWT_FALLTHROUGH
+
18#define JWT_FALLTHROUGH
+
19#endif
+
20
+
+
21namespace jwt {
+
+
25 namespace alphabet {
+
+
32 struct base64 {
+
33 static const std::array<char, 64>& data() {
+
34 static constexpr std::array<char, 64> data{
+
35 {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+
36 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+
37 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+
38 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}};
+
39 return data;
+
40 }
+
41 static const std::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 }
+
+
274 template<typename T>
+
+
275 std::string decode(const std::string& base) {
+
276 return details::decode(base, T::data(), T::fill());
+
277 }
+
+
288 template<typename T>
+
+
289 std::string pad(const std::string& base) {
+
290 return details::pad(base, T::fill());
+
291 }
+
+
302 template<typename T>
+
+
303 std::string trim(const std::string& base) {
+
304 return details::trim(base, T::fill());
+
305 }
+
+
306 } // namespace base
+
+
307} // namespace jwt
+
+
308
+
309#endif
+
std::string trim(const std::string &base)
Generic base64 trimming.
Definition base.h:303
+
std::string decode(const std::string &base)
Generic base64 decoding.
Definition base.h:275
+
std::string pad(const std::string &base)
Generic base64 padding.
Definition base.h:289
+
std::string encode(const std::string &bin)
Generic base64 encoding.
Definition base.h:261
+
JSON Web Token.
Definition base.h:21
+
valid list of character when working with Base64
Definition base.h:32
+
valid list of character when working with Base64URL
Definition base.h: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..24c4d8f22 --- /dev/null +++ b/boost-json_2defaults_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/defaults.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
defaults.h
+
+
+
1#ifndef JWT_CPP_BOOST_JSON_DEFAULTS_H
+
2#define JWT_CPP_BOOST_JSON_DEFAULTS_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#define JWT_DISABLE_PICOJSON
+
6#endif
+
7
+
8#include "traits.h"
+
9
+
10namespace jwt {
+ +
18
+
+ +
24 return verify<default_clock, traits::boost_json>(default_clock{});
+
25 }
+
+
26
+ +
34
+
35#ifndef JWT_DISABLE_BASE64
+
+
43 inline decoded_jwt<traits::boost_json> decode(const std::string& token) {
+ +
45 }
+
+
46#endif
+
47
+
59 template<typename Decode>
+
+
60 decoded_jwt<traits::boost_json> decode(const std::string& token, Decode decode) {
+ +
62 }
+
+
63
+
+
70 inline jwk<traits::boost_json> parse_jwk(const traits::boost_json::string_type& token) {
+
71 return jwk<traits::boost_json>(token);
+
72 }
+
+
73
+
+
80 inline jwks<traits::boost_json> parse_jwks(const traits::boost_json::string_type& token) {
+
81 return jwks<traits::boost_json>(token);
+
82 }
+
+
83
+ +
89} // namespace jwt
+
90
+
91#endif // JWT_CPP_BOOST_JSON_DEFAULTS_H
+
a class to store a generic JSON value as claim
Definition jwt.h:2311
+
Definition jwt.h:2851
+
Definition jwt.h:2716
+
JSON Web Key.
Definition jwt.h:3585
+
JWK Set.
Definition jwt.h:3796
+
Definition jwt.h:3322
+
JSON Web Token.
Definition base.h:21
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:3952
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3966
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:3927
+
Definition jwt.h:3883
+
Definition jwt.h:3103
+
+
+ + + + diff --git a/boost-json_2traits_8h_source.html b/boost-json_2traits_8h_source.html new file mode 100644 index 000000000..f1ae345a1 --- /dev/null +++ b/boost-json_2traits_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/boost-json/traits.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits.h
+
+
+
1#ifndef JWT_CPP_BOOSTJSON_TRAITS_H
+
2#define JWT_CPP_BOOSTJSON_TRAITS_H
+
3
+
4#define JWT_DISABLE_PICOJSON
+
5#include "jwt-cpp/jwt.h"
+
6
+
7#include <boost/json.hpp>
+
8// if not boost JSON standalone then error...
+
9
+
10namespace jwt {
+
+
14 namespace traits {
+
15 namespace json = boost::json;
+
+
17 struct boost_json {
+
18 using value_type = json::value;
+
19 using object_type = json::object;
+
20 using array_type = json::array;
+
21 using string_type = std::string;
+
22 using number_type = double;
+
23 using integer_type = std::int64_t;
+
24 using boolean_type = bool;
+
25
+
26 static jwt::json::type get_type(const value_type& val) {
+
27 using jwt::json::type;
+
28
+
29 if (val.kind() == json::kind::bool_) return type::boolean;
+
30 if (val.kind() == json::kind::int64) return type::integer;
+
31 if (val.kind() == json::kind::uint64) // boost internally tracks two types of integers
+
32 return type::integer;
+
33 if (val.kind() == json::kind::double_) return type::number;
+
34 if (val.kind() == json::kind::string) return type::string;
+
35 if (val.kind() == json::kind::array) return type::array;
+
36 if (val.kind() == json::kind::object) return type::object;
+
37
+
38 throw std::logic_error("invalid type");
+
39 }
+
40
+
41 static object_type as_object(const value_type& val) {
+
42 if (val.kind() != json::kind::object) throw std::bad_cast();
+
43 return val.get_object();
+
44 }
+
45
+
46 static array_type as_array(const value_type& val) {
+
47 if (val.kind() != json::kind::array) throw std::bad_cast();
+
48 return val.get_array();
+
49 }
+
50
+
51 static string_type as_string(const value_type& val) {
+
52 if (val.kind() != json::kind::string) throw std::bad_cast();
+
53 return string_type{val.get_string()};
+
54 }
+
55
+
56 static integer_type as_integer(const value_type& val) {
+
57 switch (val.kind()) {
+
58 case json::kind::int64: return val.get_int64();
+
59 case json::kind::uint64: return static_cast<int64_t>(val.get_uint64());
+
60 default: throw std::bad_cast();
+
61 }
+
62 }
+
63
+
64 static boolean_type as_boolean(const value_type& val) {
+
65 if (val.kind() != json::kind::bool_) throw std::bad_cast();
+
66 return val.get_bool();
+
67 }
+
68
+
69 static number_type as_number(const value_type& val) {
+
70 if (val.kind() != json::kind::double_) throw std::bad_cast();
+
71 return val.get_double();
+
72 }
+
73
+
74 static bool parse(value_type& val, string_type str) {
+
75 val = json::parse(str);
+
76 return true;
+
77 }
+
78
+
79 static std::string serialize(const value_type& val) { return json::serialize(val); }
+
80 };
+
+
81 } // namespace traits
+
+
82} // namespace jwt
+
83
+
84#endif // JWT_CPP_BOOSTJSON_TRAITS_H
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2038
+
JSON Web Token.
Definition base.h:21
+
basic_claim's JSON trait implementation for Boost.JSON
Definition traits.h:17
+
+
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..dfd41ba81 --- /dev/null +++ b/classes.html @@ -0,0 +1,161 @@ + + + + + + + +JWT-CPP: Class Index + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | H | I | J | K | N | O | P | R | S | T | V
+
+
+
A
+
open_source_parsers_jsoncpp::array_type (jwt::traits)
+
+
B
+
base64 (jwt::alphabet)
base64url (jwt::alphabet)
base64url_percent_encoding (jwt::alphabet::helper)
basic_claim (jwt)
boost_json (jwt::traits)
builder (jwt)
+
+
C
+
claim_not_present_exception (jwt::error)
+
+
D
+
danielaparker_jsoncons (jwt::traits)
date_after_claim (jwt::verify_ops)
date_before_claim (jwt::verify_ops)
decoded_jwt (jwt)
default_clock (jwt)
+
+
E
+
ecdsa (jwt::algorithm)
ecdsa_exception (jwt::error)
ed25519 (jwt::algorithm)
ed448 (jwt::algorithm)
eddsa (jwt::algorithm)
equals_claim (jwt::verify_ops)
es256 (jwt::algorithm)
es256k (jwt::algorithm)
es384 (jwt::algorithm)
es512 (jwt::algorithm)
evp_pkey_handle (jwt::helper)
+
+
H
+
header (jwt)
hmacsha (jwt::algorithm)
hs256 (jwt::algorithm)
hs384 (jwt::algorithm)
hs512 (jwt::algorithm)
+
+
I
+
insensitive_string_claim (jwt::verify_ops)
invalid_json_exception (jwt::error)
is_subset_claim (jwt::verify_ops)
+
+
J
+
jwk (jwt)
jwks (jwt)
+
+
K
+
kazuho_picojson (jwt::traits)
+
+
N
+
nlohmann_json (jwt::traits)
none (jwt::algorithm)
+
+
O
+
danielaparker_jsoncons::object_type (jwt::traits)
open_source_parsers_jsoncpp::object_type (jwt::traits)
open_source_parsers_jsoncpp (jwt::traits)
+
+
P
+
payload (jwt)
ps256 (jwt::algorithm)
ps384 (jwt::algorithm)
ps512 (jwt::algorithm)
pss (jwt::algorithm)
+
+
R
+
rs256 (jwt::algorithm)
rs384 (jwt::algorithm)
rs512 (jwt::algorithm)
rsa (jwt::algorithm)
rsa_exception (jwt::error)
+
+
S
+
signature_generation_exception (jwt::error)
signature_verification_exception (jwt::error)
+
+
T
+
token_verification_exception (jwt::error)
+
+
V
+
verifier (jwt)
verify_context (jwt::verify_ops)
+
+
+
+ + + + diff --git a/classjwt_1_1basic__claim-members.html b/classjwt_1_1basic__claim-members.html new file mode 100644 index 000000000..63f17d5fc --- /dev/null +++ b/classjwt_1_1basic__claim-members.html @@ -0,0 +1,137 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::basic_claim< json_traits > Member List
+
+
+ +

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

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

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

+ +

#include <jwt.h>

+ + + + +

+Public Types

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

+Public Member Functions

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

Detailed Description

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

a class to store a generic JSON value as claim

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

Member Typedef Documentation

+ +

◆ set_t

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

Order list of strings

+ +
+
+

Member Function Documentation

+ +

◆ as_array()

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

Get the contained JSON value as an array

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

◆ as_boolean()

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

Get the contained JSON value as a bool

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

◆ as_date()

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

Get the contained JSON value as a date.

+

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

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

◆ as_integer()

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

Get the contained JSON value as an integer

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

◆ as_number()

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

Get the contained JSON value as a number

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

◆ as_set()

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

Get the contained JSON value as a set of strings

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

◆ as_string()

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

Get the contained JSON value as a string

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

◆ get_type()

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

Get type of contained JSON value

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

◆ operator<<()

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

Serialize claim to output stream from wrapped JSON value

Returns
output stream
+ +
+
+ +

◆ operator>>()

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

Parse input stream into underlying JSON value

Returns
input stream
+ +
+
+ +

◆ to_json()

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

Get wrapped JSON value

Returns
Wrapped JSON value
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • 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..3a04150eb --- /dev/null +++ b/classjwt_1_1builder-members.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::builder< Clock, json_traits > Member List
+
+
+ +

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

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

#include <jwt.h>

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

+Public Member Functions

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

Detailed Description

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

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

+

Constructor & Destructor Documentation

+ +

◆ builder()

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

Constructor for building a new builder instance

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

Member Function Documentation

+ +

◆ set_algorithm()

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

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

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

◆ set_audience() [1/2]

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

Set audience claim

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

◆ set_audience() [2/2]

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

Set audience claim

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

◆ set_content_type()

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

Set content type claim

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

◆ set_expires_at()

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

Set expires at claim

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

◆ set_expires_in()

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

Set expires at claim to d from the current moment

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

◆ set_header_claim() [1/2]

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

Set a header claim.

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

◆ set_header_claim() [2/2]

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

Set a header claim.

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

◆ set_id()

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

Set id claim

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

◆ set_issued_at()

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

Set issued at claim

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

◆ set_issued_now()

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

Set issued at claim to the current moment

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

◆ set_issuer()

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

Set issuer claim

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

◆ set_key_id()

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

Set key id claim.

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

◆ set_not_before()

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

Set not before claim

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

◆ set_payload_claim() [1/2]

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

Set a payload claim.

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

◆ set_payload_claim() [2/2]

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

Set a payload claim.

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

◆ set_subject()

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

Set subject claim

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

◆ set_type()

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

Set type claim

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

◆ sign() [1/4]

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

Sign token and return result

+

using the jwt::base functions provided

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

◆ sign() [2/4]

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

Sign token and return result

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

◆ sign() [3/4]

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

Sign token and return result

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

◆ sign() [4/4]

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

Sign token and return result

+

using the jwt::base functions provided

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

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

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

#include <jwt.h>

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

+Public Types

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

+Public Member Functions

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

+Protected Attributes

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

Detailed Description

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

Class containing all information about a decoded token

+

Constructor & Destructor Documentation

+ +

◆ decoded_jwt() [1/2]

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

Parses a given token.

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

◆ decoded_jwt() [2/2]

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

Parses a given token.

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

Member Function Documentation

+ +

◆ get_header()

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

Get header part as json string

Returns
header part after base64 decoding
+ +
+
+ +

◆ get_header_base64()

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

Get header part as base64 string

Returns
header part before base64 decoding
+ +
+
+ +

◆ get_header_claim()

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

Get a header claim by name

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

◆ get_header_json()

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

Get all header as JSON object

Returns
map of claims
+ +
+
+ +

◆ get_payload()

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

Get payload part as json string

Returns
payload part after base64 decoding
+ +
+
+ +

◆ get_payload_base64()

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

Get payload part as base64 string

Returns
payload part before base64 decoding
+ +
+
+ +

◆ get_payload_claim()

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

Get a payload claim by name

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

◆ get_payload_json()

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

Get all payload as JSON object

Returns
map of claims
+ +
+
+ +

◆ get_signature()

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

Get signature part as json string

Returns
signature part after base64 decoding
+ +
+
+ +

◆ get_signature_base64()

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

Get signature part as base64 string

Returns
signature part before base64 decoding
+ +
+
+ +

◆ get_token()

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

Get token string, as passed to constructor

Returns
token as passed to constructor
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • 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..5c7961394 --- /dev/null +++ b/classjwt_1_1header-members.html @@ -0,0 +1,125 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::header< json_traits > Member List
+
+
+ +

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

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

#include <jwt.h>

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

+Public Types

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

+Public Member Functions

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

+Protected Attributes

+details::map_of_claims< json_traits > header_claims
 
+

Detailed Description

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

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

+

Member Function Documentation

+ +

◆ get_algorithm()

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

Get algorithm claim

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

◆ get_content_type()

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

Get content type claim

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

◆ get_header_claim()

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

Get header claim

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

◆ get_key_id()

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

Get key id claim

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

◆ get_type()

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

Get type claim

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

◆ has_algorithm()

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

Check if algorithm is present ("alg")

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

◆ has_content_type()

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

Check if content type is present ("cty")

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

◆ has_header_claim()

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

Check if a header claim is present

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

◆ has_key_id()

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

Check if key id is present ("kid")

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

◆ has_type()

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

Check if type is present ("typ")

Returns
true if present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • 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..e94ed3510 --- /dev/null +++ b/classjwt_1_1helper_1_1evp__pkey__handle-members.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::helper::evp_pkey_handle Member List
+
+
+ +

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

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

Handle class for EVP_PKEY structures. + More...

+ +

#include <jwt.h>

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

+Public Member Functions

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

Detailed Description

+

Handle class for EVP_PKEY structures.

+

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

+

Constructor & Destructor Documentation

+ +

◆ evp_pkey_handle()

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

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

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

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

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

JSON Web Key. + More...

+ +

#include <jwt.h>

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

+Public Member Functions

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

Detailed Description

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

JSON Web Key.

+

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

+

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

+

Member Function Documentation

+ +

◆ empty()

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

Check if the jwk has any claims

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

◆ get_algorithm()

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

Get algorithm claim

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

◆ get_claims()

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

Get all jwk claims

Returns
Map of claims
+ +
+
+ +

◆ get_curve()

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

Get curve claim.

+

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

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

◆ get_jwk_claim()

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

Get jwk claim by name

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

◆ get_key_id()

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

Get key id claim

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

◆ get_key_operations()

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

Get key operation types claim

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

◆ get_key_type()

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

Get key type claim

+

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

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

◆ get_use()

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

Get public key usage claim

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

◆ get_x5c()

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

Get x5c claim

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

◆ get_x5c_key_value()

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

Get x5c claim as a string

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

◆ get_x5t()

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

Get X509 thumbprint claim

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

◆ get_x5t_sha256()

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

Get X509 SHA256 thumbprint claim

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

◆ get_x5u()

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

Get X509 URL claim

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

◆ has_algorithm()

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

Check if algorithm is present ("alg")

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

◆ has_curve()

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

Check if curve is present ("crv")

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

◆ has_jwk_claim()

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

Check if a jwk claim is present

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

◆ has_key_id()

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

Check if key id is present ("kid")

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

◆ has_key_operations()

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

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

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

◆ has_key_type()

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

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

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

◆ has_use()

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

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

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

◆ has_x5c()

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

Check if X509 Chain is present ("x5c")

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

◆ has_x5t()

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

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

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

◆ has_x5t_sha256()

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

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

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

◆ has_x5u()

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

Check if X509 URL is present ("x5u")

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

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

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

JWK Set. + More...

+ +

#include <jwt.h>

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

+Public Types

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

+Public Member Functions

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

Detailed Description

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

JWK Set.

+

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

+

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

+

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

+

Constructor & Destructor Documentation

+ +

◆ jwks()

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

Parses a string buffer to extract the JWKS.

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

Member Function Documentation

+ +

◆ get_jwk()

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

Get jwk

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

◆ has_jwk()

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

Check if a jwk with the kid is present

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

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

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

#include <jwt.h>

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

+Public Types

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

+Public Member Functions

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

+Protected Attributes

+details::map_of_claims< json_traits > payload_claims
 
+

Detailed Description

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

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

+

Member Function Documentation

+ +

◆ get_audience()

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

Get audience claim

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

◆ get_expires_at()

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

Get expires claim

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

◆ get_id()

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

Get id claim

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

◆ get_issued_at()

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

Get issued at claim

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

◆ get_issuer()

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

Get issuer claim

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

◆ get_not_before()

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

Get not valid before claim

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

◆ get_payload_claim()

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

Get payload claim

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

◆ get_subject()

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

Get subject claim

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

◆ has_audience()

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

Check if audience is present ("aud")

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

◆ has_expires_at()

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

Check if expires is present ("exp")

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

◆ has_id()

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

Check if token id is present ("jti")

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

◆ has_issued_at()

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

Check if issued at is present ("iat")

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

◆ has_issuer()

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

Check if issuer is present ("iss")

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

◆ has_not_before()

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

Check if not before is present ("nbf")

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

◆ has_payload_claim()

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

Check if a payload claim is present

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

◆ has_subject()

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

Check if subject is present ("sub")

Returns
true if present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • 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_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html new file mode 100644 index 000000000..4a3d45cf7 --- /dev/null +++ b/classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type-members.html @@ -0,0 +1,123 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::traits::open_source_parsers_jsoncpp::array_type Member List
+
+
+ +

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

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

+Public Types

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

+Public Member Functions

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

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

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

+Public Types

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

+Public Member Functions

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

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

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

#include <jwt.h>

+ + + + + + + +

+Public Types

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

+Public Member Functions

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

Detailed Description

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

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

+

Member Typedef Documentation

+ +

◆ verify_check_fn_t

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

Verification function data structure.

+

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

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ verifier()

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

Constructor for building a new verifier instance

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

Member Function Documentation

+ +

◆ allow_algorithm()

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

Add an algorithm available for checking.

+

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

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

◆ expires_at_leeway()

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

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

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

◆ issued_at_leeway()

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

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

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

◆ leeway()

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

Set default leeway to use.

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

◆ not_before_leeway()

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

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

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

◆ verify() [1/2]

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

Verify the given token.

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

◆ verify() [2/2]

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

Verify the given token.

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

◆ with_audience() [1/2]

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

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

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

◆ with_audience() [2/2]

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

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

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

◆ with_claim() [1/2]

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

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

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

◆ with_claim() [2/2]

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

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

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

◆ with_id()

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

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

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

◆ with_issuer()

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

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

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

◆ with_subject()

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

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

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

◆ with_type()

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

Set an type to check for.

+

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

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

+Directories

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

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_21e3d14daf2ae74f69a5ba3bdd78405a.js b/dir_21e3d14daf2ae74f69a5ba3bdd78405a.js new file mode 100644 index 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..c5bde6c89 --- /dev/null +++ b/dir_2baeb9b2ab4545faf9e2316474ff25e0.html @@ -0,0 +1,111 @@ + + + + + + + +JWT-CPP: .github Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
.github Directory Reference
+
+
+
+
+ + + + diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2.html b/dir_40e93e4016c3584ba3b333387b8a88a2.html new file mode 100644 index 000000000..71f4782fd --- /dev/null +++ b/dir_40e93e4016c3584ba3b333387b8a88a2.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/danielaparker-jsoncons Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
danielaparker-jsoncons Directory Reference
+
+
+
+Directory dependency graph for danielaparker-jsoncons:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_40e93e4016c3584ba3b333387b8a88a2.js b/dir_40e93e4016c3584ba3b333387b8a88a2.js new file mode 100644 index 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..63e4ed9b8 --- /dev/null +++ b/dir_49e56c817e5e54854c35e136979f97ca.html @@ -0,0 +1,111 @@ + + + + + + + +JWT-CPP: docs Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs Directory Reference
+
+
+
+
+ + + + diff --git a/dir_767a780e71f3df42bff551d84f4be7e4.html b/dir_767a780e71f3df42bff551d84f4be7e4.html new file mode 100644 index 000000000..916bbb26d --- /dev/null +++ b/dir_767a780e71f3df42bff551d84f4be7e4.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
kazuho-picojson Directory Reference
+
+
+
+Directory dependency graph for kazuho-picojson:
+
+
+
+ + + + + + +

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_767a780e71f3df42bff551d84f4be7e4.js b/dir_767a780e71f3df42bff551d84f4be7e4.js new file mode 100644 index 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_7a723e4d2b0344c6223a621594d1203e.html b/dir_7a723e4d2b0344c6223a621594d1203e.html new file mode 100644 index 000000000..8ca1a848b --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: example/traits Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits Directory Reference
+
+
+
+Directory dependency graph for traits:
+
+
+
+
+
+ + + + diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.map b/dir_7a723e4d2b0344c6223a621594d1203e_dep.map new file mode 100644 index 000000000..0b91fdd07 --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 b/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 new file mode 100644 index 000000000..66d00fb2d --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.md5 @@ -0,0 +1 @@ +03f2194487f6344d0ded16efbcdea9a2 \ No newline at end of file diff --git a/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg b/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg new file mode 100644 index 000000000..a3792fda6 --- /dev/null +++ b/dir_7a723e4d2b0344c6223a621594d1203e_dep.svg @@ -0,0 +1,29 @@ + + + + + + +example/traits + +clusterdir_cfafba98a580ce4b62f8a6fa96d7cbb0 + + +example + + + + + +dir_7a723e4d2b0344c6223a621594d1203e + + +traits + + + + + diff --git a/dir_8b41630aed217e5c54affba2453ee0df.html b/dir_8b41630aed217e5c54affba2453ee0df.html new file mode 100644 index 000000000..75ffb2403 --- /dev/null +++ b/dir_8b41630aed217e5c54affba2453ee0df.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/open-source-parsers-jsoncpp Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
open-source-parsers-jsoncpp Directory Reference
+
+
+
+Directory dependency graph for open-source-parsers-jsoncpp:
+
+
+
+ + + + + + +

+Files

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

+Files

 defaults.h
 
 traits.h
 
+
+
+ + + + diff --git a/dir_c0a47b52146df2fb522cc2caf716c25e.js b/dir_c0a47b52146df2fb522cc2caf716c25e.js new file mode 100644 index 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_cfafba98a580ce4b62f8a6fa96d7cbb0.html b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html new file mode 100644 index 000000000..51f3eeb92 --- /dev/null +++ b/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html @@ -0,0 +1,134 @@ + + + + + + + +JWT-CPP: example Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
example Directory Reference
+
+
+ + + + +

+Directories

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

+Files

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

+Directories

 jwt-cpp
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 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..5039caea9 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.html @@ -0,0 +1,124 @@ + + + + + + + +JWT-CPP: include/jwt-cpp Directory Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt-cpp Directory Reference
+
+
+
+Directory dependency graph for jwt-cpp:
+
+
+
+ + + + + + +

+Files

 base.h
 
 jwt.h
 
+
+
+ + + + diff --git a/dir_db0c9b95a30589e349974d93aa14253f.js b/dir_db0c9b95a30589e349974d93aa14253f.js new file mode 100644 index 000000000..271989341 --- /dev/null +++ b/dir_db0c9b95a30589e349974d93aa14253f.js @@ -0,0 +1,6 @@ +var dir_db0c9b95a30589e349974d93aa14253f = +[ + [ "traits", "dir_0c244ebd1071fc3a3e67bea2565ecb67.html", "dir_0c244ebd1071fc3a3e67bea2565ecb67" ], + [ "base.h", "base_8h_source.html", null ], + [ "jwt.h", "jwt_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_db0c9b95a30589e349974d93aa14253f_dep.map b/dir_db0c9b95a30589e349974d93aa14253f_dep.map new file mode 100644 index 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..b4fc12407 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1819 @@ +/* The standard CSS for doxygen 1.10.0*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: black; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 000000000..1eb02c23d --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,246 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..8012854c0 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,194 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/es256k_8cpp.html b/es256k_8cpp.html new file mode 100644 index 000000000..e7286143a --- /dev/null +++ b/es256k_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: example/es256k.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
es256k.cpp File Reference
+
+
+
#include <iostream>
+#include <jwt-cpp/jwt.h>
+
+Include dependency graph for es256k.cpp:
+
+
+
+
+ + + +

+Functions

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

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

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

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

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

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

+

Consider the following example:

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

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

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

logo

+

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

+

Documentation Badge

+

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

+

Overview

+

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

+

The objective is to deliver a versatile and universally applicable collection of algorithms, classes, and data structures, fostering adaptability and seamless integration with other libraries that you may already be employing.

+

Signature algorithms

+

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

+

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

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

Getting Started

+

Installation instructions can be found here.

+

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

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

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

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

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

+

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

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

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

+

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

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

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

+

Configuration Options

+

Building on the goal of providing flexibility.

+

SSL Compatibility

+

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

+

JSON Implementation

+

There is no strict reliance on a specific JSON library in this context. Instead, the jwt-cpp utilizes a generic jwt::basic_claim that is templated based on type trait. This trait provides the semantic JSON types for values, objects, arrays, strings, numbers, integers, and booleans, along with methods to seamlessly translate between them.

+

This design offers flexibility in choosing the JSON library that best suits your needs. To leverage one of the provided JSON traits, refer to docs/traits.md for detailed guidance.

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

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

+

Base64 Options

+

With regard to the base64 specifications for JWTs, this library includes base.h encompassing all necessary variants. While the library itself offers a proficient base64 implementation, it's worth noting that base64 implementations are widely available, exhibiting diverse performance levels. If you prefer to use your own base64 implementation, you have the option to define JWT_DISABLE_BASE64 to exclude the jwt-cpp implementation.

+

Contributing

+

If you have suggestions for improvement or if you've identified a bug, please don't hesitate to open an issue or contribute by creating a pull request. When reporting a bug, provide comprehensive details about your environment, including compiler version and other relevant information, to facilitate issue reproduction. Additionally, if you're introducing a new feature, ensure that you include corresponding test cases to validate its functionality.

+

Dependencies

+

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

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

In order to build the test cases you also need

+
    +
  • gtest
  • +
  • pthread
  • +
+

Troubleshooting

+

See the FAQs for tips.

+

Conference Coverage

+

CppCon

+
+ +
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 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/jwks-verify_8cpp.html b/jwks-verify_8cpp.html new file mode 100644 index 000000000..eff8beab2 --- /dev/null +++ b/jwks-verify_8cpp.html @@ -0,0 +1,130 @@ + + + + + + + +JWT-CPP: example/jwks-verify.cpp File Reference + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jwks-verify.cpp File Reference
+
+
+
#include <iostream>
+#include <jwt-cpp/jwt.h>
+#include <openssl/rand.h>
+
+Include dependency graph for jwks-verify.cpp:
+
+
+
+
+ + + +

+Functions

+int main ()
 
+

Detailed Description

+

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

+
+
+ + + + diff --git a/jwks-verify_8cpp__incl.map b/jwks-verify_8cpp__incl.map new file mode 100644 index 000000000..f4341774c --- /dev/null +++ b/jwks-verify_8cpp__incl.map @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jwks-verify_8cpp__incl.md5 b/jwks-verify_8cpp__incl.md5 new file mode 100644 index 000000000..ecc2e9688 --- /dev/null +++ b/jwks-verify_8cpp__incl.md5 @@ -0,0 +1 @@ +f7c36fc17bad21f922e8a63f3a190180 \ No newline at end of file diff --git a/jwks-verify_8cpp__incl.svg b/jwks-verify_8cpp__incl.svg new file mode 100644 index 000000000..b0ee44aaa --- /dev/null +++ b/jwks-verify_8cpp__incl.svg @@ -0,0 +1,670 @@ + + + + + + +example/jwks-verify.cpp + + +Node1 + + +example/jwks-verify.cpp + + + + + +Node2 + + +iostream + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +jwt-cpp/jwt.h + + + + + +Node1->Node3 + + + + + + + + +Node35 + + +openssl/rand.h + + + + + +Node1->Node35 + + + + + + + + +Node4 + + +picojson/picojson.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +base.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +algorithm + + + + + +Node3->Node6 + + + + + + + + +Node11 + + +vector + + + + + +Node3->Node11 + + + + + + + + +Node12 + + +openssl/ec.h + + + + + +Node3->Node12 + + + + + + + + +Node13 + + +openssl/ecdsa.h + + + + + +Node3->Node13 + + + + + + + + +Node14 + + +openssl/err.h + + + + + +Node3->Node14 + + + + + + + + +Node15 + + +openssl/evp.h + + + + + +Node3->Node15 + + + + + + + + +Node16 + + +openssl/hmac.h + + + + + +Node3->Node16 + + + + + + + + +Node17 + + +openssl/pem.h + + + + + +Node3->Node17 + + + + + + + + +Node18 + + +openssl/rsa.h + + + + + +Node3->Node18 + + + + + + + + +Node19 + + +openssl/ssl.h + + + + + +Node3->Node19 + + + + + + + + +Node20 + + +chrono + + + + + +Node3->Node20 + + + + + + + + +Node21 + + +climits + + + + + +Node3->Node21 + + + + + + + + +Node22 + + +cmath + + + + + +Node3->Node22 + + + + + + + + +Node23 + + +cstring + + + + + +Node3->Node23 + + + + + + + + +Node24 + + +functional + + + + + +Node3->Node24 + + + + + + + + +Node25 + + +iterator + + + + + +Node3->Node25 + + + + + + + + +Node26 + + +locale + + + + + +Node3->Node26 + + + + + + + + +Node27 + + +memory + + + + + +Node3->Node27 + + + + + + + + +Node28 + + +set + + + + + +Node3->Node28 + + + + + + + + +Node29 + + +system_error + + + + + +Node3->Node29 + + + + + + + + +Node30 + + +type_traits + + + + + +Node3->Node30 + + + + + + + + +Node31 + + +unordered_map + + + + + +Node3->Node31 + + + + + + + + +Node32 + + +utility + + + + + +Node3->Node32 + + + + + + + + +Node33 + + +traits/kazuho-picojson +/defaults.h + + + + + +Node3->Node33 + + + + + + + + +Node5->Node6 + + + + + + + + +Node7 + + +array + + + + + +Node5->Node7 + + + + + + + + +Node8 + + +cstdint + + + + + +Node5->Node8 + + + + + + + + +Node9 + + +stdexcept + + + + + +Node5->Node9 + + + + + + + + +Node10 + + +string + + + + + +Node5->Node10 + + + + + + + + +Node5->Node11 + + + + + + + + +Node34 + + +traits.h + + + + + +Node33->Node34 + + + + + + + + +Node34->Node3 + + + + + + + + +Node34->Node4 + + + + + + + + diff --git a/jwt_8h_source.html b/jwt_8h_source.html new file mode 100644 index 000000000..b3df939d4 --- /dev/null +++ b/jwt_8h_source.html @@ -0,0 +1,3171 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/jwt.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt.h
+
+
+
1#ifndef JWT_CPP_JWT_H
+
2#define JWT_CPP_JWT_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#ifndef PICOJSON_USE_INT64
+
6#define PICOJSON_USE_INT64
+
7#endif
+
8#include "picojson/picojson.h"
+
9#endif
+
10
+
11#ifndef JWT_DISABLE_BASE64
+
12#include "base.h"
+
13#endif
+
14
+
15#include <openssl/ec.h>
+
16#include <openssl/ecdsa.h>
+
17#include <openssl/err.h>
+
18#include <openssl/evp.h>
+
19#include <openssl/hmac.h>
+
20#include <openssl/pem.h>
+
21#include <openssl/rsa.h>
+
22#include <openssl/ssl.h>
+
23
+
24#include <algorithm>
+
25#include <chrono>
+
26#include <climits>
+
27#include <cmath>
+
28#include <cstring>
+
29#include <functional>
+
30#include <iterator>
+
31#include <locale>
+
32#include <memory>
+
33#include <set>
+
34#include <system_error>
+
35#include <type_traits>
+
36#include <unordered_map>
+
37#include <utility>
+
38#include <vector>
+
39
+
40#if __cplusplus > 201103L
+
41#include <codecvt>
+
42#endif
+
43
+
44#if __cplusplus >= 201402L
+
45#ifdef __has_include
+
46#if __has_include(<experimental/type_traits>)
+
47#include <experimental/type_traits>
+
48#endif
+
49#endif
+
50#endif
+
51
+
52#if OPENSSL_VERSION_NUMBER >= 0x30000000L // 3.0.0
+
53#define JWT_OPENSSL_3_0
+
54#include <openssl/param_build.h>
+
55#elif OPENSSL_VERSION_NUMBER >= 0x10101000L // 1.1.1
+
56#define JWT_OPENSSL_1_1_1
+
57#elif OPENSSL_VERSION_NUMBER >= 0x10100000L // 1.1.0
+
58#define JWT_OPENSSL_1_1_0
+
59#elif OPENSSL_VERSION_NUMBER >= 0x10000000L // 1.0.0
+
60#define JWT_OPENSSL_1_0_0
+
61#endif
+
62
+
63#if defined(LIBRESSL_VERSION_NUMBER)
+
64#if LIBRESSL_VERSION_NUMBER >= 0x3050300fL
+
65#define JWT_OPENSSL_1_1_0
+
66#else
+
67#define JWT_OPENSSL_1_0_0
+
68#endif
+
69#endif
+
70
+
71#if defined(LIBWOLFSSL_VERSION_HEX)
+
72#define JWT_OPENSSL_1_1_1
+
73#endif
+
74
+
75#ifndef JWT_CLAIM_EXPLICIT
+
76#define JWT_CLAIM_EXPLICIT explicit
+
77#endif
+
78
+
86namespace jwt {
+
90 using date = std::chrono::system_clock::time_point;
+
91
+
+
95 namespace error {
+
+
96 struct signature_verification_exception : public std::system_error {
+
97 using system_error::system_error;
+
98 };
+
+
+
99 struct signature_generation_exception : public std::system_error {
+
100 using system_error::system_error;
+
101 };
+
+
+
102 struct rsa_exception : public std::system_error {
+
103 using system_error::system_error;
+
104 };
+
+
+
105 struct ecdsa_exception : public std::system_error {
+
106 using system_error::system_error;
+
107 };
+
+
+
108 struct token_verification_exception : public std::system_error {
+
109 using system_error::system_error;
+
110 };
+
+
+
114 enum class rsa_error {
+
115 ok = 0,
+
116 cert_load_failed = 10,
+
117 get_key_failed,
+
118 write_key_failed,
+
119 write_cert_failed,
+
120 convert_to_pem_failed,
+
121 load_key_bio_write,
+
122 load_key_bio_read,
+
123 create_mem_bio_failed,
+
124 no_key_provided,
+
125 set_rsa_failed,
+
126 create_context_failed
+
127 };
+
+
+
131 inline std::error_category& rsa_error_category() {
+
132 class rsa_error_cat : public std::error_category {
+
133 public:
+
134 const char* name() const noexcept override { return "rsa_error"; };
+
135 std::string message(int ev) const override {
+
136 switch (static_cast<rsa_error>(ev)) {
+
137 case rsa_error::ok: return "no error";
+
138 case rsa_error::cert_load_failed: return "error loading cert into memory";
+
139 case rsa_error::get_key_failed: return "error getting key from certificate";
+
140 case rsa_error::write_key_failed: return "error writing key data in PEM format";
+
141 case rsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
142 case rsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
143 case rsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
144 case rsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
145 case rsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
146 case rsa_error::no_key_provided: return "at least one of public or private key need to be present";
+
147 case rsa_error::set_rsa_failed: return "set modulus and exponent to RSA failed";
+
148 case rsa_error::create_context_failed: return "failed to create context";
+
149 default: return "unknown RSA error";
+
150 }
+
151 }
+
152 };
+
153 static rsa_error_cat cat;
+
154 return cat;
+
155 }
+
+
159 inline std::error_code make_error_code(rsa_error e) { return {static_cast<int>(e), rsa_error_category()}; }
+
+
163 enum class ecdsa_error {
+
164 ok = 0,
+
165 load_key_bio_write = 10,
+
166 load_key_bio_read,
+
167 create_mem_bio_failed,
+
168 no_key_provided,
+
169 invalid_key_size,
+
170 invalid_key,
+
171 create_context_failed,
+
172 cert_load_failed,
+
173 get_key_failed,
+
174 write_key_failed,
+
175 write_cert_failed,
+
176 convert_to_pem_failed
+
177 };
+
+
+
181 inline std::error_category& ecdsa_error_category() {
+
182 class ecdsa_error_cat : public std::error_category {
+
183 public:
+
184 const char* name() const noexcept override { return "ecdsa_error"; };
+
185 std::string message(int ev) const override {
+
186 switch (static_cast<ecdsa_error>(ev)) {
+
187 case ecdsa_error::ok: return "no error";
+
188 case ecdsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
189 case ecdsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
190 case ecdsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
191 case ecdsa_error::no_key_provided:
+
192 return "at least one of public or private key need to be present";
+
193 case ecdsa_error::invalid_key_size: return "invalid key size";
+
194 case ecdsa_error::invalid_key: return "invalid key";
+
195 case ecdsa_error::create_context_failed: return "failed to create context";
+
196 case ecdsa_error::cert_load_failed: return "error loading cert into memory";
+
197 case ecdsa_error::get_key_failed: return "error getting key from certificate";
+
198 case ecdsa_error::write_key_failed: return "error writing key data in PEM format";
+
199 case ecdsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
200 case ecdsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
201 default: return "unknown ECDSA error";
+
202 }
+
203 }
+
204 };
+
205 static ecdsa_error_cat cat;
+
206 return cat;
+
207 }
+
+
211 inline std::error_code make_error_code(ecdsa_error e) { return {static_cast<int>(e), ecdsa_error_category()}; }
+
212
+
+ +
217 ok = 0,
+
218 invalid_signature = 10,
+
219 create_context_failed,
+
220 verifyinit_failed,
+
221 verifyupdate_failed,
+
222 verifyfinal_failed,
+
223 get_key_failed,
+
224 set_rsa_pss_saltlen_failed,
+
225 signature_encoding_failed
+
226 };
+
+
+
230 inline std::error_category& signature_verification_error_category() {
+
231 class verification_error_cat : public std::error_category {
+
232 public:
+
233 const char* name() const noexcept override { return "signature_verification_error"; };
+
234 std::string message(int ev) const override {
+
235 switch (static_cast<signature_verification_error>(ev)) {
+
236 case signature_verification_error::ok: return "no error";
+
237 case signature_verification_error::invalid_signature: return "invalid signature";
+
238 case signature_verification_error::create_context_failed:
+
239 return "failed to verify signature: could not create context";
+
240 case signature_verification_error::verifyinit_failed:
+
241 return "failed to verify signature: VerifyInit failed";
+
242 case signature_verification_error::verifyupdate_failed:
+
243 return "failed to verify signature: VerifyUpdate failed";
+
244 case signature_verification_error::verifyfinal_failed:
+
245 return "failed to verify signature: VerifyFinal failed";
+
246 case signature_verification_error::get_key_failed:
+
247 return "failed to verify signature: Could not get key";
+
248 case signature_verification_error::set_rsa_pss_saltlen_failed:
+
249 return "failed to verify signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
250 case signature_verification_error::signature_encoding_failed:
+
251 return "failed to verify signature: i2d_ECDSA_SIG failed";
+
252 default: return "unknown signature verification error";
+
253 }
+
254 }
+
255 };
+
256 static verification_error_cat cat;
+
257 return cat;
+
258 }
+
+
+ +
263 return {static_cast<int>(e), signature_verification_error_category()};
+
264 }
+
+
265
+
+ +
270 ok = 0,
+
271 hmac_failed = 10,
+
272 create_context_failed,
+
273 signinit_failed,
+
274 signupdate_failed,
+
275 signfinal_failed,
+
276 ecdsa_do_sign_failed,
+
277 digestinit_failed,
+
278 digestupdate_failed,
+
279 digestfinal_failed,
+
280 rsa_padding_failed,
+
281 rsa_private_encrypt_failed,
+
282 get_key_failed,
+
283 set_rsa_pss_saltlen_failed,
+
284 signature_decoding_failed
+
285 };
+
+
+
289 inline std::error_category& signature_generation_error_category() {
+
290 class signature_generation_error_cat : public std::error_category {
+
291 public:
+
292 const char* name() const noexcept override { return "signature_generation_error"; };
+
293 std::string message(int ev) const override {
+
294 switch (static_cast<signature_generation_error>(ev)) {
+
295 case signature_generation_error::ok: return "no error";
+
296 case signature_generation_error::hmac_failed: return "hmac failed";
+
297 case signature_generation_error::create_context_failed:
+
298 return "failed to create signature: could not create context";
+
299 case signature_generation_error::signinit_failed:
+
300 return "failed to create signature: SignInit failed";
+
301 case signature_generation_error::signupdate_failed:
+
302 return "failed to create signature: SignUpdate failed";
+
303 case signature_generation_error::signfinal_failed:
+
304 return "failed to create signature: SignFinal failed";
+
305 case signature_generation_error::ecdsa_do_sign_failed: return "failed to generate ecdsa signature";
+
306 case signature_generation_error::digestinit_failed:
+
307 return "failed to create signature: DigestInit failed";
+
308 case signature_generation_error::digestupdate_failed:
+
309 return "failed to create signature: DigestUpdate failed";
+
310 case signature_generation_error::digestfinal_failed:
+
311 return "failed to create signature: DigestFinal failed";
+
312 case signature_generation_error::rsa_padding_failed:
+
313 return "failed to create signature: EVP_PKEY_CTX_set_rsa_padding failed";
+
314 case signature_generation_error::rsa_private_encrypt_failed:
+
315 return "failed to create signature: RSA_private_encrypt failed";
+
316 case signature_generation_error::get_key_failed:
+
317 return "failed to generate signature: Could not get key";
+
318 case signature_generation_error::set_rsa_pss_saltlen_failed:
+
319 return "failed to create signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
320 case signature_generation_error::signature_decoding_failed:
+
321 return "failed to create signature: d2i_ECDSA_SIG failed";
+
322 default: return "unknown signature generation error";
+
323 }
+
324 }
+
325 };
+
326 static signature_generation_error_cat cat = {};
+
327 return cat;
+
328 }
+
+
+
332 inline std::error_code make_error_code(signature_generation_error e) {
+
333 return {static_cast<int>(e), signature_generation_error_category()};
+
334 }
+
+
335
+
+ +
340 ok = 0,
+
341 wrong_algorithm = 10,
+
342 missing_claim,
+
343 claim_type_missmatch,
+
344 claim_value_missmatch,
+
345 token_expired,
+
346 audience_missmatch
+
347 };
+
+
+
351 inline std::error_category& token_verification_error_category() {
+
352 class token_verification_error_cat : public std::error_category {
+
353 public:
+
354 const char* name() const noexcept override { return "token_verification_error"; };
+
355 std::string message(int ev) const override {
+
356 switch (static_cast<token_verification_error>(ev)) {
+
357 case token_verification_error::ok: return "no error";
+
358 case token_verification_error::wrong_algorithm: return "wrong algorithm";
+
359 case token_verification_error::missing_claim: return "decoded JWT is missing required claim(s)";
+
360 case token_verification_error::claim_type_missmatch:
+
361 return "claim type does not match expected type";
+
362 case token_verification_error::claim_value_missmatch:
+
363 return "claim value does not match expected value";
+
364 case token_verification_error::token_expired: return "token expired";
+
365 case token_verification_error::audience_missmatch:
+
366 return "token doesn't contain the required audience";
+
367 default: return "unknown token verification error";
+
368 }
+
369 }
+
370 };
+
371 static token_verification_error_cat cat = {};
+
372 return cat;
+
373 }
+
+
+
377 inline std::error_code make_error_code(token_verification_error e) {
+
378 return {static_cast<int>(e), token_verification_error_category()};
+
379 }
+
+
+
383 inline void throw_if_error(std::error_code ec) {
+
384 if (ec) {
+
385 if (ec.category() == rsa_error_category()) throw rsa_exception(ec);
+
386 if (ec.category() == ecdsa_error_category()) throw ecdsa_exception(ec);
+
387 if (ec.category() == signature_verification_error_category())
+ + +
390 if (ec.category() == token_verification_error_category()) throw token_verification_exception(ec);
+
391 }
+
392 }
+
+
393 } // namespace error
+
+
394} // namespace jwt
+
395
+
396namespace std {
+
397 template<>
+
398 struct is_error_code_enum<jwt::error::rsa_error> : true_type {};
+
399 template<>
+
400 struct is_error_code_enum<jwt::error::ecdsa_error> : true_type {};
+
401 template<>
+
402 struct is_error_code_enum<jwt::error::signature_verification_error> : true_type {};
+
403 template<>
+
404 struct is_error_code_enum<jwt::error::signature_generation_error> : true_type {};
+
405 template<>
+
406 struct is_error_code_enum<jwt::error::token_verification_error> : true_type {};
+
407} // namespace std
+
408
+
409namespace jwt {
+
+
417 namespace helper {
+
+ +
426 public:
+
430 constexpr evp_pkey_handle() noexcept = default;
+
431#ifdef JWT_OPENSSL_1_0_0
+
436 explicit evp_pkey_handle(EVP_PKEY* key) { m_key = std::shared_ptr<EVP_PKEY>(key, EVP_PKEY_free); }
+
437
+
438 EVP_PKEY* get() const noexcept { return m_key.get(); }
+
439 bool operator!() const noexcept { return m_key == nullptr; }
+
440 explicit operator bool() const noexcept { return m_key != nullptr; }
+
441
+
442 private:
+
443 std::shared_ptr<EVP_PKEY> m_key{nullptr};
+
444#else
+
449 explicit constexpr evp_pkey_handle(EVP_PKEY* key) noexcept : m_key{key} {}
+
450 evp_pkey_handle(const evp_pkey_handle& other) : m_key{other.m_key} {
+
451 if (m_key != nullptr && EVP_PKEY_up_ref(m_key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
452 }
+
453// C++11 requires the body of a constexpr constructor to be empty
+
454#if __cplusplus >= 201402L
+
455 constexpr
+
456#endif
+
457 evp_pkey_handle(evp_pkey_handle&& other) noexcept
+
458 : m_key{other.m_key} {
+
459 other.m_key = nullptr;
+
460 }
+
461 evp_pkey_handle& operator=(const evp_pkey_handle& other) {
+
462 if (&other == this) return *this;
+
463 decrement_ref_count(m_key);
+
464 m_key = other.m_key;
+
465 increment_ref_count(m_key);
+
466 return *this;
+
467 }
+
468 evp_pkey_handle& operator=(evp_pkey_handle&& other) noexcept {
+
469 if (&other == this) return *this;
+
470 decrement_ref_count(m_key);
+
471 m_key = other.m_key;
+
472 other.m_key = nullptr;
+
473 return *this;
+
474 }
+
475 evp_pkey_handle& operator=(EVP_PKEY* key) {
+
476 decrement_ref_count(m_key);
+
477 m_key = key;
+
478 increment_ref_count(m_key);
+
479 return *this;
+
480 }
+
481 ~evp_pkey_handle() noexcept { decrement_ref_count(m_key); }
+
482
+
483 EVP_PKEY* get() const noexcept { return m_key; }
+
484 bool operator!() const noexcept { return m_key == nullptr; }
+
485 explicit operator bool() const noexcept { return m_key != nullptr; }
+
486
+
487 private:
+
488 EVP_PKEY* m_key{nullptr};
+
489
+
490 static void increment_ref_count(EVP_PKEY* key) {
+
491 if (key != nullptr && EVP_PKEY_up_ref(key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
492 }
+
493 static void decrement_ref_count(EVP_PKEY* key) noexcept {
+
494 if (key != nullptr) EVP_PKEY_free(key);
+
495 }
+
496#endif
+
497 };
+
+
498
+
499 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio() {
+
500 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(BIO_new(BIO_s_mem()), BIO_free_all);
+
501 }
+
502
+
503 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio(const std::string& data) {
+
504 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(
+
505#if OPENSSL_VERSION_NUMBER <= 0x10100003L
+
506 BIO_new_mem_buf(const_cast<char*>(data.data()), static_cast<int>(data.size())), BIO_free_all
+
507#else
+
508 BIO_new_mem_buf(data.data(), static_cast<int>(data.size())), BIO_free_all
+
509#endif
+
510 );
+
511 }
+
512
+
513 template<typename error_category = error::rsa_error>
+
514 std::string write_bio_to_string(std::unique_ptr<BIO, decltype(&BIO_free_all)>& bio_out, std::error_code& ec) {
+
515 char* ptr = nullptr;
+
516 auto len = BIO_get_mem_data(bio_out.get(), &ptr);
+
517 if (len <= 0 || ptr == nullptr) {
+
518 ec = error_category::convert_to_pem_failed;
+
519 return {};
+
520 }
+
521 return {ptr, static_cast<size_t>(len)};
+
522 }
+
523
+
524 inline std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)> make_evp_md_ctx() {
+
525 return
+
526#ifdef JWT_OPENSSL_1_0_0
+
527 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(), &EVP_MD_CTX_destroy);
+
528#else
+
529 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)>(EVP_MD_CTX_new(), &EVP_MD_CTX_free);
+
530#endif
+
531 }
+
532
+
541 template<typename error_category = error::rsa_error>
+
+
542 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw, std::error_code& ec) {
+
543 ec.clear();
+
544 auto certbio = make_mem_buf_bio(certstr);
+
545 auto keybio = make_mem_buf_bio();
+
546 if (!certbio || !keybio) {
+
547 ec = error_category::create_mem_bio_failed;
+
548 return {};
+
549 }
+
550
+
551 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
552 PEM_read_bio_X509(certbio.get(), nullptr, nullptr, const_cast<char*>(pw.c_str())), X509_free);
+
553 if (!cert) {
+
554 ec = error_category::cert_load_failed;
+
555 return {};
+
556 }
+
557 std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)> key(X509_get_pubkey(cert.get()), EVP_PKEY_free);
+
558 if (!key) {
+
559 ec = error_category::get_key_failed;
+
560 return {};
+
561 }
+
562 if (PEM_write_bio_PUBKEY(keybio.get(), key.get()) == 0) {
+
563 ec = error_category::write_key_failed;
+
564 return {};
+
565 }
+
566
+
567 return write_bio_to_string<error_category>(keybio, ec);
+
568 }
+
+
569
+
578 template<typename error_category = error::rsa_error>
+
+
579 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw = "") {
+
580 std::error_code ec;
+
581 auto res = extract_pubkey_from_cert<error_category>(certstr, pw, ec);
+ +
583 return res;
+
584 }
+
+
585
+
+
592 inline std::string convert_der_to_pem(const std::string& cert_der_str, std::error_code& ec) {
+
593 ec.clear();
+
594
+
595 auto c_str = reinterpret_cast<const unsigned char*>(cert_der_str.c_str());
+
596
+
597 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
598 d2i_X509(NULL, &c_str, static_cast<int>(cert_der_str.size())), X509_free);
+
599 auto certbio = make_mem_buf_bio();
+
600 if (!cert || !certbio) {
+
601 ec = error::rsa_error::create_mem_bio_failed;
+
602 return {};
+
603 }
+
604
+
605 if (!PEM_write_bio_X509(certbio.get(), cert.get())) {
+
606 ec = error::rsa_error::write_cert_failed;
+
607 return {};
+
608 }
+
609
+
610 return write_bio_to_string(certbio, ec);
+
611 }
+
+
612
+
627 template<typename Decode>
+
+
628 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode,
+
629 std::error_code& ec) {
+
630 ec.clear();
+
631 const auto decoded_str = decode(cert_base64_der_str);
+
632 return convert_der_to_pem(decoded_str, ec);
+
633 }
+
+
634
+
649 template<typename Decode>
+
+
650 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode) {
+
651 std::error_code ec;
+
652 auto res = convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+ +
654 return res;
+
655 }
+
+
656
+
+
663 inline std::string convert_der_to_pem(const std::string& cert_der_str) {
+
664 std::error_code ec;
+
665 auto res = convert_der_to_pem(cert_der_str, ec);
+ +
667 return res;
+
668 }
+
+
669
+
670#ifndef JWT_DISABLE_BASE64
+
+
680 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, std::error_code& ec) {
+
681 auto decode = [](const std::string& token) {
+
682 return base::decode<alphabet::base64>(base::pad<alphabet::base64>(token));
+
683 };
+
684 return convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+
685 }
+
+
686
+
+
696 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str) {
+
697 std::error_code ec;
+
698 auto res = convert_base64_der_to_pem(cert_base64_der_str, ec);
+ +
700 return res;
+
701 }
+
+
702#endif
+
713 template<typename error_category = error::rsa_error>
+
+
714 evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password,
+
715 std::error_code& ec) {
+
716 ec.clear();
+
717 auto pubkey_bio = make_mem_buf_bio();
+
718 if (!pubkey_bio) {
+
719 ec = error_category::create_mem_bio_failed;
+
720 return {};
+
721 }
+
722 if (key.substr(0, 27) == "-----BEGIN CERTIFICATE-----") {
+
723 auto epkey = helper::extract_pubkey_from_cert<error_category>(key, password, ec);
+
724 if (ec) return {};
+
725 const int len = static_cast<int>(epkey.size());
+
726 if (BIO_write(pubkey_bio.get(), epkey.data(), len) != len) {
+
727 ec = error_category::load_key_bio_write;
+
728 return {};
+
729 }
+
730 } else {
+
731 const int len = static_cast<int>(key.size());
+
732 if (BIO_write(pubkey_bio.get(), key.data(), len) != len) {
+
733 ec = error_category::load_key_bio_write;
+
734 return {};
+
735 }
+
736 }
+
737
+
738 evp_pkey_handle pkey(PEM_read_bio_PUBKEY(
+
739 pubkey_bio.get(), nullptr, nullptr,
+
740 (void*)password.data())); // NOLINT(google-readability-casting) requires `const_cast`
+
741 if (!pkey) ec = error_category::load_key_bio_read;
+
742 return pkey;
+
743 }
+
+
744
+
755 template<typename error_category = error::rsa_error>
+
+
756 inline evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password = "") {
+
757 std::error_code ec;
+
758 auto res = load_public_key_from_string<error_category>(key, password, ec);
+ +
760 return res;
+
761 }
+
+
762
+
771 template<typename error_category = error::rsa_error>
+
+
772 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password,
+
773 std::error_code& ec) {
+
774 ec.clear();
+
775 auto private_key_bio = make_mem_buf_bio();
+
776 if (!private_key_bio) {
+
777 ec = error_category::create_mem_bio_failed;
+
778 return {};
+
779 }
+
780 const int len = static_cast<int>(key.size());
+
781 if (BIO_write(private_key_bio.get(), key.data(), len) != len) {
+
782 ec = error_category::load_key_bio_write;
+
783 return {};
+
784 }
+
785 evp_pkey_handle pkey(
+
786 PEM_read_bio_PrivateKey(private_key_bio.get(), nullptr, nullptr, const_cast<char*>(password.c_str())));
+
787 if (!pkey) ec = error_category::load_key_bio_read;
+
788 return pkey;
+
789 }
+
+
790
+
799 template<typename error_category = error::rsa_error>
+
+
800 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password = "") {
+
801 std::error_code ec;
+
802 auto res = load_private_key_from_string<error_category>(key, password, ec);
+ +
804 return res;
+
805 }
+
+
806
+
+
818 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key, const std::string& password,
+
819 std::error_code& ec) {
+
820 return load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+
821 }
+
+
822
+
828 inline
+
829#ifdef JWT_OPENSSL_1_0_0
+
830 std::string
+
831 bn2raw(BIGNUM* bn)
+
832#else
+
833 std::string
+
+
834 bn2raw(const BIGNUM* bn)
+
835#endif
+
836 {
+
837 std::string res(BN_num_bytes(bn), '\0');
+
838 BN_bn2bin(bn, (unsigned char*)res.data()); // NOLINT(google-readability-casting) requires `const_cast`
+
839 return res;
+
840 }
+
+
+
847 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw, std::error_code& ec) {
+
848 auto bn =
+
849 BN_bin2bn(reinterpret_cast<const unsigned char*>(raw.data()), static_cast<int>(raw.size()), nullptr);
+
850 // https://www.openssl.org/docs/man1.1.1/man3/BN_bin2bn.html#RETURN-VALUES
+
851 if (!bn) {
+
852 ec = error::rsa_error::set_rsa_failed;
+
853 return {nullptr, BN_free};
+
854 }
+
855 return {bn, BN_free};
+
856 }
+
+
+
862 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw) {
+
863 std::error_code ec;
+
864 auto res = raw2bn(raw, ec);
+ +
866 return res;
+
867 }
+
+
868
+
+
880 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key,
+
881 const std::string& password = "") {
+
882 std::error_code ec;
+
883 auto res = load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
885 return res;
+
886 }
+
+
887
+
+
897 inline evp_pkey_handle load_private_ec_key_from_string(const std::string& key, const std::string& password,
+
898 std::error_code& ec) {
+
899 return load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+
900 }
+
+
901
+
916 template<typename Decode>
+
+
917 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
918 Decode decode, std::error_code& ec) {
+
919 ec.clear();
+
920 auto decoded_modulus = decode(modulus);
+
921 auto decoded_exponent = decode(exponent);
+
922
+
923 auto n = helper::raw2bn(decoded_modulus, ec);
+
924 if (ec) return {};
+
925 auto e = helper::raw2bn(decoded_exponent, ec);
+
926 if (ec) return {};
+
927
+
928#if defined(JWT_OPENSSL_3_0)
+
929 // OpenSSL deprecated mutable keys and there is a new way for making them
+
930 // https://mta.openssl.org/pipermail/openssl-users/2021-July/013994.html
+
931 // https://www.openssl.org/docs/man3.1/man3/OSSL_PARAM_BLD_new.html#Example-2
+
932 std::unique_ptr<OSSL_PARAM_BLD, decltype(&OSSL_PARAM_BLD_free)> param_bld(OSSL_PARAM_BLD_new(),
+
933 OSSL_PARAM_BLD_free);
+
934 if (!param_bld) {
+
935 ec = error::rsa_error::create_context_failed;
+
936 return {};
+
937 }
+
938
+
939 if (OSSL_PARAM_BLD_push_BN(param_bld.get(), "n", n.get()) != 1 ||
+
940 OSSL_PARAM_BLD_push_BN(param_bld.get(), "e", e.get()) != 1) {
+
941 ec = error::rsa_error::set_rsa_failed;
+
942 return {};
+
943 }
+
944
+
945 std::unique_ptr<OSSL_PARAM, decltype(&OSSL_PARAM_free)> params(OSSL_PARAM_BLD_to_param(param_bld.get()),
+
946 OSSL_PARAM_free);
+
947 if (!params) {
+
948 ec = error::rsa_error::set_rsa_failed;
+
949 return {};
+
950 }
+
951
+
952 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
953 EVP_PKEY_CTX_new_from_name(nullptr, "RSA", nullptr), EVP_PKEY_CTX_free);
+
954 if (!ctx) {
+
955 ec = error::rsa_error::create_context_failed;
+
956 return {};
+
957 }
+
958
+
959 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html#EXAMPLES
+
960 // Error codes based on https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_fromdata_init.html#RETURN-VALUES
+
961 EVP_PKEY* pkey = NULL;
+
962 if (EVP_PKEY_fromdata_init(ctx.get()) <= 0 ||
+
963 EVP_PKEY_fromdata(ctx.get(), &pkey, EVP_PKEY_KEYPAIR, params.get()) <= 0) {
+
964 // It's unclear if this can fail after allocating but free it anyways
+
965 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html
+
966 EVP_PKEY_free(pkey);
+
967
+
968 ec = error::rsa_error::cert_load_failed;
+
969 return {};
+
970 }
+
971
+
972 // Transfer ownership so we get ref counter and cleanup
+
973 evp_pkey_handle rsa(pkey);
+
974
+
975#else
+
976 std::unique_ptr<RSA, decltype(&RSA_free)> rsa(RSA_new(), RSA_free);
+
977
+
978#if defined(JWT_OPENSSL_1_1_1) || defined(JWT_OPENSSL_1_1_0)
+
979 // After this RSA_free will also free the n and e big numbers
+
980 // See https://github.com/Thalhammer/jwt-cpp/pull/298#discussion_r1282619186
+
981 if (RSA_set0_key(rsa.get(), n.get(), e.get(), nullptr) == 1) {
+
982 // This can only fail we passed in NULL for `n` or `e`
+
983 // https://github.com/openssl/openssl/blob/d6e4056805f54bb1a0ef41fa3a6a35b70c94edba/crypto/rsa/rsa_lib.c#L396
+
984 // So to make sure there is no memory leak, we hold the references
+
985 n.release();
+
986 e.release();
+
987 } else {
+
988 ec = error::rsa_error::set_rsa_failed;
+
989 return {};
+
990 }
+
991#elif defined(JWT_OPENSSL_1_0_0)
+
992 rsa->e = e.release();
+
993 rsa->n = n.release();
+
994 rsa->d = nullptr;
+
995#endif
+
996#endif
+
997
+
998 auto pub_key_bio = make_mem_buf_bio();
+
999 if (!pub_key_bio) {
+
1000 ec = error::rsa_error::create_mem_bio_failed;
+
1001 return {};
+
1002 }
+
1003
+
1004 auto write_pem_to_bio =
+
1005#if defined(JWT_OPENSSL_3_0)
+
1006 // https://www.openssl.org/docs/man3.1/man3/PEM_write_bio_RSA_PUBKEY.html
+
1007 &PEM_write_bio_PUBKEY;
+
1008#else
+
1009 &PEM_write_bio_RSA_PUBKEY;
+
1010#endif
+
1011 if (write_pem_to_bio(pub_key_bio.get(), rsa.get()) != 1) {
+
1012 ec = error::rsa_error::load_key_bio_write;
+
1013 return {};
+
1014 }
+
1015
+
1016 return write_bio_to_string<error::rsa_error>(pub_key_bio, ec);
+
1017 }
+
+
1018
+
1032 template<typename Decode>
+
+
1033 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
1034 Decode decode) {
+
1035 std::error_code ec;
+
1036 auto res = create_public_key_from_rsa_components(modulus, exponent, decode, ec);
+ +
1038 return res;
+
1039 }
+
+
1040
+
1041#ifndef JWT_DISABLE_BASE64
+
+
1052 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1053 const std::string& exponent, std::error_code& ec) {
+
1054 auto decode = [](const std::string& token) {
+
1055 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(token));
+
1056 };
+
1057 return create_public_key_from_rsa_components(modulus, exponent, std::move(decode), ec);
+
1058 }
+
+
+
1068 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1069 const std::string& exponent) {
+
1070 std::error_code ec;
+
1071 auto res = create_public_key_from_rsa_components(modulus, exponent, ec);
+ +
1073 return res;
+
1074 }
+
+
1075#endif
+
+ +
1086 const std::string& password = "") {
+
1087 std::error_code ec;
+
1088 auto res = load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
1090 return res;
+
1091 }
+
+
1092 } // namespace helper
+
+
1093
+
+
1103 namespace algorithm {
+
+
1111 struct none {
+
+
1115 std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+
1116 ec.clear();
+
1117 return {};
+
1118 }
+
+
+
1126 void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+
1127 ec.clear();
+
1128 if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
1129 }
+
+
1131 std::string name() const { return "none"; }
+
1132 };
+
+
+
1136 struct hmacsha {
+
+
1144 hmacsha(std::string key, const EVP_MD* (*md)(), std::string name)
+
1145 : secret(std::move(key)), md(md), alg_name(std::move(name)) {}
+
+
+
1153 std::string sign(const std::string& data, std::error_code& ec) const {
+
1154 ec.clear();
+
1155 std::string res(static_cast<size_t>(EVP_MAX_MD_SIZE), '\0');
+
1156 auto len = static_cast<unsigned int>(res.size());
+
1157 if (HMAC(md(), secret.data(), static_cast<int>(secret.size()),
+
1158 reinterpret_cast<const unsigned char*>(data.data()), static_cast<int>(data.size()),
+
1159 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1160 &len) == nullptr) {
+
1161 ec = error::signature_generation_error::hmac_failed;
+
1162 return {};
+
1163 }
+
1164 res.resize(len);
+
1165 return res;
+
1166 }
+
+
+
1174 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1175 ec.clear();
+
1176 auto res = sign(data, ec);
+
1177 if (ec) return;
+
1178
+
1179 bool matched = true;
+
1180 for (size_t i = 0; i < std::min<size_t>(res.size(), signature.size()); i++)
+
1181 if (res[i] != signature[i]) matched = false;
+
1182 if (res.size() != signature.size()) matched = false;
+
1183 if (!matched) {
+
1184 ec = error::signature_verification_error::invalid_signature;
+
1185 return;
+
1186 }
+
1187 }
+
+
1193 std::string name() const { return alg_name; }
+
1194
+
1195 private:
+
1197 const std::string secret;
+
1199 const EVP_MD* (*md)();
+
1201 const std::string alg_name;
+
1202 };
+
+
+
1206 struct rsa {
+
+
1217 rsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1218 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1219 : md(md), alg_name(std::move(name)) {
+
1220 if (!private_key.empty()) {
+
1221 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1222 } else if (!public_key.empty()) {
+
1223 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1224 } else
+
1225 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1226 }
+
+
+
1233 std::string sign(const std::string& data, std::error_code& ec) const {
+
1234 ec.clear();
+
1235 auto ctx = helper::make_evp_md_ctx();
+
1236 if (!ctx) {
+
1237 ec = error::signature_generation_error::create_context_failed;
+
1238 return {};
+
1239 }
+
1240 if (!EVP_SignInit(ctx.get(), md())) {
+
1241 ec = error::signature_generation_error::signinit_failed;
+
1242 return {};
+
1243 }
+
1244
+
1245 std::string res(EVP_PKEY_size(pkey.get()), '\0');
+
1246 unsigned int len = 0;
+
1247
+
1248 if (!EVP_SignUpdate(ctx.get(), data.data(), data.size())) {
+
1249 ec = error::signature_generation_error::signupdate_failed;
+
1250 return {};
+
1251 }
+
1252 if (EVP_SignFinal(ctx.get(), (unsigned char*)res.data(), &len, pkey.get()) == 0) {
+
1253 ec = error::signature_generation_error::signfinal_failed;
+
1254 return {};
+
1255 }
+
1256
+
1257 res.resize(len);
+
1258 return res;
+
1259 }
+
+
+
1267 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1268 ec.clear();
+
1269 auto ctx = helper::make_evp_md_ctx();
+
1270 if (!ctx) {
+
1271 ec = error::signature_verification_error::create_context_failed;
+
1272 return;
+
1273 }
+
1274 if (!EVP_VerifyInit(ctx.get(), md())) {
+
1275 ec = error::signature_verification_error::verifyinit_failed;
+
1276 return;
+
1277 }
+
1278 if (!EVP_VerifyUpdate(ctx.get(), data.data(), data.size())) {
+
1279 ec = error::signature_verification_error::verifyupdate_failed;
+
1280 return;
+
1281 }
+
1282 auto res = EVP_VerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1283 static_cast<unsigned int>(signature.size()), pkey.get());
+
1284 if (res != 1) {
+
1285 ec = error::signature_verification_error::verifyfinal_failed;
+
1286 return;
+
1287 }
+
1288 }
+
+
1293 std::string name() const { return alg_name; }
+
1294
+
1295 private:
+ +
1299 const EVP_MD* (*md)();
+
1301 const std::string alg_name;
+
1302 };
+
+
+
1306 struct ecdsa {
+
+
1318 ecdsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1319 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name, size_t siglen)
+
1320 : md(md), alg_name(std::move(name)), signature_length(siglen) {
+
1321 if (!private_key.empty()) {
+
1322 pkey = helper::load_private_ec_key_from_string(private_key, private_key_password);
+
1323 check_private_key(pkey.get());
+
1324 } else if (!public_key.empty()) {
+
1325 pkey = helper::load_public_ec_key_from_string(public_key, public_key_password);
+
1326 check_public_key(pkey.get());
+
1327 } else {
+
1328 throw error::ecdsa_exception(error::ecdsa_error::no_key_provided);
+
1329 }
+
1330 if (!pkey) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1331
+
1332 size_t keysize = EVP_PKEY_bits(pkey.get());
+
1333 if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
+
1334 throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
+
1335 }
+
+
1336
+
+
1343 std::string sign(const std::string& data, std::error_code& ec) const {
+
1344 ec.clear();
+
1345 auto ctx = helper::make_evp_md_ctx();
+
1346 if (!ctx) {
+
1347 ec = error::signature_generation_error::create_context_failed;
+
1348 return {};
+
1349 }
+
1350 if (!EVP_DigestSignInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1351 ec = error::signature_generation_error::signinit_failed;
+
1352 return {};
+
1353 }
+
1354 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1355 ec = error::signature_generation_error::digestupdate_failed;
+
1356 return {};
+
1357 }
+
1358
+
1359 size_t len = 0;
+
1360 if (!EVP_DigestSignFinal(ctx.get(), nullptr, &len)) {
+
1361 ec = error::signature_generation_error::signfinal_failed;
+
1362 return {};
+
1363 }
+
1364 std::string res(len, '\0');
+
1365 if (!EVP_DigestSignFinal(ctx.get(), (unsigned char*)res.data(), &len)) {
+
1366 ec = error::signature_generation_error::signfinal_failed;
+
1367 return {};
+
1368 }
+
1369
+
1370 res.resize(len);
+
1371 return der_to_p1363_signature(res, ec);
+
1372 }
+
+
1373
+
+
1380 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1381 ec.clear();
+
1382 std::string der_signature = p1363_to_der_signature(signature, ec);
+
1383 if (ec) { return; }
+
1384
+
1385 auto ctx = helper::make_evp_md_ctx();
+
1386 if (!ctx) {
+
1387 ec = error::signature_verification_error::create_context_failed;
+
1388 return;
+
1389 }
+
1390 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1391 ec = error::signature_verification_error::verifyinit_failed;
+
1392 return;
+
1393 }
+
1394 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1395 ec = error::signature_verification_error::verifyupdate_failed;
+
1396 return;
+
1397 }
+
1398
+
1399#if OPENSSL_VERSION_NUMBER < 0x10002000L
+
1400 unsigned char* der_sig_data = reinterpret_cast<unsigned char*>(const_cast<char*>(der_signature.data()));
+
1401#else
+
1402 const unsigned char* der_sig_data = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1403#endif
+
1404 auto res =
+
1405 EVP_DigestVerifyFinal(ctx.get(), der_sig_data, static_cast<unsigned int>(der_signature.length()));
+
1406 if (res == 0) {
+
1407 ec = error::signature_verification_error::invalid_signature;
+
1408 return;
+
1409 }
+
1410 if (res == -1) {
+
1411 ec = error::signature_verification_error::verifyfinal_failed;
+
1412 return;
+
1413 }
+
1414 }
+
+
1419 std::string name() const { return alg_name; }
+
1420
+
1421 private:
+
1422 static void check_public_key(EVP_PKEY* pkey) {
+
1423#ifdef JWT_OPENSSL_3_0
+
1424 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1425 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1426 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1427 if (EVP_PKEY_public_check(ctx.get()) != 1) {
+
1428 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1429 }
+
1430#else
+
1431 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1432 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1433 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1434#endif
+
1435 }
+
1436
+
1437 static void check_private_key(EVP_PKEY* pkey) {
+
1438#ifdef JWT_OPENSSL_3_0
+
1439 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1440 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1441 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1442 if (EVP_PKEY_private_check(ctx.get()) != 1) {
+
1443 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1444 }
+
1445#else
+
1446 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1447 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1448 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1449#endif
+
1450 }
+
1451
+
1452 std::string der_to_p1363_signature(const std::string& der_signature, std::error_code& ec) const {
+
1453 const unsigned char* possl_signature = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1454 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(
+
1455 d2i_ECDSA_SIG(nullptr, &possl_signature, static_cast<long>(der_signature.length())),
+
1456 ECDSA_SIG_free);
+
1457 if (!sig) {
+
1458 ec = error::signature_generation_error::signature_decoding_failed;
+
1459 return {};
+
1460 }
+
1461
+
1462#ifdef JWT_OPENSSL_1_0_0
+
1463 auto rr = helper::bn2raw(sig->r);
+
1464 auto rs = helper::bn2raw(sig->s);
+
1465#else
+
1466 const BIGNUM* r;
+
1467 const BIGNUM* s;
+
1468 ECDSA_SIG_get0(sig.get(), &r, &s);
+
1469 auto rr = helper::bn2raw(r);
+
1470 auto rs = helper::bn2raw(s);
+
1471#endif
+
1472 if (rr.size() > signature_length / 2 || rs.size() > signature_length / 2)
+
1473 throw std::logic_error("bignum size exceeded expected length");
+
1474 rr.insert(0, signature_length / 2 - rr.size(), '\0');
+
1475 rs.insert(0, signature_length / 2 - rs.size(), '\0');
+
1476 return rr + rs;
+
1477 }
+
1478
+
1479 std::string p1363_to_der_signature(const std::string& signature, std::error_code& ec) const {
+
1480 ec.clear();
+
1481 auto r = helper::raw2bn(signature.substr(0, signature.size() / 2), ec);
+
1482 if (ec) return {};
+
1483 auto s = helper::raw2bn(signature.substr(signature.size() / 2), ec);
+
1484 if (ec) return {};
+
1485
+
1486 ECDSA_SIG* psig;
+
1487#ifdef JWT_OPENSSL_1_0_0
+
1488 ECDSA_SIG sig;
+
1489 sig.r = r.get();
+
1490 sig.s = s.get();
+
1491 psig = &sig;
+
1492#else
+
1493 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(ECDSA_SIG_new(), ECDSA_SIG_free);
+
1494 if (!sig) {
+
1495 ec = error::signature_verification_error::create_context_failed;
+
1496 return {};
+
1497 }
+
1498 ECDSA_SIG_set0(sig.get(), r.release(), s.release());
+
1499 psig = sig.get();
+
1500#endif
+
1501
+
1502 int length = i2d_ECDSA_SIG(psig, nullptr);
+
1503 if (length < 0) {
+
1504 ec = error::signature_verification_error::signature_encoding_failed;
+
1505 return {};
+
1506 }
+
1507 std::string der_signature(length, '\0');
+
1508 unsigned char* psbuffer = (unsigned char*)der_signature.data();
+
1509 length = i2d_ECDSA_SIG(psig, &psbuffer);
+
1510 if (length < 0) {
+
1511 ec = error::signature_verification_error::signature_encoding_failed;
+
1512 return {};
+
1513 }
+
1514 der_signature.resize(length);
+
1515 return der_signature;
+
1516 }
+
1517
+
1519 helper::evp_pkey_handle pkey;
+
1521 const EVP_MD* (*md)();
+
1523 const std::string alg_name;
+
1525 const size_t signature_length;
+
1526 };
+
+
1527
+
1528#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
1537 struct eddsa {
+
+
1548 eddsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1549 const std::string& private_key_password, std::string name)
+
1550 : alg_name(std::move(name)) {
+
1551 if (!private_key.empty()) {
+
1552 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1553 } else if (!public_key.empty()) {
+
1554 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1555 } else
+
1556 throw error::ecdsa_exception(error::ecdsa_error::load_key_bio_read);
+
1557 }
+
+
+
1564 std::string sign(const std::string& data, std::error_code& ec) const {
+
1565 ec.clear();
+
1566 auto ctx = helper::make_evp_md_ctx();
+
1567 if (!ctx) {
+
1568 ec = error::signature_generation_error::create_context_failed;
+
1569 return {};
+
1570 }
+
1571 if (!EVP_DigestSignInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1572 ec = error::signature_generation_error::signinit_failed;
+
1573 return {};
+
1574 }
+
1575
+
1576 size_t len = EVP_PKEY_size(pkey.get());
+
1577 std::string res(len, '\0');
+
1578
+
1579// LibreSSL is the special kid in the block, as it does not support EVP_DigestSign.
+
1580// OpenSSL on the otherhand does not support using EVP_DigestSignUpdate for eddsa, which is why we end up with this
+
1581// mess.
+
1582#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1583 ERR_clear_error();
+
1584 if (EVP_DigestSignUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()), data.size()) !=
+
1585 1) {
+
1586 std::cout << ERR_error_string(ERR_get_error(), NULL) << std::endl;
+
1587 ec = error::signature_generation_error::signupdate_failed;
+
1588 return {};
+
1589 }
+
1590 if (EVP_DigestSignFinal(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len) != 1) {
+
1591 ec = error::signature_generation_error::signfinal_failed;
+
1592 return {};
+
1593 }
+
1594#else
+
1595 if (EVP_DigestSign(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len,
+
1596 reinterpret_cast<const unsigned char*>(data.data()), data.size()) != 1) {
+
1597 ec = error::signature_generation_error::signfinal_failed;
+
1598 return {};
+
1599 }
+
1600#endif
+
1601
+
1602 res.resize(len);
+
1603 return res;
+
1604 }
+
+
1605
+
+
1612 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1613 ec.clear();
+
1614 auto ctx = helper::make_evp_md_ctx();
+
1615 if (!ctx) {
+
1616 ec = error::signature_verification_error::create_context_failed;
+
1617 return;
+
1618 }
+
1619 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1620 ec = error::signature_verification_error::verifyinit_failed;
+
1621 return;
+
1622 }
+
1623// LibreSSL is the special kid in the block, as it does not support EVP_DigestVerify.
+
1624// OpenSSL on the otherhand does not support using EVP_DigestVerifyUpdate for eddsa, which is why we end up with this
+
1625// mess.
+
1626#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1627 if (EVP_DigestVerifyUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()),
+
1628 data.size()) != 1) {
+
1629 ec = error::signature_verification_error::verifyupdate_failed;
+
1630 return;
+
1631 }
+
1632 if (EVP_DigestVerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1633 signature.size()) != 1) {
+
1634 ec = error::signature_verification_error::verifyfinal_failed;
+
1635 return;
+
1636 }
+
1637#else
+
1638 auto res = EVP_DigestVerify(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1639 signature.size(), reinterpret_cast<const unsigned char*>(data.data()),
+
1640 data.size());
+
1641 if (res != 1) {
+
1642 ec = error::signature_verification_error::verifyfinal_failed;
+
1643 return;
+
1644 }
+
1645#endif
+
1646 }
+
+
1651 std::string name() const { return alg_name; }
+
1652
+
1653 private:
+ +
1657 const std::string alg_name;
+
1658 };
+
+
1659#endif
+
+
1663 struct pss {
+
+
1673 pss(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1674 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1675 : md(md), alg_name(std::move(name)) {
+
1676 if (!private_key.empty()) {
+
1677 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1678 } else if (!public_key.empty()) {
+
1679 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1680 } else
+
1681 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1682 }
+
+
1683
+
+
1690 std::string sign(const std::string& data, std::error_code& ec) const {
+
1691 ec.clear();
+
1692 auto md_ctx = helper::make_evp_md_ctx();
+
1693 if (!md_ctx) {
+
1694 ec = error::signature_generation_error::create_context_failed;
+
1695 return {};
+
1696 }
+
1697 EVP_PKEY_CTX* ctx = nullptr;
+
1698 if (EVP_DigestSignInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1699 ec = error::signature_generation_error::signinit_failed;
+
1700 return {};
+
1701 }
+
1702 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1703 ec = error::signature_generation_error::rsa_padding_failed;
+
1704 return {};
+
1705 }
+
1706// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1707// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1708#ifndef LIBWOLFSSL_VERSION_HEX
+
1709 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1710 ec = error::signature_generation_error::set_rsa_pss_saltlen_failed;
+
1711 return {};
+
1712 }
+
1713#endif
+
1714 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1715 ec = error::signature_generation_error::digestupdate_failed;
+
1716 return {};
+
1717 }
+
1718
+
1719 size_t size = EVP_PKEY_size(pkey.get());
+
1720 std::string res(size, 0x00);
+
1721 if (EVP_DigestSignFinal(
+
1722 md_ctx.get(),
+
1723 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1724 &size) <= 0) {
+
1725 ec = error::signature_generation_error::signfinal_failed;
+
1726 return {};
+
1727 }
+
1728
+
1729 return res;
+
1730 }
+
+
1731
+
+
1738 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1739 ec.clear();
+
1740
+
1741 auto md_ctx = helper::make_evp_md_ctx();
+
1742 if (!md_ctx) {
+
1743 ec = error::signature_verification_error::create_context_failed;
+
1744 return;
+
1745 }
+
1746 EVP_PKEY_CTX* ctx = nullptr;
+
1747 if (EVP_DigestVerifyInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1748 ec = error::signature_verification_error::verifyinit_failed;
+
1749 return;
+
1750 }
+
1751 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1752 ec = error::signature_generation_error::rsa_padding_failed;
+
1753 return;
+
1754 }
+
1755// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1756// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1757#ifndef LIBWOLFSSL_VERSION_HEX
+
1758 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1759 ec = error::signature_verification_error::set_rsa_pss_saltlen_failed;
+
1760 return;
+
1761 }
+
1762#endif
+
1763 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1764 ec = error::signature_verification_error::verifyupdate_failed;
+
1765 return;
+
1766 }
+
1767
+
1768 if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(), signature.size()) <= 0) {
+
1769 ec = error::signature_verification_error::verifyfinal_failed;
+
1770 return;
+
1771 }
+
1772 }
+
+
1777 std::string name() const { return alg_name; }
+
1778
+
1779 private:
+ +
1783 const EVP_MD* (*md)();
+
1785 const std::string alg_name;
+
1786 };
+
+
1787
+
+
1791 struct hs256 : public hmacsha {
+
1796 explicit hs256(std::string key) : hmacsha(std::move(key), EVP_sha256, "HS256") {}
+
1797 };
+
+
+
1801 struct hs384 : public hmacsha {
+
1806 explicit hs384(std::string key) : hmacsha(std::move(key), EVP_sha384, "HS384") {}
+
1807 };
+
+
+
1811 struct hs512 : public hmacsha {
+
1816 explicit hs512(std::string key) : hmacsha(std::move(key), EVP_sha512, "HS512") {}
+
1817 };
+
+
+
1823 struct rs256 : public rsa {
+
+
1832 explicit rs256(const std::string& public_key, const std::string& private_key = "",
+
1833 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1834 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "RS256") {}
+
+
1835 };
+
+
+
1839 struct rs384 : public rsa {
+
+
1847 explicit rs384(const std::string& public_key, const std::string& private_key = "",
+
1848 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1849 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "RS384") {}
+
+
1850 };
+
+
+
1854 struct rs512 : public rsa {
+
+
1862 explicit rs512(const std::string& public_key, const std::string& private_key = "",
+
1863 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1864 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "RS512") {}
+
+
1865 };
+
+
+
1869 struct es256 : public ecdsa {
+
+
1879 explicit es256(const std::string& public_key, const std::string& private_key = "",
+
1880 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1881 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256", 64) {}
+
+
1882 };
+
+
+
1886 struct es384 : public ecdsa {
+
+
1896 explicit es384(const std::string& public_key, const std::string& private_key = "",
+
1897 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1898 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "ES384", 96) {}
+
+
1899 };
+
+
+
1903 struct es512 : public ecdsa {
+
+
1913 explicit es512(const std::string& public_key, const std::string& private_key = "",
+
1914 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1915 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "ES512", 132) {}
+
+
1916 };
+
+
+
1920 struct es256k : public ecdsa {
+
+
1929 explicit es256k(const std::string& public_key, const std::string& private_key = "",
+
1930 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1931 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256K", 64) {}
+
+
1932 };
+
+
1933
+
1934#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
1942 struct ed25519 : public eddsa {
+
+
1952 explicit ed25519(const std::string& public_key, const std::string& private_key = "",
+
1953 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1954 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
1955 };
+
+
1956
+
+
1964 struct ed448 : public eddsa {
+
+
1974 explicit ed448(const std::string& public_key, const std::string& private_key = "",
+
1975 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1976 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
1977 };
+
+
1978#endif
+
1979
+
+
1983 struct ps256 : public pss {
+
+
1991 explicit ps256(const std::string& public_key, const std::string& private_key = "",
+
1992 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1993 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "PS256") {}
+
+
1994 };
+
+
+
1998 struct ps384 : public pss {
+
+
2006 explicit ps384(const std::string& public_key, const std::string& private_key = "",
+
2007 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2008 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "PS384") {}
+
+
2009 };
+
+
+
2013 struct ps512 : public pss {
+
+
2021 explicit ps512(const std::string& public_key, const std::string& private_key = "",
+
2022 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2023 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "PS512") {}
+
+
2024 };
+
+
2025 } // namespace algorithm
+
+
2026
+
+
2030 namespace json {
+
2038 enum class type { boolean, integer, number, string, array, object };
+
2039 } // namespace json
+
+
2040
+
2041 namespace details {
+
2042#ifdef __cpp_lib_void_t
+
2043 template<typename... Ts>
+
2044 using void_t = std::void_t<Ts...>;
+
2045#else
+
2046 // https://en.cppreference.com/w/cpp/types/void_t
+
2047 template<typename... Ts>
+
2048 struct make_void {
+
2049 using type = void;
+
2050 };
+
2051
+
2052 template<typename... Ts>
+
2053 using void_t = typename make_void<Ts...>::type;
+
2054#endif
+
2055
+
2056#ifdef __cpp_lib_experimental_detect
+
2057 template<template<typename...> class _Op, typename... _Args>
+
2058 using is_detected = std::experimental::is_detected<_Op, _Args...>;
+
2059#else
+
2060 struct nonesuch {
+
2061 nonesuch() = delete;
+
2062 ~nonesuch() = delete;
+
2063 nonesuch(nonesuch const&) = delete;
+
2064 nonesuch(nonesuch const&&) = delete;
+
2065 void operator=(nonesuch const&) = delete;
+
2066 void operator=(nonesuch&&) = delete;
+
2067 };
+
2068
+
2069 // https://en.cppreference.com/w/cpp/experimental/is_detected
+
2070 template<class Default, class AlwaysVoid, template<class...> class Op, class... Args>
+
2071 struct detector {
+
2072 using value = std::false_type;
+
2073 using type = Default;
+
2074 };
+
2075
+
2076 template<class Default, template<class...> class Op, class... Args>
+
2077 struct detector<Default, void_t<Op<Args...>>, Op, Args...> {
+
2078 using value = std::true_type;
+
2079 using type = Op<Args...>;
+
2080 };
+
2081
+
2082 template<template<class...> class Op, class... Args>
+
2083 using is_detected = typename detector<nonesuch, void, Op, Args...>::value;
+
2084#endif
+
2085
+
2086 template<typename T, typename Signature>
+
2087 using is_signature = typename std::is_same<T, Signature>;
+
2088
+
2089 template<typename traits_type, template<typename...> class Op, typename Signature>
+
2090 struct is_function_signature_detected {
+
2091 using type = Op<traits_type>;
+
2092 static constexpr auto value = is_detected<Op, traits_type>::value && std::is_function<type>::value &&
+
2093 is_signature<type, Signature>::value;
+
2094 };
+
2095
+
2096 template<typename traits_type, typename value_type>
+
2097 struct supports_get_type {
+
2098 template<typename T>
+
2099 using get_type_t = decltype(T::get_type);
+
2100
+
2101 static constexpr auto value =
+
2102 is_function_signature_detected<traits_type, get_type_t, json::type(const value_type&)>::value;
+
2103
+
2104 // Internal assertions for better feedback
+
2105 static_assert(value, "traits implementation must provide `jwt::json::type get_type(const value_type&)`");
+
2106 };
+
2107
+
2108#define JWT_CPP_JSON_TYPE_TYPE(TYPE) json_##TYPE_type
+
2109#define JWT_CPP_AS_TYPE_T(TYPE) as_##TYPE_t
+
2110#define JWT_CPP_SUPPORTS_AS(TYPE) \
+
2111 template<typename traits_type, typename value_type, typename JWT_CPP_JSON_TYPE_TYPE(TYPE)> \
+
2112 struct supports_as_##TYPE { \
+
2113 template<typename T> \
+
2114 using JWT_CPP_AS_TYPE_T(TYPE) = decltype(T::as_##TYPE); \
+
2115 \
+
2116 static constexpr auto value = \
+
2117 is_function_signature_detected<traits_type, JWT_CPP_AS_TYPE_T(TYPE), \
+
2118 JWT_CPP_JSON_TYPE_TYPE(TYPE)(const value_type&)>::value; \
+
2119 \
+
2120 static_assert(value, "traits implementation must provide `" #TYPE "_type as_" #TYPE "(const value_type&)`"); \
+
2121 }
+
2122
+
2123 JWT_CPP_SUPPORTS_AS(object);
+
2124 JWT_CPP_SUPPORTS_AS(array);
+
2125 JWT_CPP_SUPPORTS_AS(string);
+
2126 JWT_CPP_SUPPORTS_AS(number);
+
2127 JWT_CPP_SUPPORTS_AS(integer);
+
2128 JWT_CPP_SUPPORTS_AS(boolean);
+
2129
+
2130#undef JWT_CPP_JSON_TYPE_TYPE
+
2131#undef JWT_CPP_AS_TYPE_T
+
2132#undef JWT_CPP_SUPPORTS_AS
+
2133
+
2134 template<typename traits>
+
2135 struct is_valid_traits {
+
2136 static constexpr auto value =
+
2137 supports_get_type<traits, typename traits::value_type>::value &&
+
2138 supports_as_object<traits, typename traits::value_type, typename traits::object_type>::value &&
+
2139 supports_as_array<traits, typename traits::value_type, typename traits::array_type>::value &&
+
2140 supports_as_string<traits, typename traits::value_type, typename traits::string_type>::value &&
+
2141 supports_as_number<traits, typename traits::value_type, typename traits::number_type>::value &&
+
2142 supports_as_integer<traits, typename traits::value_type, typename traits::integer_type>::value &&
+
2143 supports_as_boolean<traits, typename traits::value_type, typename traits::boolean_type>::value;
+
2144 };
+
2145
+
2146 template<typename value_type>
+
2147 struct is_valid_json_value {
+
2148 static constexpr auto value =
+
2149 std::is_default_constructible<value_type>::value &&
+
2150 std::is_constructible<value_type, const value_type&>::value && // a more generic is_copy_constructible
+
2151 std::is_move_constructible<value_type>::value && std::is_assignable<value_type, value_type>::value &&
+
2152 std::is_copy_assignable<value_type>::value && std::is_move_assignable<value_type>::value;
+
2153 // TODO(prince-chrismc): Stream operators
+
2154 };
+
2155
+
2156 // https://stackoverflow.com/a/53967057/8480874
+
2157 template<typename T, typename = void>
+
2158 struct is_iterable : std::false_type {};
+
2159
+
2160 template<typename T>
+
2161 struct is_iterable<T, void_t<decltype(std::begin(std::declval<T>())), decltype(std::end(std::declval<T>())),
+
2162#if __cplusplus > 201402L
+
2163 decltype(std::cbegin(std::declval<T>())), decltype(std::cend(std::declval<T>()))
+
2164#else
+
2165 decltype(std::begin(std::declval<const T>())),
+
2166 decltype(std::end(std::declval<const T>()))
+
2167#endif
+
2168 >> : std::true_type {
+
2169 };
+
2170
+
2171#if __cplusplus > 201703L
+
2172 template<typename T>
+
2173 inline constexpr bool is_iterable_v = is_iterable<T>::value;
+
2174#endif
+
2175
+
2176 template<typename object_type, typename string_type>
+
2177 using is_count_signature = typename std::is_integral<decltype(std::declval<const object_type>().count(
+
2178 std::declval<const string_type>()))>;
+
2179
+
2180 template<typename object_type, typename string_type, typename = void>
+
2181 struct is_subcription_operator_signature : std::false_type {};
+
2182
+
2183 template<typename object_type, typename string_type>
+
2184 struct is_subcription_operator_signature<
+
2185 object_type, string_type,
+
2186 void_t<decltype(std::declval<object_type>().operator[](std::declval<string_type>()))>> : std::true_type {
+
2187 // TODO(prince-chrismc): I am not convienced this is meaningful anymore
+
2188 static_assert(
+
2189 value,
+
2190 "object_type must implementate the subscription operator '[]' taking string_type as an argument");
+
2191 };
+
2192
+
2193 template<typename object_type, typename value_type, typename string_type>
+
2194 using is_at_const_signature =
+
2195 typename std::is_same<decltype(std::declval<const object_type>().at(std::declval<const string_type>())),
+
2196 const value_type&>;
+
2197
+
2198 template<typename value_type, typename string_type, typename object_type>
+
2199 struct is_valid_json_object {
+
2200 template<typename T>
+
2201 using mapped_type_t = typename T::mapped_type;
+
2202 template<typename T>
+
2203 using key_type_t = typename T::key_type;
+
2204 template<typename T>
+
2205 using iterator_t = typename T::iterator;
+
2206 template<typename T>
+
2207 using const_iterator_t = typename T::const_iterator;
+
2208
+
2209 static constexpr auto value =
+
2210 std::is_constructible<value_type, object_type>::value &&
+
2211 is_detected<mapped_type_t, object_type>::value &&
+
2212 std::is_same<typename object_type::mapped_type, value_type>::value &&
+
2213 is_detected<key_type_t, object_type>::value &&
+
2214 (std::is_same<typename object_type::key_type, string_type>::value ||
+
2215 std::is_constructible<typename object_type::key_type, string_type>::value) &&
+
2216 is_detected<iterator_t, object_type>::value && is_detected<const_iterator_t, object_type>::value &&
+
2217 is_iterable<object_type>::value && is_count_signature<object_type, string_type>::value &&
+
2218 is_subcription_operator_signature<object_type, string_type>::value &&
+
2219 is_at_const_signature<object_type, value_type, string_type>::value;
+
2220 };
+
2221
+
2222 template<typename value_type, typename array_type>
+
2223 struct is_valid_json_array {
+
2224 template<typename T>
+
2225 using value_type_t = typename T::value_type;
+
2226
+
2227 static constexpr auto value = std::is_constructible<value_type, array_type>::value &&
+
2228 is_iterable<array_type>::value &&
+
2229 is_detected<value_type_t, array_type>::value &&
+
2230 std::is_same<typename array_type::value_type, value_type>::value;
+
2231 };
+
2232
+
2233 template<typename string_type, typename integer_type>
+
2234 using is_substr_start_end_index_signature =
+
2235 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>(),
+
2236 std::declval<integer_type>())),
+
2237 string_type>;
+
2238
+
2239 template<typename string_type, typename integer_type>
+
2240 using is_substr_start_index_signature =
+
2241 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>())),
+
2242 string_type>;
+
2243
+
2244 template<typename string_type>
+
2245 using is_std_operate_plus_signature =
+
2246 typename std::is_same<decltype(std::operator+(std::declval<string_type>(), std::declval<string_type>())),
+
2247 string_type>;
+
2248
+
2249 template<typename value_type, typename string_type, typename integer_type>
+
2250 struct is_valid_json_string {
+
2251 static constexpr auto substr = is_substr_start_end_index_signature<string_type, integer_type>::value &&
+
2252 is_substr_start_index_signature<string_type, integer_type>::value;
+
2253 static_assert(substr, "string_type must have a substr method taking only a start index and an overload "
+
2254 "taking a start and end index, both must return a string_type");
+
2255
+
2256 static constexpr auto operator_plus = is_std_operate_plus_signature<string_type>::value;
+
2257 static_assert(operator_plus,
+
2258 "string_type must have a '+' operator implemented which returns the concatenated string");
+
2259
+
2260 static constexpr auto value =
+
2261 std::is_constructible<value_type, string_type>::value && substr && operator_plus;
+
2262 };
+
2263
+
2264 template<typename value_type, typename number_type>
+
2265 struct is_valid_json_number {
+
2266 static constexpr auto value =
+
2267 std::is_floating_point<number_type>::value && std::is_constructible<value_type, number_type>::value;
+
2268 };
+
2269
+
2270 template<typename value_type, typename integer_type>
+
2271 struct is_valid_json_integer {
+
2272 static constexpr auto value = std::is_signed<integer_type>::value &&
+
2273 !std::is_floating_point<integer_type>::value &&
+
2274 std::is_constructible<value_type, integer_type>::value;
+
2275 };
+
2276 template<typename value_type, typename boolean_type>
+
2277 struct is_valid_json_boolean {
+
2278 static constexpr auto value = std::is_convertible<boolean_type, bool>::value &&
+
2279 std::is_constructible<value_type, boolean_type>::value;
+
2280 };
+
2281
+
2282 template<typename value_type, typename object_type, typename array_type, typename string_type,
+
2283 typename number_type, typename integer_type, typename boolean_type>
+
2284 struct is_valid_json_types {
+
2285 // Internal assertions for better feedback
+
2286 static_assert(is_valid_json_value<value_type>::value,
+
2287 "value_type must meet basic requirements, default constructor, copyable, moveable");
+
2288 static_assert(is_valid_json_object<value_type, string_type, object_type>::value,
+
2289 "object_type must be a string_type to value_type container");
+
2290 static_assert(is_valid_json_array<value_type, array_type>::value,
+
2291 "array_type must be a container of value_type");
+
2292
+
2293 static constexpr auto value = is_valid_json_value<value_type>::value &&
+
2294 is_valid_json_object<value_type, string_type, object_type>::value &&
+
2295 is_valid_json_array<value_type, array_type>::value &&
+
2296 is_valid_json_string<value_type, string_type, integer_type>::value &&
+
2297 is_valid_json_number<value_type, number_type>::value &&
+
2298 is_valid_json_integer<value_type, integer_type>::value &&
+
2299 is_valid_json_boolean<value_type, boolean_type>::value;
+
2300 };
+
2301 } // namespace details
+
2302
+
2310 template<typename json_traits>
+
+ +
2318 static_assert(std::is_same<typename json_traits::string_type, std::string>::value ||
+
2319 std::is_convertible<typename json_traits::string_type, std::string>::value ||
+
2320 std::is_constructible<typename json_traits::string_type, std::string>::value,
+
2321 "string_type must be a std::string, convertible to a std::string, or construct a std::string.");
+
2322
+
2323 static_assert(
+
2324 details::is_valid_json_types<typename json_traits::value_type, typename json_traits::object_type,
+
2325 typename json_traits::array_type, typename json_traits::string_type,
+
2326 typename json_traits::number_type, typename json_traits::integer_type,
+
2327 typename json_traits::boolean_type>::value,
+
2328 "must satisfy json container requirements");
+
2329 static_assert(details::is_valid_traits<json_traits>::value, "traits must satisfy requirements");
+
2330
+
2331 typename json_traits::value_type val;
+
2332
+
2333 public:
+
2337 using set_t = std::set<typename json_traits::string_type>;
+
2338
+
2339 basic_claim() = default;
+
2340 basic_claim(const basic_claim&) = default;
+
2341 basic_claim(basic_claim&&) = default;
+
2342 basic_claim& operator=(const basic_claim&) = default;
+
2343 basic_claim& operator=(basic_claim&&) = default;
+
2344 ~basic_claim() = default;
+
2345
+
2346 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::string_type s) : val(std::move(s)) {}
+
2347 JWT_CLAIM_EXPLICIT basic_claim(const date& d)
+
2348 : val(typename json_traits::integer_type(std::chrono::system_clock::to_time_t(d))) {}
+
2349 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::array_type a) : val(std::move(a)) {}
+
2350 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::value_type v) : val(std::move(v)) {}
+
2351 JWT_CLAIM_EXPLICIT basic_claim(const set_t& s) : val(typename json_traits::array_type(s.begin(), s.end())) {}
+
2352 template<typename Iterator>
+
2353 basic_claim(Iterator begin, Iterator end) : val(typename json_traits::array_type(begin, end)) {}
+
2354
+
2359 typename json_traits::value_type to_json() const { return val; }
+
2360
+
2365 std::istream& operator>>(std::istream& is) { return is >> val; }
+
2366
+
2371 std::ostream& operator<<(std::ostream& os) { return os << val; }
+
2372
+
2378 json::type get_type() const { return json_traits::get_type(val); }
+
2379
+
2385 typename json_traits::string_type as_string() const { return json_traits::as_string(val); }
+
2386
+
+
2395 date as_date() const {
+
2396 using std::chrono::system_clock;
+
2397 if (get_type() == json::type::number) return system_clock::from_time_t(std::round(as_number()));
+
2398 return system_clock::from_time_t(as_integer());
+
2399 }
+
+
2400
+
2406 typename json_traits::array_type as_array() const { return json_traits::as_array(val); }
+
2407
+
+
2413 set_t as_set() const {
+
2414 set_t res;
+
2415 for (const auto& e : json_traits::as_array(val)) {
+
2416 res.insert(json_traits::as_string(e));
+
2417 }
+
2418 return res;
+
2419 }
+
+
2420
+
2426 typename json_traits::integer_type as_integer() const { return json_traits::as_integer(val); }
+
2427
+
2433 typename json_traits::boolean_type as_boolean() const { return json_traits::as_boolean(val); }
+
2434
+
2440 typename json_traits::number_type as_number() const { return json_traits::as_number(val); }
+
2441 };
+
+
2442
+
2443 namespace error {
+
+
2447 struct invalid_json_exception : public std::runtime_error {
+
2448 invalid_json_exception() : runtime_error("invalid json") {}
+
2449 };
+
+
+
2453 struct claim_not_present_exception : public std::out_of_range {
+
2454 claim_not_present_exception() : out_of_range("claim not found") {}
+
2455 };
+
+
2456 } // namespace error
+
2457
+
2458 namespace details {
+
2459 template<typename json_traits>
+
2460 struct map_of_claims {
+
2461 typename json_traits::object_type claims;
+
2462 using basic_claim_t = basic_claim<json_traits>;
+
2463 using iterator = typename json_traits::object_type::iterator;
+
2464 using const_iterator = typename json_traits::object_type::const_iterator;
+
2465
+
2466 map_of_claims() = default;
+
2467 map_of_claims(const map_of_claims&) = default;
+
2468 map_of_claims(map_of_claims&&) = default;
+
2469 map_of_claims& operator=(const map_of_claims&) = default;
+
2470 map_of_claims& operator=(map_of_claims&&) = default;
+
2471
+
2472 map_of_claims(typename json_traits::object_type json) : claims(std::move(json)) {}
+
2473
+
2474 iterator begin() { return claims.begin(); }
+
2475 iterator end() { return claims.end(); }
+
2476 const_iterator cbegin() const { return claims.begin(); }
+
2477 const_iterator cend() const { return claims.end(); }
+
2478 const_iterator begin() const { return claims.begin(); }
+
2479 const_iterator end() const { return claims.end(); }
+
2480
+
2489 static typename json_traits::object_type parse_claims(const typename json_traits::string_type& str) {
+
2490 typename json_traits::value_type val;
+
2491 if (!json_traits::parse(val, str)) throw error::invalid_json_exception();
+
2492
+
2493 return json_traits::as_object(val);
+
2494 };
+
2495
+
2500 bool has_claim(const typename json_traits::string_type& name) const noexcept {
+
2501 return claims.count(name) != 0;
+
2502 }
+
2503
+
2511 basic_claim_t get_claim(const typename json_traits::string_type& name) const {
+
2512 if (!has_claim(name)) throw error::claim_not_present_exception();
+
2513 return basic_claim_t{claims.at(name)};
+
2514 }
+
2515 };
+
2516 } // namespace details
+
2517
+
2522 template<typename json_traits>
+
+
2523 class payload {
+
2524 protected:
+
2525 details::map_of_claims<json_traits> payload_claims;
+
2526
+
2527 public:
+ +
2529
+
2534 bool has_issuer() const noexcept { return has_payload_claim("iss"); }
+
2539 bool has_subject() const noexcept { return has_payload_claim("sub"); }
+
2544 bool has_audience() const noexcept { return has_payload_claim("aud"); }
+
2549 bool has_expires_at() const noexcept { return has_payload_claim("exp"); }
+
2554 bool has_not_before() const noexcept { return has_payload_claim("nbf"); }
+
2559 bool has_issued_at() const noexcept { return has_payload_claim("iat"); }
+
2564 bool has_id() const noexcept { return has_payload_claim("jti"); }
+
2571 typename json_traits::string_type get_issuer() const { return get_payload_claim("iss").as_string(); }
+
2578 typename json_traits::string_type get_subject() const { return get_payload_claim("sub").as_string(); }
+
+ +
2586 auto aud = get_payload_claim("aud");
+
2587 if (aud.get_type() == json::type::string) return {aud.as_string()};
+
2588
+
2589 return aud.as_set();
+
2590 }
+
+
2597 date get_expires_at() const { return get_payload_claim("exp").as_date(); }
+
2604 date get_not_before() const { return get_payload_claim("nbf").as_date(); }
+
2611 date get_issued_at() const { return get_payload_claim("iat").as_date(); }
+
2618 typename json_traits::string_type get_id() const { return get_payload_claim("jti").as_string(); }
+
+
2623 bool has_payload_claim(const typename json_traits::string_type& name) const noexcept {
+
2624 return payload_claims.has_claim(name);
+
2625 }
+
+
+
2631 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
2632 return payload_claims.get_claim(name);
+
2633 }
+
+
2634 };
+
+
2635
+
2640 template<typename json_traits>
+
+
2641 class header {
+
2642 protected:
+
2643 details::map_of_claims<json_traits> header_claims;
+
2644
+
2645 public:
+ +
2651 bool has_algorithm() const noexcept { return has_header_claim("alg"); }
+
2656 bool has_type() const noexcept { return has_header_claim("typ"); }
+
2661 bool has_content_type() const noexcept { return has_header_claim("cty"); }
+
2666 bool has_key_id() const noexcept { return has_header_claim("kid"); }
+
2673 typename json_traits::string_type get_algorithm() const { return get_header_claim("alg").as_string(); }
+
2680 typename json_traits::string_type get_type() const { return get_header_claim("typ").as_string(); }
+
2687 typename json_traits::string_type get_content_type() const { return get_header_claim("cty").as_string(); }
+
2694 typename json_traits::string_type get_key_id() const { return get_header_claim("kid").as_string(); }
+
+
2699 bool has_header_claim(const typename json_traits::string_type& name) const noexcept {
+
2700 return header_claims.has_claim(name);
+
2701 }
+
+
+
2707 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
2708 return header_claims.get_claim(name);
+
2709 }
+
+
2710 };
+
+
2711
+
2715 template<typename json_traits>
+
+
2716 class decoded_jwt : public header<json_traits>, public payload<json_traits> {
+
2717 protected:
+
2719 typename json_traits::string_type token;
+
2721 typename json_traits::string_type header;
+
2723 typename json_traits::string_type header_base64;
+
2725 typename json_traits::string_type payload;
+
2727 typename json_traits::string_type payload_base64;
+
2729 typename json_traits::string_type signature;
+
2731 typename json_traits::string_type signature_base64;
+
2732
+
2733 public:
+ +
2735#ifndef JWT_DISABLE_BASE64
+
+
2745 JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type& token)
+
2746 : decoded_jwt(token, [](const typename json_traits::string_type& str) {
+
2747 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(str));
+
2748 }) {}
+
+
2749#endif
+
2761 template<typename Decode>
+
+
2762 decoded_jwt(const typename json_traits::string_type& token, Decode decode) : token(token) {
+
2763 auto hdr_end = token.find('.');
+
2764 if (hdr_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
2765 auto payload_end = token.find('.', hdr_end + 1);
+
2766 if (payload_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
2767 header_base64 = token.substr(0, hdr_end);
+
2768 payload_base64 = token.substr(hdr_end + 1, payload_end - hdr_end - 1);
+
2769 signature_base64 = token.substr(payload_end + 1);
+
2770
+ + + +
2774
+
2775 this->header_claims = details::map_of_claims<json_traits>::parse_claims(header);
+
2776 this->payload_claims = details::map_of_claims<json_traits>::parse_claims(payload);
+
2777 }
+
+
2778
+
2783 const typename json_traits::string_type& get_token() const noexcept { return token; }
+
2788 const typename json_traits::string_type& get_header() const noexcept { return header; }
+
2793 const typename json_traits::string_type& get_payload() const noexcept { return payload; }
+
2798 const typename json_traits::string_type& get_signature() const noexcept { return signature; }
+
2803 const typename json_traits::string_type& get_header_base64() const noexcept { return header_base64; }
+
2808 const typename json_traits::string_type& get_payload_base64() const noexcept { return payload_base64; }
+
2813 const typename json_traits::string_type& get_signature_base64() const noexcept { return signature_base64; }
+
2818 typename json_traits::object_type get_payload_json() const { return this->payload_claims.claims; }
+
2823 typename json_traits::object_type get_header_json() const { return this->header_claims.claims; }
+
+
2831 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
2832 return this->payload_claims.get_claim(name);
+
2833 }
+
+
+
2841 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
2842 return this->header_claims.get_claim(name);
+
2843 }
+
+
2844 };
+
+
2845
+
2850 template<typename Clock, typename json_traits>
+
+
2851 class builder {
+
2852 typename json_traits::object_type header_claims;
+
2853 typename json_traits::object_type payload_claims;
+
2854
+
2856 Clock clock;
+
2857
+
2858 public:
+
2863 JWT_CLAIM_EXPLICIT builder(Clock c) : clock(c) {}
+
+
2870 builder& set_header_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
2871 header_claims[id] = std::move(c);
+
2872 return *this;
+
2873 }
+
+
2874
+
+
2881 builder& set_header_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
2882 header_claims[id] = c.to_json();
+
2883 return *this;
+
2884 }
+
+
+
2891 builder& set_payload_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
2892 payload_claims[id] = std::move(c);
+
2893 return *this;
+
2894 }
+
+
+
2901 builder& set_payload_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
2902 payload_claims[id] = c.to_json();
+
2903 return *this;
+
2904 }
+
+
+
2912 builder& set_algorithm(typename json_traits::string_type str) {
+
2913 return set_header_claim("alg", typename json_traits::value_type(str));
+
2914 }
+
+
+
2920 builder& set_type(typename json_traits::string_type str) {
+
2921 return set_header_claim("typ", typename json_traits::value_type(str));
+
2922 }
+
+
+
2928 builder& set_content_type(typename json_traits::string_type str) {
+
2929 return set_header_claim("cty", typename json_traits::value_type(str));
+
2930 }
+
+
+
2937 builder& set_key_id(typename json_traits::string_type str) {
+
2938 return set_header_claim("kid", typename json_traits::value_type(str));
+
2939 }
+
+
+
2945 builder& set_issuer(typename json_traits::string_type str) {
+
2946 return set_payload_claim("iss", typename json_traits::value_type(str));
+
2947 }
+
+
+
2953 builder& set_subject(typename json_traits::string_type str) {
+
2954 return set_payload_claim("sub", typename json_traits::value_type(str));
+
2955 }
+
+
+
2961 builder& set_audience(typename json_traits::array_type a) {
+
2962 return set_payload_claim("aud", typename json_traits::value_type(a));
+
2963 }
+
+
+
2969 builder& set_audience(typename json_traits::string_type aud) {
+
2970 return set_payload_claim("aud", typename json_traits::value_type(aud));
+
2971 }
+
+ +
2983 template<class Rep>
+
+
2984 builder& set_expires_in(const std::chrono::duration<Rep>& d) {
+
2985 return set_payload_claim("exp", basic_claim<json_traits>(clock.now() + d));
+
2986 }
+
+ + +
3003 builder& set_issued_now() { return set_issued_at(clock.now()); }
+
+
3009 builder& set_id(const typename json_traits::string_type& str) {
+
3010 return set_payload_claim("jti", typename json_traits::value_type(str));
+
3011 }
+
+
3012
+
3024 template<typename Algo, typename Encode>
+
+
3025 typename json_traits::string_type sign(const Algo& algo, Encode encode) const {
+
3026 std::error_code ec;
+
3027 auto res = sign(algo, encode, ec);
+ +
3029 return res;
+
3030 }
+
+
3031#ifndef JWT_DISABLE_BASE64
+
3040 template<typename Algo>
+
+
3041 typename json_traits::string_type sign(const Algo& algo) const {
+
3042 std::error_code ec;
+
3043 auto res = sign(algo, ec);
+ +
3045 return res;
+
3046 }
+
+
3047#endif
+
3048
+
3061 template<typename Algo, typename Encode>
+
+
3062 typename json_traits::string_type sign(const Algo& algo, Encode encode, std::error_code& ec) const {
+
3063 // make a copy such that a builder can be re-used
+
3064 typename json_traits::object_type obj_header = header_claims;
+
3065 if (header_claims.count("alg") == 0) obj_header["alg"] = typename json_traits::value_type(algo.name());
+
3066
+
3067 const auto header = encode(json_traits::serialize(typename json_traits::value_type(obj_header)));
+
3068 const auto payload = encode(json_traits::serialize(typename json_traits::value_type(payload_claims)));
+
3069 const auto token = header + "." + payload;
+
3070
+
3071 auto signature = algo.sign(token, ec);
+
3072 if (ec) return {};
+
3073
+
3074 return token + "." + encode(signature);
+
3075 }
+
+
3076#ifndef JWT_DISABLE_BASE64
+
3086 template<typename Algo>
+
+
3087 typename json_traits::string_type sign(const Algo& algo, std::error_code& ec) const {
+
3088 return sign(
+
3089 algo,
+
3090 [](const typename json_traits::string_type& data) {
+
3091 return base::trim<alphabet::base64url>(base::encode<alphabet::base64url>(data));
+
3092 },
+
3093 ec);
+
3094 }
+
+
3095#endif
+
3096 };
+
+
3097
+
3098 namespace verify_ops {
+
3102 template<typename json_traits>
+
+ +
3104 verify_context(date ctime, const decoded_jwt<json_traits>& j, size_t l)
+
3105 : current_time(ctime), jwt(j), default_leeway(l) {}
+ + + +
3112
+
3114 typename json_traits::string_type claim_key{};
+
3115
+
+
3122 basic_claim<json_traits> get_claim(bool in_header, std::error_code& ec) const {
+
3123 if (in_header) {
+
3124 if (!jwt.has_header_claim(claim_key)) {
+
3125 ec = error::token_verification_error::missing_claim;
+
3126 return {};
+
3127 }
+
3128 return jwt.get_header_claim(claim_key);
+
3129 } else {
+
3130 if (!jwt.has_payload_claim(claim_key)) {
+
3131 ec = error::token_verification_error::missing_claim;
+
3132 return {};
+
3133 }
+
3134 return jwt.get_payload_claim(claim_key);
+
3135 }
+
3136 }
+
+
+
3144 basic_claim<json_traits> get_claim(bool in_header, json::type t, std::error_code& ec) const {
+
3145 auto c = get_claim(in_header, ec);
+
3146 if (ec) return {};
+
3147 if (c.get_type() != t) {
+
3148 ec = error::token_verification_error::claim_type_missmatch;
+
3149 return {};
+
3150 }
+
3151 return c;
+
3152 }
+
+
3158 basic_claim<json_traits> get_claim(std::error_code& ec) const { return get_claim(false, ec); }
+
+
3165 basic_claim<json_traits> get_claim(json::type t, std::error_code& ec) const {
+
3166 return get_claim(false, t, ec);
+
3167 }
+
+
3168 };
+
+
3169
+
3173 template<typename json_traits, bool in_header = false>
+
+ +
3175 const basic_claim<json_traits> expected;
+
3176 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3177 auto jc = ctx.get_claim(in_header, expected.get_type(), ec);
+
3178 if (ec) return;
+
3179 const bool matches = [&]() {
+
3180 switch (expected.get_type()) {
+
3181 case json::type::boolean: return expected.as_boolean() == jc.as_boolean();
+
3182 case json::type::integer: return expected.as_integer() == jc.as_integer();
+
3183 case json::type::number: return expected.as_number() == jc.as_number();
+
3184 case json::type::string: return expected.as_string() == jc.as_string();
+
3185 case json::type::array:
+
3186 case json::type::object:
+
3187 return json_traits::serialize(expected.to_json()) == json_traits::serialize(jc.to_json());
+
3188 default: throw std::logic_error("internal error, should be unreachable");
+
3189 }
+
3190 }();
+
3191 if (!matches) {
+
3192 ec = error::token_verification_error::claim_value_missmatch;
+
3193 return;
+
3194 }
+
3195 }
+
3196 };
+
+
3197
+
3202 template<typename json_traits, bool in_header = false>
+
+ +
3204 const size_t leeway;
+
3205 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3206 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3207 if (ec) return;
+
3208 auto c = jc.as_date();
+
3209 if (ctx.current_time > c + std::chrono::seconds(leeway)) {
+
3210 ec = error::token_verification_error::token_expired;
+
3211 }
+
3212 }
+
3213 };
+
+
3214
+
3219 template<typename json_traits, bool in_header = false>
+
+ +
3221 const size_t leeway;
+
3222 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3223 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3224 if (ec) return;
+
3225 auto c = jc.as_date();
+
3226 if (ctx.current_time < c - std::chrono::seconds(leeway)) {
+
3227 ec = error::token_verification_error::token_expired;
+
3228 }
+
3229 }
+
3230 };
+
+
3231
+
3237 template<typename json_traits, bool in_header = false>
+
+ +
3239 const typename basic_claim<json_traits>::set_t expected;
+
3240 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3241 auto c = ctx.get_claim(in_header, ec);
+
3242 if (ec) return;
+
3243 if (c.get_type() == json::type::string) {
+
3244 if (expected.size() != 1 || *expected.begin() != c.as_string()) {
+
3245 ec = error::token_verification_error::audience_missmatch;
+
3246 return;
+
3247 }
+
3248 } else if (c.get_type() == json::type::array) {
+
3249 auto jc = c.as_set();
+
3250 for (auto& e : expected) {
+
3251 if (jc.find(e) == jc.end()) {
+
3252 ec = error::token_verification_error::audience_missmatch;
+
3253 return;
+
3254 }
+
3255 }
+
3256 } else {
+
3257 ec = error::token_verification_error::claim_type_missmatch;
+
3258 return;
+
3259 }
+
3260 }
+
3261 };
+
+
3262
+
3266 template<typename json_traits, bool in_header = false>
+
+ +
3268 const typename json_traits::string_type expected;
+
3269 std::locale locale;
+
3270 insensitive_string_claim(const typename json_traits::string_type& e, std::locale loc)
+
3271 : expected(to_lower_unicode(e, loc)), locale(loc) {}
+
3272
+
3273 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3274 const auto c = ctx.get_claim(in_header, json::type::string, ec);
+
3275 if (ec) return;
+
3276 if (to_lower_unicode(c.as_string(), locale) != expected) {
+
3277 ec = error::token_verification_error::claim_value_missmatch;
+
3278 }
+
3279 }
+
3280
+
3281 static std::string to_lower_unicode(const std::string& str, const std::locale& loc) {
+
3282 std::mbstate_t state = std::mbstate_t();
+
3283 const char* in_next = str.data();
+
3284 const char* in_end = str.data() + str.size();
+
3285 std::wstring wide;
+
3286 wide.reserve(str.size());
+
3287
+
3288 while (in_next != in_end) {
+
3289 wchar_t wc;
+
3290 std::size_t result = std::mbrtowc(&wc, in_next, in_end - in_next, &state);
+
3291 if (result == static_cast<std::size_t>(-1)) {
+
3292 throw std::runtime_error("encoding error: " + std::string(std::strerror(errno)));
+
3293 } else if (result == static_cast<std::size_t>(-2)) {
+
3294 throw std::runtime_error("conversion error: next bytes constitute an incomplete, but so far "
+
3295 "valid, multibyte character.");
+
3296 }
+
3297 in_next += result;
+
3298 wide.push_back(wc);
+
3299 }
+
3300
+
3301 auto& f = std::use_facet<std::ctype<wchar_t>>(loc);
+
3302 f.tolower(&wide[0], &wide[0] + wide.size());
+
3303
+
3304 std::string out;
+
3305 out.reserve(wide.size());
+
3306 for (wchar_t wc : wide) {
+
3307 char mb[MB_LEN_MAX];
+
3308 std::size_t n = std::wcrtomb(mb, wc, &state);
+
3309 if (n != static_cast<std::size_t>(-1)) out.append(mb, n);
+
3310 }
+
3311
+
3312 return out;
+
3313 }
+
3314 };
+
+
3315 } // namespace verify_ops
+
3316
+
3321 template<typename Clock, typename json_traits>
+
+
3322 class verifier {
+
3323 public:
+ + +
3335 std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>;
+
3336
+
3337 private:
+
3338 struct algo_base {
+
3339 virtual ~algo_base() = default;
+
3340 virtual void verify(const std::string& data, const std::string& sig, std::error_code& ec) = 0;
+
3341 };
+
3342 template<typename T>
+
3343 struct algo : public algo_base {
+
3344 T alg;
+
3345 explicit algo(T a) : alg(a) {}
+
3346 void verify(const std::string& data, const std::string& sig, std::error_code& ec) override {
+
3347 alg.verify(data, sig, ec);
+
3348 }
+
3349 };
+
3351 std::unordered_map<typename json_traits::string_type, verify_check_fn_t> claims;
+
3353 size_t default_leeway = 0;
+
3355 Clock clock;
+
3357 std::unordered_map<std::string, std::shared_ptr<algo_base>> algs;
+
3358
+
3359 public:
+
+
3364 explicit verifier(Clock c) : clock(c) {
+
3365 claims["exp"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3366 if (!ctx.jwt.has_expires_at()) return;
+
3367 auto exp = ctx.jwt.get_expires_at();
+
3368 if (ctx.current_time > exp + std::chrono::seconds(ctx.default_leeway)) {
+
3369 ec = error::token_verification_error::token_expired;
+
3370 }
+
3371 };
+
3372 claims["iat"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3373 if (!ctx.jwt.has_issued_at()) return;
+
3374 auto iat = ctx.jwt.get_issued_at();
+
3375 if (ctx.current_time < iat - std::chrono::seconds(ctx.default_leeway)) {
+
3376 ec = error::token_verification_error::token_expired;
+
3377 }
+
3378 };
+
3379 claims["nbf"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3380 if (!ctx.jwt.has_not_before()) return;
+
3381 auto nbf = ctx.jwt.get_not_before();
+
3382 if (ctx.current_time < nbf - std::chrono::seconds(ctx.default_leeway)) {
+
3383 ec = error::token_verification_error::token_expired;
+
3384 }
+
3385 };
+
3386 }
+
+
3387
+
+ +
3394 default_leeway = leeway;
+
3395 return *this;
+
3396 }
+
+
+ + +
3405 return *this;
+
3406 }
+
+
+ + +
3415 return *this;
+
3416 }
+
+
+ + +
3425 return *this;
+
3426 }
+
+
3427
+
+
3439 verifier& with_type(const typename json_traits::string_type& type, std::locale locale = std::locale{}) {
+
3440 return with_claim("typ", verify_ops::insensitive_string_claim<json_traits, true>{type, std::move(locale)});
+
3441 }
+
+
3442
+
+
3449 verifier& with_issuer(const typename json_traits::string_type& iss) {
+
3450 return with_claim("iss", basic_claim_t(iss));
+
3451 }
+
+
3452
+
+
3459 verifier& with_subject(const typename json_traits::string_type& sub) {
+
3460 return with_claim("sub", basic_claim_t(sub));
+
3461 }
+
+
+ +
3469 claims["aud"] = verify_ops::is_subset_claim<json_traits>{aud};
+
3470 return *this;
+
3471 }
+
+
+
3478 verifier& with_audience(const typename json_traits::string_type& aud) {
+
3479 typename basic_claim_t::set_t s;
+
3480 s.insert(aud);
+
3481 return with_audience(s);
+
3482 }
+
+
3489 verifier& with_id(const typename json_traits::string_type& id) { return with_claim("jti", basic_claim_t(id)); }
+
3490
+
+
3502 verifier& with_claim(const typename json_traits::string_type& name, verify_check_fn_t fn) {
+
3503 claims[name] = fn;
+
3504 return *this;
+
3505 }
+
+
3506
+
+
3517 verifier& with_claim(const typename json_traits::string_type& name, basic_claim_t c) {
+ +
3519 }
+
+
3520
+
3534 template<typename Algorithm>
+
+
3535 verifier& allow_algorithm(Algorithm alg) {
+
3536 algs[alg.name()] = std::make_shared<algo<Algorithm>>(alg);
+
3537 return *this;
+
3538 }
+
+
3539
+
+ +
3546 std::error_code ec;
+
3547 verify(jwt, ec);
+ +
3549 }
+
+
+
3555 void verify(const decoded_jwt<json_traits>& jwt, std::error_code& ec) const {
+
3556 ec.clear();
+
3557 const typename json_traits::string_type data = jwt.get_header_base64() + "." + jwt.get_payload_base64();
+
3558 const typename json_traits::string_type sig = jwt.get_signature();
+
3559 const std::string algo = jwt.get_algorithm();
+
3560 if (algs.count(algo) == 0) {
+
3561 ec = error::token_verification_error::wrong_algorithm;
+
3562 return;
+
3563 }
+
3564 algs.at(algo)->verify(data, sig, ec);
+
3565 if (ec) return;
+
3566
+
3567 verify_ops::verify_context<json_traits> ctx{clock.now(), jwt, default_leeway};
+
3568 for (auto& c : claims) {
+
3569 ctx.claim_key = c.first;
+
3570 c.second(ctx, ec);
+
3571 if (ec) return;
+
3572 }
+
3573 }
+
+
3574 };
+
+
3575
+
3584 template<typename json_traits>
+
+
3585 class jwk {
+ +
3587 const details::map_of_claims<json_traits> jwk_claims;
+
3588
+
3589 public:
+
3590 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::string_type& str)
+
3591 : jwk_claims(details::map_of_claims<json_traits>::parse_claims(str)) {}
+
3592
+
3593 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::value_type& json)
+
3594 : jwk_claims(json_traits::as_object(json)) {}
+
3595
+
3604 typename json_traits::string_type get_key_type() const { return get_jwk_claim("kty").as_string(); }
+
3605
+
3612 typename json_traits::string_type get_use() const { return get_jwk_claim("use").as_string(); }
+
3613
+
3620 typename basic_claim_t::set_t get_key_operations() const { return get_jwk_claim("key_ops").as_set(); }
+
3621
+
3628 typename json_traits::string_type get_algorithm() const { return get_jwk_claim("alg").as_string(); }
+
3629
+
3636 typename json_traits::string_type get_key_id() const { return get_jwk_claim("kid").as_string(); }
+
3637
+
3648 typename json_traits::string_type get_curve() const { return get_jwk_claim("crv").as_string(); }
+
3649
+
3656 typename json_traits::array_type get_x5c() const { return get_jwk_claim("x5c").as_array(); };
+
3657
+
3664 typename json_traits::string_type get_x5u() const { return get_jwk_claim("x5u").as_string(); };
+
3665
+
3672 typename json_traits::string_type get_x5t() const { return get_jwk_claim("x5t").as_string(); };
+
3673
+
3680 typename json_traits::string_type get_x5t_sha256() const { return get_jwk_claim("x5t#S256").as_string(); };
+
3681
+
+
3688 typename json_traits::string_type get_x5c_key_value() const {
+
3689 auto x5c_array = get_jwk_claim("x5c").as_array();
+
3690 if (x5c_array.size() == 0) throw error::claim_not_present_exception();
+
3691
+
3692 return json_traits::as_string(x5c_array.front());
+
3693 };
+
+
3694
+
3699 bool has_key_type() const noexcept { return has_jwk_claim("kty"); }
+
3700
+
3705 bool has_use() const noexcept { return has_jwk_claim("use"); }
+
3706
+
3711 bool has_key_operations() const noexcept { return has_jwk_claim("key_ops"); }
+
3712
+
3717 bool has_algorithm() const noexcept { return has_jwk_claim("alg"); }
+
3718
+
3723 bool has_curve() const noexcept { return has_jwk_claim("crv"); }
+
3724
+
3729 bool has_key_id() const noexcept { return has_jwk_claim("kid"); }
+
3730
+
3735 bool has_x5u() const noexcept { return has_jwk_claim("x5u"); }
+
3736
+
3741 bool has_x5c() const noexcept { return has_jwk_claim("x5c"); }
+
3742
+
3747 bool has_x5t() const noexcept { return has_jwk_claim("x5t"); }
+
3748
+
3753 bool has_x5t_sha256() const noexcept { return has_jwk_claim("x5t#S256"); }
+
3754
+
+
3759 bool has_jwk_claim(const typename json_traits::string_type& name) const noexcept {
+
3760 return jwk_claims.has_claim(name);
+
3761 }
+
+
3762
+
+
3768 basic_claim_t get_jwk_claim(const typename json_traits::string_type& name) const {
+
3769 return jwk_claims.get_claim(name);
+
3770 }
+
+
3771
+
3776 bool empty() const noexcept { return jwk_claims.empty(); }
+
3777
+
3782 typename json_traits::object_type get_claims() const { return this->jwk_claims.claims; }
+
3783 };
+
+
3784
+
3795 template<typename json_traits>
+
+
3796 class jwks {
+
3797 public:
+ +
3801 using jwks_vector_t = std::vector<jwks_t>;
+
3802 using iterator = typename jwks_vector_t::iterator;
+
3803 using const_iterator = typename jwks_vector_t::const_iterator;
+
3804
+
+
3811 JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type& str) {
+
3812 typename json_traits::value_type parsed_val;
+
3813 if (!json_traits::parse(parsed_val, str)) throw error::invalid_json_exception();
+
3814
+
3815 const details::map_of_claims<json_traits> jwks_json = json_traits::as_object(parsed_val);
+
3816 if (!jwks_json.has_claim("keys")) throw error::invalid_json_exception();
+
3817
+
3818 auto jwk_list = jwks_json.get_claim("keys").as_array();
+
3819 std::transform(jwk_list.begin(), jwk_list.end(), std::back_inserter(jwk_claims),
+
3820 [](const typename json_traits::value_type& val) { return jwks_t{val}; });
+
3821 }
+
+
3822
+
3823 iterator begin() { return jwk_claims.begin(); }
+
3824 iterator end() { return jwk_claims.end(); }
+
3825 const_iterator cbegin() const { return jwk_claims.begin(); }
+
3826 const_iterator cend() const { return jwk_claims.end(); }
+
3827 const_iterator begin() const { return jwk_claims.begin(); }
+
3828 const_iterator end() const { return jwk_claims.end(); }
+
3829
+
+
3834 bool has_jwk(const typename json_traits::string_type& key_id) const noexcept {
+
3835 return find_by_kid(key_id) != end();
+
3836 }
+
+
3837
+
+
3843 jwks_t get_jwk(const typename json_traits::string_type& key_id) const {
+
3844 const auto maybe = find_by_kid(key_id);
+
3845 if (maybe == end()) throw error::claim_not_present_exception();
+
3846 return *maybe;
+
3847 }
+
+
3848
+
3849 private:
+
3850 jwks_vector_t jwk_claims;
+
3851
+
3852 const_iterator find_by_kid(const typename json_traits::string_type& key_id) const noexcept {
+
3853 return std::find_if(cbegin(), cend(), [key_id](const jwks_t& jwk) {
+
3854 if (!jwk.has_key_id()) { return false; }
+
3855 return jwk.get_key_id() == key_id;
+
3856 });
+
3857 }
+
3858 };
+
+
3859
+
3865 template<typename Clock, typename json_traits>
+
+ + +
3868 }
+
+
3869
+
3875 template<typename Clock, typename json_traits>
+
+ + +
3878 }
+
+
3879
+
+ +
3888 date now() const { return date::clock::now(); }
+
3889 };
+
+
3890
+
3899 template<typename json_traits>
+
+ +
3901 return verifier<default_clock, json_traits>(c);
+
3902 }
+
+
3903
+
3907 template<typename json_traits>
+
+ +
3909 return builder<default_clock, json_traits>(c);
+
3910 }
+
+
3911
+
3926 template<typename json_traits, typename Decode>
+
+
3927 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token, Decode decode) {
+
3928 return decoded_jwt<json_traits>(token, decode);
+
3929 }
+
+
3930
+
3941 template<typename json_traits>
+
+
3942 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token) {
+
3943 return decoded_jwt<json_traits>(token);
+
3944 }
+
+
3951 template<typename json_traits>
+
+
3952 jwk<json_traits> parse_jwk(const typename json_traits::string_type& jwk_) {
+
3953 return jwk<json_traits>(jwk_);
+
3954 }
+
+
3965 template<typename json_traits>
+
+
3966 jwks<json_traits> parse_jwks(const typename json_traits::string_type& jwks_) {
+
3967 return jwks<json_traits>(jwks_);
+
3968 }
+
+
3969} // namespace jwt
+
3970
+
3971template<typename json_traits>
+
3972std::istream& operator>>(std::istream& is, jwt::basic_claim<json_traits>& c) {
+
3973 return c.operator>>(is);
+
3974}
+
3975
+
3976template<typename json_traits>
+
3977std::ostream& operator<<(std::ostream& os, const jwt::basic_claim<json_traits>& c) {
+
3978 return os << c.to_json();
+
3979}
+
3980
+
3981#ifndef JWT_DISABLE_PICOJSON
+
3982#include "traits/kazuho-picojson/defaults.h"
+
3983#endif
+
3984
+
3985#endif
+
a class to store a generic JSON value as claim
Definition jwt.h:2311
+
json_traits::number_type as_number() const
Definition jwt.h:2440
+
set_t as_set() const
Definition jwt.h:2413
+
json::type get_type() const
Definition jwt.h:2378
+
std::set< typename json_traits::string_type > set_t
Definition jwt.h:2337
+
std::istream & operator>>(std::istream &is)
Definition jwt.h:2365
+
json_traits::boolean_type as_boolean() const
Definition jwt.h:2433
+
date as_date() const
Get the contained JSON value as a date.
Definition jwt.h:2395
+
std::ostream & operator<<(std::ostream &os)
Definition jwt.h:2371
+
json_traits::integer_type as_integer() const
Definition jwt.h:2426
+
json_traits::value_type to_json() const
Definition jwt.h:2359
+
json_traits::array_type as_array() const
Definition jwt.h:2406
+
json_traits::string_type as_string() const
Definition jwt.h:2385
+
Definition jwt.h:2851
+
builder & set_audience(typename json_traits::string_type aud)
Definition jwt.h:2969
+
builder & set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:2901
+
builder & set_expires_in(const std::chrono::duration< Rep > &d)
Definition jwt.h:2984
+
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:2912
+
builder & set_expires_at(const date &d)
Definition jwt.h:2977
+
builder & set_type(typename json_traits::string_type str)
Definition jwt.h:2920
+
JWT_CLAIM_EXPLICIT builder(Clock c)
Definition jwt.h:2863
+
json_traits::string_type sign(const Algo &algo, std::error_code &ec) const
Definition jwt.h:3087
+
builder & set_issued_at(const date &d)
Definition jwt.h:2998
+
json_traits::string_type sign(const Algo &algo) const
Definition jwt.h:3041
+
builder & set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:2891
+
builder & set_id(const typename json_traits::string_type &str)
Definition jwt.h:3009
+
builder & set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:2870
+
builder & set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:2881
+
json_traits::string_type sign(const Algo &algo, Encode encode) const
Definition jwt.h:3025
+
builder & set_audience(typename json_traits::array_type a)
Definition jwt.h:2961
+
json_traits::string_type sign(const Algo &algo, Encode encode, std::error_code &ec) const
Definition jwt.h:3062
+
builder & set_content_type(typename json_traits::string_type str)
Definition jwt.h:2928
+
builder & set_not_before(const date &d)
Definition jwt.h:2992
+
builder & set_subject(typename json_traits::string_type str)
Definition jwt.h:2953
+
builder & set_issued_now()
Definition jwt.h:3003
+
builder & set_key_id(typename json_traits::string_type str)
Set key id claim.
Definition jwt.h:2937
+
builder & set_issuer(typename json_traits::string_type str)
Definition jwt.h:2945
+
Definition jwt.h:2716
+
const json_traits::string_type & get_header() const noexcept
Definition jwt.h:2788
+
const json_traits::string_type & get_signature_base64() const noexcept
Definition jwt.h:2813
+
json_traits::string_type signature
Signature part decoded from base64.
Definition jwt.h:2729
+
json_traits::string_type header
Header part decoded from base64.
Definition jwt.h:2721
+
json_traits::string_type header_base64
Unmodified header part in base64.
Definition jwt.h:2723
+
json_traits::string_type token
Unmodified token, as passed to constructor.
Definition jwt.h:2719
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2831
+
const json_traits::string_type & get_signature() const noexcept
Definition jwt.h:2798
+
JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type &token)
Parses a given token.
Definition jwt.h:2745
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2841
+
decoded_jwt(const typename json_traits::string_type &token, Decode decode)
Parses a given token.
Definition jwt.h:2762
+
json_traits::object_type get_payload_json() const
Definition jwt.h:2818
+
json_traits::string_type signature_base64
Unmodified signature part in base64.
Definition jwt.h:2731
+
const json_traits::string_type & get_payload_base64() const noexcept
Definition jwt.h:2808
+
const json_traits::string_type & get_token() const noexcept
Definition jwt.h:2783
+
json_traits::object_type get_header_json() const
Definition jwt.h:2823
+
const json_traits::string_type & get_payload() const noexcept
Definition jwt.h:2793
+
const json_traits::string_type & get_header_base64() const noexcept
Definition jwt.h:2803
+
json_traits::string_type payload_base64
Unmodified payload part in base64.
Definition jwt.h:2727
+
json_traits::string_type payload
Payload part decoded from base64.
Definition jwt.h:2725
+
Definition jwt.h:2641
+
json_traits::string_type get_type() const
Definition jwt.h:2680
+
bool has_header_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2699
+
bool has_algorithm() const noexcept
Definition jwt.h:2651
+
bool has_type() const noexcept
Definition jwt.h:2656
+
json_traits::string_type get_algorithm() const
Definition jwt.h:2673
+
bool has_content_type() const noexcept
Definition jwt.h:2661
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2707
+
json_traits::string_type get_key_id() const
Definition jwt.h:2694
+
json_traits::string_type get_content_type() const
Definition jwt.h:2687
+
bool has_key_id() const noexcept
Definition jwt.h:2666
+
Handle class for EVP_PKEY structures.
Definition jwt.h:425
+
constexpr evp_pkey_handle() noexcept=default
Creates a null key pointer.
+
constexpr evp_pkey_handle(EVP_PKEY *key) noexcept
Construct a new handle. The handle takes ownership of the key.
Definition jwt.h:449
+
JSON Web Key.
Definition jwt.h:3585
+
bool has_x5c() const noexcept
Definition jwt.h:3741
+
json_traits::string_type get_curve() const
Get curve claim.
Definition jwt.h:3648
+
bool has_x5t_sha256() const noexcept
Definition jwt.h:3753
+
json_traits::string_type get_algorithm() const
Definition jwt.h:3628
+
json_traits::array_type get_x5c() const
Definition jwt.h:3656
+
json_traits::object_type get_claims() const
Definition jwt.h:3782
+
json_traits::string_type get_x5t() const
Definition jwt.h:3672
+
json_traits::string_type get_x5c_key_value() const
Definition jwt.h:3688
+
json_traits::string_type get_x5t_sha256() const
Definition jwt.h:3680
+
json_traits::string_type get_key_id() const
Definition jwt.h:3636
+
bool has_algorithm() const noexcept
Definition jwt.h:3717
+
json_traits::string_type get_use() const
Definition jwt.h:3612
+
bool has_key_id() const noexcept
Definition jwt.h:3729
+
bool has_x5u() const noexcept
Definition jwt.h:3735
+
bool has_key_operations() const noexcept
Definition jwt.h:3711
+
bool empty() const noexcept
Definition jwt.h:3776
+
bool has_use() const noexcept
Definition jwt.h:3705
+
bool has_x5t() const noexcept
Definition jwt.h:3747
+
bool has_jwk_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:3759
+
basic_claim_t::set_t get_key_operations() const
Definition jwt.h:3620
+
bool has_curve() const noexcept
Definition jwt.h:3723
+
bool has_key_type() const noexcept
Definition jwt.h:3699
+
basic_claim_t get_jwk_claim(const typename json_traits::string_type &name) const
Definition jwt.h:3768
+
json_traits::string_type get_x5u() const
Definition jwt.h:3664
+
json_traits::string_type get_key_type() const
Definition jwt.h:3604
+
JWK Set.
Definition jwt.h:3796
+
jwks_t get_jwk(const typename json_traits::string_type &key_id) const
Definition jwt.h:3843
+
std::vector< jwks_t > jwks_vector_t
Type specialization for the vector of JWK.
Definition jwt.h:3801
+
JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type &str)
Definition jwt.h:3811
+
bool has_jwk(const typename json_traits::string_type &key_id) const noexcept
Definition jwt.h:3834
+
Definition jwt.h:2523
+
basic_claim_t::set_t get_audience() const
Definition jwt.h:2585
+
json_traits::string_type get_id() const
Definition jwt.h:2618
+
bool has_issued_at() const noexcept
Definition jwt.h:2559
+
bool has_not_before() const noexcept
Definition jwt.h:2554
+
bool has_payload_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2623
+
bool has_subject() const noexcept
Definition jwt.h:2539
+
date get_not_before() const
Definition jwt.h:2604
+
bool has_issuer() const noexcept
Definition jwt.h:2534
+
bool has_id() const noexcept
Definition jwt.h:2564
+
bool has_expires_at() const noexcept
Definition jwt.h:2549
+
date get_issued_at() const
Definition jwt.h:2611
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2631
+
bool has_audience() const noexcept
Definition jwt.h:2544
+
date get_expires_at() const
Definition jwt.h:2597
+
json_traits::string_type get_subject() const
Definition jwt.h:2578
+
json_traits::string_type get_issuer() const
Definition jwt.h:2571
+
Definition jwt.h:3322
+
verifier & expires_at_leeway(size_t leeway)
Definition jwt.h:3403
+
verifier & with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)
Definition jwt.h:3502
+
void verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const
Definition jwt.h:3555
+
std::function< void(const verify_ops::verify_context< json_traits > &, std::error_code &ec)> verify_check_fn_t
Verification function data structure.
Definition jwt.h:3334
+
verifier & not_before_leeway(size_t leeway)
Definition jwt.h:3413
+
verifier & issued_at_leeway(size_t leeway)
Definition jwt.h:3423
+
verifier & with_subject(const typename json_traits::string_type &sub)
Definition jwt.h:3459
+
verifier & with_audience(const typename basic_claim_t::set_t &aud)
Definition jwt.h:3468
+
verifier & with_claim(const typename json_traits::string_type &name, basic_claim_t c)
Definition jwt.h:3517
+
verifier & with_audience(const typename json_traits::string_type &aud)
Definition jwt.h:3478
+
void verify(const decoded_jwt< json_traits > &jwt) const
Definition jwt.h:3545
+
verifier(Clock c)
Definition jwt.h:3364
+
verifier & leeway(size_t leeway)
Definition jwt.h:3393
+
verifier & with_issuer(const typename json_traits::string_type &iss)
Definition jwt.h:3449
+
verifier & allow_algorithm(Algorithm alg)
Add an algorithm available for checking.
Definition jwt.h:3535
+
verifier & with_type(const typename json_traits::string_type &type, std::locale locale=std::locale{})
Definition jwt.h:3439
+
verifier & with_id(const typename json_traits::string_type &id)
Definition jwt.h:3489
+
signature_verification_error
Errors related to verification of signatures.
Definition jwt.h:216
+
std::error_category & token_verification_error_category()
Error category for token verification errors.
Definition jwt.h:351
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition jwt.h:383
+
std::error_category & ecdsa_error_category()
Error category for ECDSA errors.
Definition jwt.h:181
+
std::error_category & signature_verification_error_category()
Error category for verification errors.
Definition jwt.h:230
+
std::error_category & rsa_error_category()
Error category for RSA errors.
Definition jwt.h:131
+
std::error_category & signature_generation_error_category()
Error category for signature generation errors.
Definition jwt.h:289
+
ecdsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:163
+
rsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:114
+
signature_generation_error
Errors related to signature generation errors.
Definition jwt.h:269
+
token_verification_error
Errors related to token verification errors.
Definition jwt.h:339
+
std::error_code make_error_code(rsa_error e)
Converts JWT-CPP errors into generic STL error_codes.
Definition jwt.h:159
+
std::string extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)
Extract the public key of a pem certificate.
Definition jwt.h:542
+
evp_pkey_handle load_public_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a public key from a string.
Definition jwt.h:818
+
evp_pkey_handle load_public_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a public key from a string.
Definition jwt.h:714
+
std::string create_public_key_from_rsa_components(const std::string &modulus, const std::string &exponent, Decode decode, std::error_code &ec)
create public key from modulus and exponent. This is defined in RFC 7518 Section 6....
Definition jwt.h:917
+
std::unique_ptr< BIGNUM, decltype(&BN_free)> raw2bn(const std::string &raw, std::error_code &ec)
Definition jwt.h:847
+
evp_pkey_handle load_private_ec_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a private key from a string.
Definition jwt.h:897
+
std::string convert_base64_der_to_pem(const std::string &cert_base64_der_str, Decode decode, std::error_code &ec)
Convert the certificate provided as base64 DER to PEM.
Definition jwt.h:628
+
std::string bn2raw(const BIGNUM *bn)
Definition jwt.h:834
+
evp_pkey_handle load_private_key_from_string(const std::string &key, const std::string &password, std::error_code &ec)
Load a private key from a string.
Definition jwt.h:772
+
std::string convert_der_to_pem(const std::string &cert_der_str, std::error_code &ec)
Convert the certificate provided as DER to PEM.
Definition jwt.h:592
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2038
+
JSON Web Token.
Definition base.h:21
+
verifier< Clock, json_traits > verify(Clock c)
Definition jwt.h:3866
+
std::chrono::system_clock::time_point date
Definition jwt.h:90
+
builder< Clock, json_traits > create(Clock c)
Definition jwt.h:3876
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:3952
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3966
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:3927
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
Base class for ECDSA family of algorithms.
Definition jwt.h:1306
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1380
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1343
+
ecdsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name, size_t siglen)
Definition jwt.h:1318
+
std::string name() const
Definition jwt.h:1419
+
Definition jwt.h:1942
+
ed25519(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1952
+
Definition jwt.h:1964
+
ed448(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1974
+
Base class for EdDSA family of algorithms.
Definition jwt.h:1537
+
std::string name() const
Definition jwt.h:1651
+
eddsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, std::string name)
Definition jwt.h:1548
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1564
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1612
+
Definition jwt.h:1869
+
es256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1879
+
Definition jwt.h:1920
+
es256k(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1929
+
Definition jwt.h:1886
+
es384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1896
+
Definition jwt.h:1903
+
es512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1913
+
Base class for HMAC family of algorithms.
Definition jwt.h:1136
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1153
+
std::string name() const
Definition jwt.h:1193
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1174
+
hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1144
+
Definition jwt.h:1791
+
hs256(std::string key)
Definition jwt.h:1796
+
Definition jwt.h:1801
+
hs384(std::string key)
Definition jwt.h:1806
+
Definition jwt.h:1811
+
hs512(std::string key)
Definition jwt.h:1816
+
"none" algorithm.
Definition jwt.h:1111
+
void verify(const std::string &, const std::string &signature, std::error_code &ec) const
Check if the given signature is empty.
Definition jwt.h:1126
+
std::string name() const
Get algorithm name.
Definition jwt.h:1131
+
std::string sign(const std::string &, std::error_code &ec) const
Return an empty string.
Definition jwt.h:1115
+
Definition jwt.h:1983
+
ps256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1991
+
Definition jwt.h:1998
+
ps384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2006
+
Definition jwt.h:2013
+
ps512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:2021
+
Base class for PSS-RSA family of algorithms.
Definition jwt.h:1663
+
std::string name() const
Definition jwt.h:1777
+
pss(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1673
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1738
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1690
+
Definition jwt.h:1823
+
rs256(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Construct new instance of algorithm.
Definition jwt.h:1832
+
Definition jwt.h:1839
+
rs384(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1847
+
Definition jwt.h:1854
+
rs512(const std::string &public_key, const std::string &private_key="", const std::string &public_key_password="", const std::string &private_key_password="")
Definition jwt.h:1862
+
Base class for RSA family of algorithms.
Definition jwt.h:1206
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1267
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1233
+
rsa(const std::string &public_key, const std::string &private_key, const std::string &public_key_password, const std::string &private_key_password, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1217
+
std::string name() const
Definition jwt.h:1293
+
Definition jwt.h:3883
+
date now() const
Definition jwt.h:3888
+ +
Definition jwt.h:105
+ +
Definition jwt.h:102
+ + + + + +
Definition jwt.h:3174
+ + +
Definition jwt.h:3103
+
date current_time
Current time, retrieved from the verifiers clock and cached for performance and consistency.
Definition jwt.h:3107
+
basic_claim< json_traits > get_claim(bool in_header, json::type t, std::error_code &ec) const
Definition jwt.h:3144
+
size_t default_leeway
The configured default leeway for this verification.
Definition jwt.h:3111
+
basic_claim< json_traits > get_claim(bool in_header, std::error_code &ec) const
Helper method to get a claim from the jwt in this context.
Definition jwt.h:3122
+
basic_claim< json_traits > get_claim(json::type t, std::error_code &ec) const
Helper method to get a payload claim of a specific type from the jwt.
Definition jwt.h:3165
+
basic_claim< json_traits > get_claim(std::error_code &ec) const
Helper method to get a payload claim from the jwt.
Definition jwt.h:3158
+
json_traits::string_type claim_key
The claim key to apply this comparison on.
Definition jwt.h:3114
+
const decoded_jwt< json_traits > & jwt
The jwt passed to the verifier.
Definition jwt.h:3109
+
+
+ + + + diff --git a/kazuho-picojson_2defaults_8h_source.html b/kazuho-picojson_2defaults_8h_source.html new file mode 100644 index 000000000..d54317628 --- /dev/null +++ b/kazuho-picojson_2defaults_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/defaults.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
defaults.h
+
+
+
1#ifndef JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
2#define JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
3
+
4#include "traits.h"
+
5
+
6namespace jwt {
+
13 using claim = basic_claim<traits::kazuho_picojson>;
+
14
+
19 inline verifier<default_clock, traits::kazuho_picojson> verify() {
+
20 return verify<default_clock, traits::kazuho_picojson>(default_clock{});
+
21 }
+
22
+
27 inline builder<default_clock, traits::kazuho_picojson> create() {
+
28 return builder<default_clock, traits::kazuho_picojson>(default_clock{});
+
29 }
+
30
+
31#ifndef JWT_DISABLE_BASE64
+
39 inline decoded_jwt<traits::kazuho_picojson> decode(const std::string& token) {
+
40 return decoded_jwt<traits::kazuho_picojson>(token);
+
41 }
+
42#endif
+
43
+
55 template<typename Decode>
+
+
56 decoded_jwt<traits::kazuho_picojson> decode(const std::string& token, Decode decode) {
+ +
58 }
+
+
59
+
66 inline jwk<traits::kazuho_picojson> parse_jwk(const traits::kazuho_picojson::string_type& token) {
+
67 return jwk<traits::kazuho_picojson>(token);
+
68 }
+
69
+
76 inline jwks<traits::kazuho_picojson> parse_jwks(const traits::kazuho_picojson::string_type& token) {
+
77 return jwks<traits::kazuho_picojson>(token);
+
78 }
+
79
+
84 using verify_context = verify_ops::verify_context<traits::kazuho_picojson>;
+
85} // namespace jwt
+
86
+
87#endif // JWT_CPP_KAZUHO_PICOJSON_DEFAULTS_H
+
Definition jwt.h:2716
+
JSON Web Token.
Definition base.h:21
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
jwk< json_traits > parse_jwk(const typename json_traits::string_type &jwk_)
Definition jwt.h:3952
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3966
+
builder< default_clock, traits::boost_json > create()
Definition defaults.h:31
+
basic_claim< traits::boost_json > claim
a class to store a generic Boost.JSON value as claim
Definition defaults.h:17
+
decoded_jwt< json_traits > decode(const typename json_traits::string_type &token, Decode decode)
Decode a token. This can be used to to help access important feild like 'x5c' for verifying tokens....
Definition jwt.h:3927
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
+
+ + + + diff --git a/kazuho-picojson_2traits_8h_source.html b/kazuho-picojson_2traits_8h_source.html new file mode 100644 index 000000000..442d7aae4 --- /dev/null +++ b/kazuho-picojson_2traits_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/traits/kazuho-picojson/traits.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
traits.h
+
+
+
1#ifndef JWT_CPP_PICOJSON_TRAITS_H
+
2#define JWT_CPP_PICOJSON_TRAITS_H
+
3
+
4#ifndef PICOJSON_USE_INT64
+
5#define PICOJSON_USE_INT64
+
6#endif
+
7#include "picojson/picojson.h"
+
8
+
9#ifndef JWT_DISABLE_PICOJSON
+
10#define JWT_DISABLE_PICOJSON
+
11#endif
+
12#include "jwt-cpp/jwt.h"
+
13
+
14namespace jwt {
+
18 namespace traits {
+
+ +
21 using value_type = picojson::value;
+
22 using object_type = picojson::object;
+
23 using array_type = picojson::array;
+
24 using string_type = std::string;
+
25 using number_type = double;
+
26 using integer_type = int64_t;
+
27 using boolean_type = bool;
+
28
+
29 static json::type get_type(const picojson::value& val) {
+
30 using json::type;
+
31 if (val.is<bool>()) return type::boolean;
+
32 if (val.is<int64_t>()) return type::integer;
+
33 if (val.is<double>()) return type::number;
+
34 if (val.is<std::string>()) return type::string;
+
35 if (val.is<picojson::array>()) return type::array;
+
36 if (val.is<picojson::object>()) return type::object;
+
37
+
38 throw std::logic_error("invalid type");
+
39 }
+
40
+
41 static picojson::object as_object(const picojson::value& val) {
+
42 if (!val.is<picojson::object>()) throw std::bad_cast();
+
43 return val.get<picojson::object>();
+
44 }
+
45
+
46 static std::string as_string(const picojson::value& val) {
+
47 if (!val.is<std::string>()) throw std::bad_cast();
+
48 return val.get<std::string>();
+
49 }
+
50
+
51 static picojson::array as_array(const picojson::value& val) {
+
52 if (!val.is<picojson::array>()) throw std::bad_cast();
+
53 return val.get<picojson::array>();
+
54 }
+
55
+
56 static int64_t as_integer(const picojson::value& val) {
+
57 if (!val.is<int64_t>()) throw std::bad_cast();
+
58 return val.get<int64_t>();
+
59 }
+
60
+
61 static bool as_boolean(const picojson::value& val) {
+
62 if (!val.is<bool>()) throw std::bad_cast();
+
63 return val.get<bool>();
+
64 }
+
65
+
66 static double as_number(const picojson::value& val) {
+
67 if (!val.is<double>()) throw std::bad_cast();
+
68 return val.get<double>();
+
69 }
+
70
+
71 static bool parse(picojson::value& val, const std::string& str) {
+
72 return picojson::parse(val, str).empty();
+
73 }
+
74
+
75 static std::string serialize(const picojson::value& val) { return val.serialize(); }
+
76 };
+
+
77 } // namespace traits
+
78} // namespace jwt
+
79
+
80#endif
+
JSON Web Token.
Definition base.h:21
+
basic_claim's JSON trait implementation for picojson
Definition traits.h:20
+
+
+ + + + diff --git a/md__8github_2security.html b/md__8github_2security.html new file mode 100644 index 000000000..71f708ded --- /dev/null +++ b/md__8github_2security.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: Reporting Security Issues + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Reporting Security Issues
+
+
+

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

+

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

+

Disclosure Policy

+

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

+ +

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

+

Supported Version

+

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

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

Handling Tokens

+

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

+

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

+

How can new keys be generated for my application?

+

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

+

Here are a few links for your convenience:

+ +

Can this library encrypt/decrypt claims?

+

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

+

Why are my tokens immediately expired?

+

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

+

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

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

Can you add claims to a signed token?

+

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

+

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

+

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

+

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

+

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

+

Build Issues

+

Missing _HMAC and _EVP_sha256 symbols on Mac

+

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

+

Building on windows fails with syntax errors

+

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

+

To fix this do one of the following things:

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

There's a number of options to choice from.

+

Overview

+

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

+

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

+

Package Manager

+ +

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

+

Header Only

+

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

+

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

+ +

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

+

CMake

+

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

+

A simple installation of JWT-CPP may look like

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

Then from your own project

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

Unsupported Alternatives

+

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

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

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

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

Custom Signature Algorithms

+

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

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

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

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

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

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

Here's an example:

+
cmake . -DJWT_SSL_LIBRARY:STRING=wolfSSL
+

Supported Versions

+

These are the version which are currently being tested:

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

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

+
+

Notes

+

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

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

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

+

Selecting a JSON library

+

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

+

picojson nlohmann jsoncons boostjson jsoncpp

+

In order to maintain compatibility, picojson is still used to provide a specialized jwt::claim along with all helpers. Defining JWT_DISABLE_PICOJSON will remove this optional dependency. It's possible to directly include the traits defaults for the other JSON libraries. See the traits examples for details.

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

Providing your own JSON Traits

+

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

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

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

+
+

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

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

    JSON Web Token. +More...

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

    +Namespaces

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

    +Classes

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

    +Typedefs

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

    +Functions

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

    Detailed Description

    +

    JSON Web Token.

    +

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

    +

    Typedef Documentation

    + +

    ◆ claim

    + +
    +
    + +

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

    +

    a class to store a generic jsoncpp value as claim

    +

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

    +

    a class to store a generic picojson value as claim

    +

    a class to store a generic jsoncons value as claim

    +

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

    + +
    +
    + +

    ◆ date

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

    Default system time point in UTC

    + +
    +
    + +

    ◆ verify_context

    + +
    +
    +

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

    + +
    +
    +

    Function Documentation

    + +

    ◆ create() [1/3]

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

    Create a builder using the default clock

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

    ◆ create() [2/3]

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

    Create a builder using the given clock

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

    ◆ create() [3/3]

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

    Return a builder instance to create a new token

    + +
    +
    + +

    ◆ decode() [1/8]

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

    Decode a token

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

    ◆ decode() [2/8]

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

    Decode a token

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

    ◆ decode() [3/8]

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

    Decode a token

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

    ◆ decode() [4/8]

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

    Decode a token

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

    ◆ decode() [5/8]

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

    Decode a token

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

    ◆ decode() [6/8]

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

    Decode a token

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

    ◆ decode() [7/8]

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

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

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

    ◆ decode() [8/8]

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

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

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

    ◆ parse_jwk() [1/2]

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

    Parse a jwk

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

    ◆ parse_jwk() [2/2]

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

    Parse a single JSON Web Key

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

    ◆ parse_jwks() [1/2]

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

    Parse a jwks

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

    ◆ parse_jwks() [2/2]

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

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

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

    ◆ verify() [1/3]

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

    Create a verifier using the default clock

    Returns
    verifier instance
    + +
    +
    + +

    ◆ verify() [2/3]

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

    Create a verifier using the given clock

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

    ◆ verify() [3/3]

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

    Create a verifier using the default_clock.

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

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

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

    +Classes

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

    Detailed Description

    +

    Various cryptographic algorithms when working with JWT.

    +

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

    +
    +
    + + + + diff --git a/namespacejwt_1_1algorithm.js b/namespacejwt_1_1algorithm.js new file mode 100644 index 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..fe32d820c --- /dev/null +++ b/namespacejwt_1_1alphabet.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: jwt::alphabet Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet Namespace Reference
    +
    +
    + +

    character maps when encoding and decoding +More...

    + + + + + + + + +

    +Classes

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

    +Functions

    +uint32_t index (const std::array< 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..1ff7a4c73 --- /dev/null +++ b/namespacejwt_1_1base.html @@ -0,0 +1,231 @@ + + + + + + + +JWT-CPP: jwt::base Namespace Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::base Namespace Reference
    +
    +
    + +

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

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

    +Functions

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

    Detailed Description

    +

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

    +

    Function Documentation

    + +

    ◆ decode()

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

    Generic base64 decoding.

    +

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

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

    ◆ encode()

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

    Generic base64 encoding.

    +

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

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

    ◆ pad()

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

    Generic base64 padding.

    +

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

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

    ◆ trim()

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

    Generic base64 trimming.

    +

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

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

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

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

    +Classes

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

    +Enumerations

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

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

    + + + + + +

    +Classes

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

    +Functions

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

    Detailed Description

    +

    A collection for working with certificates.

    +

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

    +

    Function Documentation

    + +

    ◆ bn2raw()

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

    Convert a OpenSSL BIGNUM to a std::string

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

    ◆ convert_base64_der_to_pem() [1/4]

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

    Convert the certificate provided as base64 DER to PEM.

    +

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

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

    ◆ convert_base64_der_to_pem() [2/4]

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

    Convert the certificate provided as base64 DER to PEM.

    +

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

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

    ◆ convert_base64_der_to_pem() [3/4]

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

    Convert the certificate provided as base64 DER to PEM.

    +

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

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

    ◆ convert_base64_der_to_pem() [4/4]

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

    Convert the certificate provided as base64 DER to PEM.

    +

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

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

    ◆ convert_der_to_pem() [1/2]

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

    Convert the certificate provided as DER to PEM.

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

    ◆ convert_der_to_pem() [2/2]

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

    Convert the certificate provided as DER to PEM.

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

    ◆ create_public_key_from_rsa_components() [1/4]

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

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

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

    ◆ create_public_key_from_rsa_components() [2/4]

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

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

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

    ◆ create_public_key_from_rsa_components() [3/4]

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

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

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

    ◆ create_public_key_from_rsa_components() [4/4]

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

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

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

    ◆ extract_pubkey_from_cert() [1/2]

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

    Extract the public key of a pem certificate.

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

    ◆ extract_pubkey_from_cert() [2/2]

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

    Extract the public key of a pem certificate.

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

    ◆ load_private_ec_key_from_string() [1/2]

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

    Load a private key from a string.

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

    ◆ load_private_ec_key_from_string() [2/2]

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

    Load a private key from a string.

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

    ◆ load_private_key_from_string() [1/2]

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

    Load a private key from a string.

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

    ◆ load_private_key_from_string() [2/2]

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

    Load a private key from a string.

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

    ◆ load_public_ec_key_from_string() [1/2]

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

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

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

    ◆ load_public_ec_key_from_string() [2/2]

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

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

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

    ◆ load_public_key_from_string() [1/2]

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

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

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

    ◆ load_public_key_from_string() [2/2]

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

    Load a public key from a string.

    +

    The string should contain a pem encoded certificate or public key

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

    ◆ raw2bn() [1/2]

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

    Convert an std::string to a OpenSSL BIGNUM

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

    ◆ raw2bn() [2/2]

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

    Convert an std::string to a OpenSSL BIGNUM

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

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

    + + + + + +

    +Enumerations

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

    Detailed Description

    +

    JSON Abstractions for working with any library.

    +

    Enumeration Type Documentation

    + +

    ◆ type

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

    Categories for the various JSON types used in JWTs.

    +

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

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

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

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

    +Classes

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

    Detailed Description

    +

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

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

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

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

    - t -

    + + +

    - v -

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

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

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

    - t -

    + + +

    - v -

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

    +Functions

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

    +Functions

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

    +Typedefs

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

    +Functions

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

    +Functions

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

    +Functions

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

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

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Base class for ECDSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ecdsa()

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

    Construct new ecdsa algorithm

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

    Member Function Documentation

    + +

    ◆ name()

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

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

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

    Sign jwt data

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

    ◆ verify()

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

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ecdsa.js b/structjwt_1_1algorithm_1_1ecdsa.js new file mode 100644 index 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..f5ec0d91e --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed25519-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ed25519 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Ed25519 algorithm

    +

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

    +

    Requires at least OpenSSL 1.1.1.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ed25519()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyEd25519 public key in PEM format
    private_keyEd25519 private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed25519.js b/structjwt_1_1algorithm_1_1ed25519.js new file mode 100644 index 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..8fc026fd3 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ed448-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ed448 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Ed448 algorithm

    +

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

    +

    Requires at least OpenSSL 1.1.1.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ed448()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyEd448 public key in PEM format
    private_keyEd448 private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ed448.js b/structjwt_1_1algorithm_1_1ed448.js new file mode 100644 index 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..41bc79b2c --- /dev/null +++ b/structjwt_1_1algorithm_1_1eddsa-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::eddsa Member List
    +
    +
    + +

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

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

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

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Base class for EdDSA family of algorithms.

    +

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

    +

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

    +

    Constructor & Destructor Documentation

    + +

    ◆ eddsa()

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

    Construct new eddsa algorithm

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

    Member Function Documentation

    + +

    ◆ name()

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

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

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

    Sign jwt data

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

    ◆ verify()

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

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1eddsa.js b/structjwt_1_1algorithm_1_1eddsa.js new file mode 100644 index 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..9261915ec --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es256 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    ES256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es256()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256.js b/structjwt_1_1algorithm_1_1es256.js new file mode 100644 index 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..c1ce8f1c2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es256k-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es256k Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    ES256K algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es256k()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es256k.js b/structjwt_1_1algorithm_1_1es256k.js new file mode 100644 index 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..f7a911f97 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es384 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    ES384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es384()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es384.js b/structjwt_1_1algorithm_1_1es384.js new file mode 100644 index 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..3b30addf2 --- /dev/null +++ b/structjwt_1_1algorithm_1_1es512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::es512 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    ES512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ es512()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyECDSA public key in PEM format
    private_keyECDSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1es512.js b/structjwt_1_1algorithm_1_1es512.js new file mode 100644 index 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..7b103c285 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hmacsha-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hmacsha Member List
    +
    +
    + +

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

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

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

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Base class for HMAC family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ hmacsha()

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

    Construct new hmac algorithm

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

    Member Function Documentation

    + +

    ◆ name()

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

    Returns the algorithm name provided to the constructor

    +
    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

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

    Sign jwt data

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

    ◆ verify()

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

    Check if signature is valid

    +
    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details about failure.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hmacsha.js b/structjwt_1_1algorithm_1_1hmacsha.js new file mode 100644 index 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..2bf59f4c5 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs256 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    HS256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs256()

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

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs256.js b/structjwt_1_1algorithm_1_1hs256.js new file mode 100644 index 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..de57eb174 --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs384 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    HS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs384()

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

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs384.js b/structjwt_1_1algorithm_1_1hs384.js new file mode 100644 index 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..386f105af --- /dev/null +++ b/structjwt_1_1algorithm_1_1hs512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::hs512 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    HS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ hs512()

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

    Construct new instance of algorithm

    Parameters
    + + +
    keyHMAC signing key
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1hs512.js b/structjwt_1_1algorithm_1_1hs512.js new file mode 100644 index 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..639554c7b --- /dev/null +++ b/structjwt_1_1algorithm_1_1none-members.html @@ -0,0 +1,116 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::none Member List
    +
    +
    + +

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

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

    "none" algorithm. + More...

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    "none" algorithm.

    +

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

    +

    Member Function Documentation

    + +

    ◆ verify()

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

    Check if the given signature is empty.

    +

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

    Parameters
    + + + +
    signatureSignature data to verify
    ecerror_code filled with details about the error
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1none.js b/structjwt_1_1algorithm_1_1none.js new file mode 100644 index 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..6a3fe43a4 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps256 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    PS256 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps256()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps256.js b/structjwt_1_1algorithm_1_1ps256.js new file mode 100644 index 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..465703da8 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps384 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    PS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps384()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps384.js b/structjwt_1_1algorithm_1_1ps384.js new file mode 100644 index 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..1c8784fe6 --- /dev/null +++ b/structjwt_1_1algorithm_1_1ps512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::ps512 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    PS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ ps512()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1ps512.js b/structjwt_1_1algorithm_1_1ps512.js new file mode 100644 index 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..d77db6dbd --- /dev/null +++ b/structjwt_1_1algorithm_1_1pss-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::pss Member List
    +
    +
    + +

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

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

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

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Base class for PSS-RSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ pss()

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

    Construct new pss algorithm

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

    Member Function Documentation

    + +

    ◆ name()

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

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

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

    Sign jwt data

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

    ◆ verify()

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

    Check if signature is valid

    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with error details
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1pss.js b/structjwt_1_1algorithm_1_1pss.js new file mode 100644 index 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..a6a2ed87e --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs256-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs256 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    RS256 algorithm.

    +

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

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs256()

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

    Construct new instance of algorithm.

    +
    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs256.js b/structjwt_1_1algorithm_1_1rs256.js new file mode 100644 index 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..59e755dc7 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs384-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs384 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    RS384 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs384()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs384.js b/structjwt_1_1algorithm_1_1rs384.js new file mode 100644 index 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..950a54c18 --- /dev/null +++ b/structjwt_1_1algorithm_1_1rs512-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rs512 Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    RS512 algorithm

    +

    Constructor & Destructor Documentation

    + +

    ◆ rs512()

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

    Construct new instance of algorithm

    Parameters
    + + + + + +
    public_keyRSA public key in PEM format
    private_keyRSA private key or empty string if not available. If empty, signing will always fail.
    public_key_passwordPassword to decrypt public key pem.
    private_key_passwordPassword to decrypt private key pem.
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rs512.js b/structjwt_1_1algorithm_1_1rs512.js new file mode 100644 index 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..e1af504df --- /dev/null +++ b/structjwt_1_1algorithm_1_1rsa-members.html @@ -0,0 +1,117 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::algorithm::rsa Member List
    +
    +
    + +

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

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

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

    + +

    #include <jwt.h>

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

    +Public Member Functions

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

    Detailed Description

    +

    Base class for RSA family of algorithms.

    +

    Constructor & Destructor Documentation

    + +

    ◆ rsa()

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

    Construct new rsa algorithm

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

    Member Function Documentation

    + +

    ◆ name()

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

    Returns the algorithm name provided to the constructor

    Returns
    algorithm's name
    + +
    +
    + +

    ◆ sign()

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

    Sign jwt data

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

    ◆ verify()

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

    Check if signature is valid

    +
    Parameters
    + + + + +
    dataThe data to check signature against
    signatureSignature provided by the jwt
    ecFilled with details on failure
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1algorithm_1_1rsa.js b/structjwt_1_1algorithm_1_1rsa.js new file mode 100644 index 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..71906b083 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::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..33ff56c80 --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64 Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::base64 Struct Reference
    +
    +
    + +

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

    + +

    #include <base.h>

    + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::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..e8ed1409f --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::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..8da6bb69a --- /dev/null +++ b/structjwt_1_1alphabet_1_1base64url.html @@ -0,0 +1,138 @@ + + + + + + + +JWT-CPP: jwt::alphabet::base64url Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::base64url Struct Reference
    +
    +
    + +

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

    + +

    #include <base.h>

    + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::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..47e6c3164 --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::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..ea64d06ab --- /dev/null +++ b/structjwt_1_1alphabet_1_1helper_1_1base64url__percent__encoding.html @@ -0,0 +1,135 @@ + + + + + + + +JWT-CPP: jwt::alphabet::helper::base64url_percent_encoding Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::alphabet::helper::base64url_percent_encoding Struct Reference
    +
    +
    + +

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

    + +

    #include <base.h>

    + + + + + + +

    +Static Public Member Functions

    +static const std::array< char, 64 > & data ()
     
    +static const std::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..522c1a1ab --- /dev/null +++ b/structjwt_1_1default__clock-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::default_clock Member List
    +
    +
    + +

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

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

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    date now () const
     
    +

    Detailed Description

    +

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

    +

    Member Function Documentation

    + +

    ◆ now()

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

    Gets the current system time

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

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

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

    #include <jwt.h>

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

    Detailed Description

    +

    Attempt to access claim was unsuccessful

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map b/structjwt_1_1error_1_1claim__not__present__exception__inherit__graph.map new file mode 100644 index 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..eef242c15 --- /dev/null +++ b/structjwt_1_1error_1_1ecdsa__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::ecdsa_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::ecdsa_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::ecdsa_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map b/structjwt_1_1error_1_1ecdsa__exception__inherit__graph.map new file mode 100644 index 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..0a3239efe --- /dev/null +++ b/structjwt_1_1error_1_1invalid__json__exception-members.html @@ -0,0 +1,114 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::invalid_json_exception Member List
    +
    +
    + +

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

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

    #include <jwt.h>

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

    Detailed Description

    +

    Attempt to parse JSON was unsuccessful

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map b/structjwt_1_1error_1_1invalid__json__exception__inherit__graph.map new file mode 100644 index 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..155e66667 --- /dev/null +++ b/structjwt_1_1error_1_1rsa__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::rsa_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::rsa_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::rsa_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1rsa__exception__inherit__graph.map b/structjwt_1_1error_1_1rsa__exception__inherit__graph.map new file mode 100644 index 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..fbeb7f462 --- /dev/null +++ b/structjwt_1_1error_1_1signature__generation__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::signature_generation_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::signature_generation_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::signature_generation_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map b/structjwt_1_1error_1_1signature__generation__exception__inherit__graph.map new file mode 100644 index 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..04c4fb9ca --- /dev/null +++ b/structjwt_1_1error_1_1signature__verification__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::signature_verification_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::signature_verification_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::signature_verification_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map b/structjwt_1_1error_1_1signature__verification__exception__inherit__graph.map new file mode 100644 index 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..7e1125933 --- /dev/null +++ b/structjwt_1_1error_1_1token__verification__exception.html @@ -0,0 +1,119 @@ + + + + + + + +JWT-CPP: jwt::error::token_verification_exception Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::error::token_verification_exception Struct Reference
    +
    +
    +
    +Inheritance diagram for jwt::error::token_verification_exception:
    +
    +
    +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1error_1_1token__verification__exception__inherit__graph.map b/structjwt_1_1error_1_1token__verification__exception__inherit__graph.map new file mode 100644 index 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..f844353cc --- /dev/null +++ b/structjwt_1_1traits_1_1boost__json-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::boost_json Member List
    +
    +
    + +

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

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

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

    + +

    #include <traits.h>

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

    +Public Types

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

    +Static Public Member Functions

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

    Detailed Description

    +

    basic_claim's JSON trait implementation for Boost.JSON

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/boost-json/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html b/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html new file mode 100644 index 000000000..8835e99d8 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::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..e8593c24a --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons.html @@ -0,0 +1,186 @@ + + + + + + + +JWT-CPP: jwt::traits::danielaparker_jsoncons Struct Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::traits::danielaparker_jsoncons Struct Reference
    +
    +
    + +

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

    + +

    #include <traits.h>

    + + + + +

    +Classes

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

    Detailed Description

    +

    basic_claim's JSON trait implementation for jsoncons.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/danielaparker-jsoncons/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons.js b/structjwt_1_1traits_1_1danielaparker__jsoncons.js new file mode 100644 index 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..023f9c793 --- /dev/null +++ b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::danielaparker_jsoncons::object_type Member List
    +
    +
    + +

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

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

    +Public Types

    +using value_type = key_value_type
     
    +using mapped_type = key_value_type::value_type
     
    +using size_type = size_t
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    object_type (const object_type &)=default
     
    object_type (const json::object &o)
     
    object_type (object_type &&)=default
     
    object_type (json::object &&o)
     
    +object_typeoperator= (const object_type &o)=default
     
    +object_typeoperator= (object_type &&o) noexcept=default
     
    +mapped_type & operator[] (const key_type &key)
     
    +const mapped_type & at (const key_type &key) const
     
    +size_type count (const key_type &key) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/danielaparker-jsoncons/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map b/structjwt_1_1traits_1_1danielaparker__jsoncons_1_1object__type__inherit__graph.map new file mode 100644 index 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..af7c59080 --- /dev/null +++ b/structjwt_1_1traits_1_1kazuho__picojson-members.html @@ -0,0 +1,129 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::traits::kazuho_picojson Member List
    +
    +
    + +

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

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

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

    + +

    #include <traits.h>

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

    +Public Types

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

    +Static Public Member Functions

    +static json::type get_type (const picojson::value &val)
     
    +static picojson::object as_object (const picojson::value &val)
     
    +static std::string as_string (const picojson::value &val)
     
    +static picojson::array as_array (const picojson::value &val)
     
    +static int64_t as_integer (const picojson::value &val)
     
    +static bool as_boolean (const picojson::value &val)
     
    +static double as_number (const picojson::value &val)
     
    +static bool parse (picojson::value &val, const std::string &str)
     
    +static std::string serialize (const picojson::value &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for picojson

    +

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

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

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

    basic_claim's JSON trait implementation for Modern C++ JSON + More...

    + +

    #include <traits.h>

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

    +Public Types

    +using json = nlohmann::json
     
    +using value_type = json
     
    +using object_type = json::object_t
     
    +using array_type = json::array_t
     
    +using string_type = std::string
     
    +using number_type = json::number_float_t
     
    +using integer_type = json::number_integer_t
     
    +using boolean_type = json::boolean_t
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static jwt::json::type get_type (const json &val)
     
    +static json::object_t as_object (const json &val)
     
    +static std::string as_string (const json &val)
     
    +static json::array_t as_array (const json &val)
     
    +static int64_t as_integer (const json &val)
     
    +static bool as_boolean (const json &val)
     
    +static double as_number (const json &val)
     
    +static bool parse (json &val, std::string str)
     
    +static std::string serialize (const json &val)
     
    +

    Detailed Description

    +

    basic_claim's JSON trait implementation for Modern C++ JSON

    +

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

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

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

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

    + +

    #include <traits.h>

    + + + + + + +

    +Classes

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

    +Public Types

    +using value_type = Json::Value
     
    +using string_type = std::string
     
    +using number_type = double
     
    +using integer_type = Json::Value::Int
     
    +using boolean_type = bool
     
    + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

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

    Detailed Description

    +

    basic_claim's JSON trait implementation for jsoncpp

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/traits/open-source-parsers-jsoncpp/traits.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js new file mode 100644 index 000000000..32291ecd0 --- /dev/null +++ b/structjwt_1_1traits_1_1open__source__parsers__jsoncpp.js @@ -0,0 +1,5 @@ +var structjwt_1_1traits_1_1open__source__parsers__jsoncpp = +[ + [ "array_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1array__type.html", null ], + [ "object_type", "classjwt_1_1traits_1_1open__source__parsers__jsoncpp_1_1object__type.html", null ] +]; \ No newline at end of file diff --git a/structjwt_1_1verify__ops_1_1date__after__claim-members.html b/structjwt_1_1verify__ops_1_1date__after__claim-members.html new file mode 100644 index 000000000..13be11382 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::date_after_claim< json_traits, in_header > Member List
    +
    +
    + +

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

    + + + +
    leeway (defined in jwt::verify_ops::date_after_claim< json_traits, in_header >)jwt::verify_ops::date_after_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::date_after_claim< json_traits, in_header >)jwt::verify_ops::date_after_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__after__claim.html b/structjwt_1_1verify__ops_1_1date__after__claim.html new file mode 100644 index 000000000..93124665b --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__after__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_after_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::date_after_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const size_t leeway
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::date_after_claim< json_traits, in_header >

    Checks that the current time is after the time specified in the given claim. This is identical to how the "nbf" and "iat" check works.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__before__claim-members.html b/structjwt_1_1verify__ops_1_1date__before__claim-members.html new file mode 100644 index 000000000..801de42a5 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::date_before_claim< json_traits, in_header > Member List
    +
    +
    + +

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

    + + + +
    leeway (defined in jwt::verify_ops::date_before_claim< json_traits, in_header >)jwt::verify_ops::date_before_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::date_before_claim< json_traits, in_header >)jwt::verify_ops::date_before_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1date__before__claim.html b/structjwt_1_1verify__ops_1_1date__before__claim.html new file mode 100644 index 000000000..a54cce72b --- /dev/null +++ b/structjwt_1_1verify__ops_1_1date__before__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::date_before_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::date_before_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const size_t leeway
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::date_before_claim< json_traits, in_header >

    Checks that the current time is before the time specified in the given claim. This is identical to how the "exp" check works.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1equals__claim-members.html b/structjwt_1_1verify__ops_1_1equals__claim-members.html new file mode 100644 index 000000000..96659cd1f --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::equals_claim< json_traits, in_header > Member List
    +
    +
    + +

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

    + + + +
    expected (defined in jwt::verify_ops::equals_claim< json_traits, in_header >)jwt::verify_ops::equals_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::equals_claim< json_traits, in_header >)jwt::verify_ops::equals_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1equals__claim.html b/structjwt_1_1verify__ops_1_1equals__claim.html new file mode 100644 index 000000000..220ef6d85 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1equals__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::equals_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::equals_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const basic_claim< json_traits > expected
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::equals_claim< json_traits, in_header >

    This is the default operation and does case sensitive matching

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html b/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html new file mode 100644 index 000000000..4622fc8f7 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim-members.html @@ -0,0 +1,118 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Member List
    +
    + +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1insensitive__string__claim.html b/structjwt_1_1verify__ops_1_1insensitive__string__claim.html new file mode 100644 index 000000000..817835a21 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1insensitive__string__claim.html @@ -0,0 +1,149 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::insensitive_string_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + + + +

    +Public Member Functions

    insensitive_string_claim (const typename json_traits::string_type &e, std::locale loc)
     
    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Static Public Member Functions

    +static std::string to_lower_unicode (const std::string &str, const std::locale &loc)
     
    + + + + + +

    +Public Attributes

    +const json_traits::string_type expected
     
    +std::locale locale
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::insensitive_string_claim< json_traits, in_header >

    Checks if the claim is a string and does an case insensitive comparison.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1is__subset__claim-members.html b/structjwt_1_1verify__ops_1_1is__subset__claim-members.html new file mode 100644 index 000000000..7fa58b234 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim-members.html @@ -0,0 +1,115 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::is_subset_claim< json_traits, in_header > Member List
    +
    +
    + +

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

    + + + +
    expected (defined in jwt::verify_ops::is_subset_claim< json_traits, in_header >)jwt::verify_ops::is_subset_claim< json_traits, in_header >
    operator()(const verify_context< json_traits > &ctx, std::error_code &ec) const (defined in jwt::verify_ops::is_subset_claim< json_traits, in_header >)jwt::verify_ops::is_subset_claim< json_traits, in_header >inline
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1is__subset__claim.html b/structjwt_1_1verify__ops_1_1is__subset__claim.html new file mode 100644 index 000000000..2276ceebd --- /dev/null +++ b/structjwt_1_1verify__ops_1_1is__subset__claim.html @@ -0,0 +1,136 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::is_subset_claim< json_traits, in_header > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::is_subset_claim< json_traits, in_header > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

    + + + + +

    +Public Member Functions

    +void operator() (const verify_context< json_traits > &ctx, std::error_code &ec) const
     
    + + + +

    +Public Attributes

    +const basic_claim< json_traits >::set_t expected
     
    +

    Detailed Description

    +
    template<typename json_traits, bool in_header = false>
    +struct jwt::verify_ops::is_subset_claim< json_traits, in_header >

    Checks if the given set is a subset of the set inside the token. If the token value is a string it is treated as a set with a single element. The comparison is case sensitive.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context-members.html b/structjwt_1_1verify__ops_1_1verify__context-members.html new file mode 100644 index 000000000..84b77849f --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context-members.html @@ -0,0 +1,122 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    jwt::verify_ops::verify_context< json_traits > Member List
    +
    + +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context.html b/structjwt_1_1verify__ops_1_1verify__context.html new file mode 100644 index 000000000..6d89bb7b3 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context.html @@ -0,0 +1,324 @@ + + + + + + + +JWT-CPP: jwt::verify_ops::verify_context< json_traits > Struct Template Reference + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    JWT-CPP v0.7.0 +
    +
    A header only library for creating and validating JSON Web Tokens (JWT) in C++
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    jwt::verify_ops::verify_context< json_traits > Struct Template Reference
    +
    +
    + +

    #include <jwt.h>

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

    +Public Member Functions

    verify_context (date ctime, const decoded_jwt< json_traits > &j, size_t l)
     
    basic_claim< json_traits > get_claim (bool in_header, std::error_code &ec) const
     Helper method to get a claim from the jwt in this context.
     
    basic_claim< json_traits > get_claim (bool in_header, json::type t, std::error_code &ec) const
     
    basic_claim< json_traits > get_claim (std::error_code &ec) const
     Helper method to get a payload claim from the jwt.
     
    basic_claim< json_traits > get_claim (json::type t, std::error_code &ec) const
     Helper method to get a payload claim of a specific type from the jwt.
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +date current_time
     Current time, retrieved from the verifiers clock and cached for performance and consistency.
     
    +const decoded_jwt< json_traits > & jwt
     The jwt passed to the verifier.
     
    +size_t default_leeway {0}
     The configured default leeway for this verification.
     
    +json_traits::string_type claim_key {}
     The claim key to apply this comparison on.
     
    +

    Detailed Description

    +
    template<typename json_traits>
    +struct jwt::verify_ops::verify_context< json_traits >

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

    +

    Member Function Documentation

    + +

    ◆ get_claim() [1/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (bool in_header,
    json::type t,
    std::error_code & ec ) const
    +
    +inline
    +
    +

    Helper method to get a claim of a specific type from the jwt in this context

    Parameters
    + + + + +
    in_headercheck JWT header or payload sections
    tthe expected type of the claim
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [2/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (bool in_header,
    std::error_code & ec ) const
    +
    +inline
    +
    + +

    Helper method to get a claim from the jwt in this context.

    +
    Parameters
    + + + +
    in_headercheck JWT header or payload sections
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [3/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (json::type t,
    std::error_code & ec ) const
    +
    +inline
    +
    + +

    Helper method to get a payload claim of a specific type from the jwt.

    +
    Parameters
    + + + +
    tthe expected type of the claim
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    + +

    ◆ get_claim() [4/4]

    + +
    +
    +
    +template<typename json_traits >
    + + + + + +
    + + + + + + + +
    basic_claim< json_traits > jwt::verify_ops::verify_context< json_traits >::get_claim (std::error_code & ec) const
    +
    +inline
    +
    + +

    Helper method to get a payload claim from the jwt.

    +
    Parameters
    + + +
    ecstd::error_code which will indicate if any error occure
    +
    +
    +
    Returns
    basic_claim if it was present otherwise empty
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/jwt-cpp/jwt.h
    • +
    +
    +
    + + + + diff --git a/structjwt_1_1verify__ops_1_1verify__context.js b/structjwt_1_1verify__ops_1_1verify__context.js new file mode 100644 index 000000000..915122b20 --- /dev/null +++ b/structjwt_1_1verify__ops_1_1verify__context.js @@ -0,0 +1,11 @@ +var structjwt_1_1verify__ops_1_1verify__context = +[ + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#a5b4875d47d2f2ebd0055fb1e351bae89", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#a8a2aef62f0fb92d3372bdfb2bc35baa2", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#ab3a44096e09225a2623001a4a2e98da9", null ], + [ "get_claim", "structjwt_1_1verify__ops_1_1verify__context.html#ad2148052b231e8fdfa1c277e3dfaeb1d", null ], + [ "claim_key", "structjwt_1_1verify__ops_1_1verify__context.html#ae17bf5d6d68a5138b7b05ef0cd45365b", null ], + [ "current_time", "structjwt_1_1verify__ops_1_1verify__context.html#a17a600462f21974dfc97ff60fd2e2747", null ], + [ "default_leeway", "structjwt_1_1verify__ops_1_1verify__context.html#a84d6ff2a4a9704af5ffc93a587d4cc95", null ], + [ "jwt", "structjwt_1_1verify__ops_1_1verify__context.html#ae9662ab8311e90d4209859a8446eca37", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 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..6c21d61c9 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file