From 99edc0b2f68fce4de8a880a1ec71fbae055e6ee5 Mon Sep 17 00:00:00 2001 From: prince-chrismc Date: Mon, 29 Jul 2024 15:15:14 +0000 Subject: [PATCH] deploy: a968dfe4f738b7fbb3e3e467883f9a53a4aa0aab --- .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 | 127 + classjwt_1_1jwks.html | 307 ++ classjwt_1_1jwks.js | 9 + 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 | 3170 +++++++++++++++++ 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 | 139 + 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 | 261 ++ 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, 52086 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..2b63f1023 --- /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 static_cast<uint32_t>(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..338fe8983 --- /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:2307
+
Definition jwt.h:2847
+
Definition jwt.h:2712
+
JSON Web Key.
Definition jwt.h:3581
+
JWK Set.
Definition jwt.h:3792
+
Definition jwt.h:3318
+
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:3953
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3967
+
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:3928
+
Definition jwt.h:3884
+
Definition jwt.h:3099
+
+
+ + + + diff --git a/boost-json_2traits_8h_source.html b/boost-json_2traits_8h_source.html new file mode 100644 index 000000000..3ba8efa0a --- /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:2034
+
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..7427ef381 --- /dev/null +++ b/classjwt_1_1jwks-members.html @@ -0,0 +1,127 @@ + + + + + + + +JWT-CPP: Member List + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt::jwks< json_traits > Member List
+
+
+ +

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

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

JWK Set. + More...

+ +

#include <jwt.h>

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

+Public Types

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

+Public Member Functions

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

Detailed Description

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

JWK Set.

+

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

+

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

+

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

+

Constructor & Destructor Documentation

+ +

◆ jwks() [1/2]

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

Default constructor producing an empty object without any keys

+ +
+
+ +

◆ jwks() [2/2]

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

Parses a string buffer to extract the JWKS.

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

Member Function Documentation

+ +

◆ get_jwk()

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

Get jwk

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

◆ has_jwk()

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

Check if a jwk with the kid is present

Returns
true if jwk was present, false otherwise
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • include/jwt-cpp/jwt.h
  • +
+
+
+ + + + diff --git a/classjwt_1_1jwks.js b/classjwt_1_1jwks.js new file mode 100644 index 000000000..76d5d227b --- /dev/null +++ b/classjwt_1_1jwks.js @@ -0,0 +1,9 @@ +var classjwt_1_1jwks = +[ + [ "jwks_t", "classjwt_1_1jwks.html#a25df35cca51f36672dc34ce86f292c7b", null ], + [ "jwks_vector_t", "classjwt_1_1jwks.html#ac1999abc822287e49bb86d89b47e1a25", null ], + [ "jwks", "classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561", null ], + [ "jwks", "classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2", null ], + [ "get_jwk", "classjwt_1_1jwks.html#a25f52012c42fcc2761331db48b0d6926", null ], + [ "has_jwk", "classjwt_1_1jwks.html#aedd6c046ef7c08fcf8ab71158d3bafc5", null ] +]; \ No newline at end of file diff --git a/classjwt_1_1payload-members.html b/classjwt_1_1payload-members.html new file mode 100644 index 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..d556ced2d --- /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:2712
+
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:3953
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3967
+
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:3928
+
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..460710453 --- /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:2034
+
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..4d353feb5 --- /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..af354a9f6 --- /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..93b1f1f60 --- /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:3928
+

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:2307
+
verifier< default_clock, traits::boost_json > verify()
Definition defaults.h:23
+
Definition jwt.h:1787
+

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..8adc6f2db --- /dev/null +++ b/jwt_8h_source.html @@ -0,0 +1,3170 @@ + + + + + + + +JWT-CPP: include/jwt-cpp/jwt.h Source File + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
JWT-CPP v0.7.0 +
+
A header only library for creating and validating JSON Web Tokens (JWT) in C++
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
jwt.h
+
+
+
1#ifndef JWT_CPP_JWT_H
+
2#define JWT_CPP_JWT_H
+
3
+
4#ifndef JWT_DISABLE_PICOJSON
+
5#ifndef PICOJSON_USE_INT64
+
6#define PICOJSON_USE_INT64
+
7#endif
+
8#include "picojson/picojson.h"
+
9#endif
+
10
+
11#ifndef JWT_DISABLE_BASE64
+
12#include "base.h"
+
13#endif
+
14
+
15#include <openssl/ec.h>
+
16#include <openssl/ecdsa.h>
+
17#include <openssl/err.h>
+
18#include <openssl/evp.h>
+
19#include <openssl/hmac.h>
+
20#include <openssl/pem.h>
+
21#include <openssl/rsa.h>
+
22#include <openssl/ssl.h>
+
23
+
24#include <algorithm>
+
25#include <chrono>
+
26#include <climits>
+
27#include <cmath>
+
28#include <cstring>
+
29#include <functional>
+
30#include <iterator>
+
31#include <locale>
+
32#include <memory>
+
33#include <set>
+
34#include <system_error>
+
35#include <type_traits>
+
36#include <unordered_map>
+
37#include <utility>
+
38#include <vector>
+
39
+
40#if __cplusplus >= 201402L
+
41#ifdef __has_include
+
42#if __has_include(<experimental/type_traits>)
+
43#include <experimental/type_traits>
+
44#endif
+
45#endif
+
46#endif
+
47
+
48#if OPENSSL_VERSION_NUMBER >= 0x30000000L // 3.0.0
+
49#define JWT_OPENSSL_3_0
+
50#include <openssl/param_build.h>
+
51#elif OPENSSL_VERSION_NUMBER >= 0x10101000L // 1.1.1
+
52#define JWT_OPENSSL_1_1_1
+
53#elif OPENSSL_VERSION_NUMBER >= 0x10100000L // 1.1.0
+
54#define JWT_OPENSSL_1_1_0
+
55#elif OPENSSL_VERSION_NUMBER >= 0x10000000L // 1.0.0
+
56#define JWT_OPENSSL_1_0_0
+
57#endif
+
58
+
59#if defined(LIBRESSL_VERSION_NUMBER)
+
60#if LIBRESSL_VERSION_NUMBER >= 0x3050300fL
+
61#define JWT_OPENSSL_1_1_0
+
62#else
+
63#define JWT_OPENSSL_1_0_0
+
64#endif
+
65#endif
+
66
+
67#if defined(LIBWOLFSSL_VERSION_HEX)
+
68#define JWT_OPENSSL_1_1_1
+
69#endif
+
70
+
71#ifndef JWT_CLAIM_EXPLICIT
+
72#define JWT_CLAIM_EXPLICIT explicit
+
73#endif
+
74
+
82namespace jwt {
+
86 using date = std::chrono::system_clock::time_point;
+
87
+
+
91 namespace error {
+
+
92 struct signature_verification_exception : public std::system_error {
+
93 using system_error::system_error;
+
94 };
+
+
+
95 struct signature_generation_exception : public std::system_error {
+
96 using system_error::system_error;
+
97 };
+
+
+
98 struct rsa_exception : public std::system_error {
+
99 using system_error::system_error;
+
100 };
+
+
+
101 struct ecdsa_exception : public std::system_error {
+
102 using system_error::system_error;
+
103 };
+
+
+
104 struct token_verification_exception : public std::system_error {
+
105 using system_error::system_error;
+
106 };
+
+
+
110 enum class rsa_error {
+
111 ok = 0,
+
112 cert_load_failed = 10,
+
113 get_key_failed,
+
114 write_key_failed,
+
115 write_cert_failed,
+
116 convert_to_pem_failed,
+
117 load_key_bio_write,
+
118 load_key_bio_read,
+
119 create_mem_bio_failed,
+
120 no_key_provided,
+
121 set_rsa_failed,
+
122 create_context_failed
+
123 };
+
+
+
127 inline std::error_category& rsa_error_category() {
+
128 class rsa_error_cat : public std::error_category {
+
129 public:
+
130 const char* name() const noexcept override { return "rsa_error"; };
+
131 std::string message(int ev) const override {
+
132 switch (static_cast<rsa_error>(ev)) {
+
133 case rsa_error::ok: return "no error";
+
134 case rsa_error::cert_load_failed: return "error loading cert into memory";
+
135 case rsa_error::get_key_failed: return "error getting key from certificate";
+
136 case rsa_error::write_key_failed: return "error writing key data in PEM format";
+
137 case rsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
138 case rsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
139 case rsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
140 case rsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
141 case rsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
142 case rsa_error::no_key_provided: return "at least one of public or private key need to be present";
+
143 case rsa_error::set_rsa_failed: return "set modulus and exponent to RSA failed";
+
144 case rsa_error::create_context_failed: return "failed to create context";
+
145 default: return "unknown RSA error";
+
146 }
+
147 }
+
148 };
+
149 static rsa_error_cat cat;
+
150 return cat;
+
151 }
+
+
155 inline std::error_code make_error_code(rsa_error e) { return {static_cast<int>(e), rsa_error_category()}; }
+
+
159 enum class ecdsa_error {
+
160 ok = 0,
+
161 load_key_bio_write = 10,
+
162 load_key_bio_read,
+
163 create_mem_bio_failed,
+
164 no_key_provided,
+
165 invalid_key_size,
+
166 invalid_key,
+
167 create_context_failed,
+
168 cert_load_failed,
+
169 get_key_failed,
+
170 write_key_failed,
+
171 write_cert_failed,
+
172 convert_to_pem_failed
+
173 };
+
+
+
177 inline std::error_category& ecdsa_error_category() {
+
178 class ecdsa_error_cat : public std::error_category {
+
179 public:
+
180 const char* name() const noexcept override { return "ecdsa_error"; };
+
181 std::string message(int ev) const override {
+
182 switch (static_cast<ecdsa_error>(ev)) {
+
183 case ecdsa_error::ok: return "no error";
+
184 case ecdsa_error::load_key_bio_write: return "failed to load key: bio write failed";
+
185 case ecdsa_error::load_key_bio_read: return "failed to load key: bio read failed";
+
186 case ecdsa_error::create_mem_bio_failed: return "failed to create memory bio";
+
187 case ecdsa_error::no_key_provided:
+
188 return "at least one of public or private key need to be present";
+
189 case ecdsa_error::invalid_key_size: return "invalid key size";
+
190 case ecdsa_error::invalid_key: return "invalid key";
+
191 case ecdsa_error::create_context_failed: return "failed to create context";
+
192 case ecdsa_error::cert_load_failed: return "error loading cert into memory";
+
193 case ecdsa_error::get_key_failed: return "error getting key from certificate";
+
194 case ecdsa_error::write_key_failed: return "error writing key data in PEM format";
+
195 case ecdsa_error::write_cert_failed: return "error writing cert data in PEM format";
+
196 case ecdsa_error::convert_to_pem_failed: return "failed to convert key to pem";
+
197 default: return "unknown ECDSA error";
+
198 }
+
199 }
+
200 };
+
201 static ecdsa_error_cat cat;
+
202 return cat;
+
203 }
+
+
207 inline std::error_code make_error_code(ecdsa_error e) { return {static_cast<int>(e), ecdsa_error_category()}; }
+
208
+
+ +
213 ok = 0,
+
214 invalid_signature = 10,
+
215 create_context_failed,
+
216 verifyinit_failed,
+
217 verifyupdate_failed,
+
218 verifyfinal_failed,
+
219 get_key_failed,
+
220 set_rsa_pss_saltlen_failed,
+
221 signature_encoding_failed
+
222 };
+
+
+
226 inline std::error_category& signature_verification_error_category() {
+
227 class verification_error_cat : public std::error_category {
+
228 public:
+
229 const char* name() const noexcept override { return "signature_verification_error"; };
+
230 std::string message(int ev) const override {
+
231 switch (static_cast<signature_verification_error>(ev)) {
+
232 case signature_verification_error::ok: return "no error";
+
233 case signature_verification_error::invalid_signature: return "invalid signature";
+
234 case signature_verification_error::create_context_failed:
+
235 return "failed to verify signature: could not create context";
+
236 case signature_verification_error::verifyinit_failed:
+
237 return "failed to verify signature: VerifyInit failed";
+
238 case signature_verification_error::verifyupdate_failed:
+
239 return "failed to verify signature: VerifyUpdate failed";
+
240 case signature_verification_error::verifyfinal_failed:
+
241 return "failed to verify signature: VerifyFinal failed";
+
242 case signature_verification_error::get_key_failed:
+
243 return "failed to verify signature: Could not get key";
+
244 case signature_verification_error::set_rsa_pss_saltlen_failed:
+
245 return "failed to verify signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
246 case signature_verification_error::signature_encoding_failed:
+
247 return "failed to verify signature: i2d_ECDSA_SIG failed";
+
248 default: return "unknown signature verification error";
+
249 }
+
250 }
+
251 };
+
252 static verification_error_cat cat;
+
253 return cat;
+
254 }
+
+
+ +
259 return {static_cast<int>(e), signature_verification_error_category()};
+
260 }
+
+
261
+
+ +
266 ok = 0,
+
267 hmac_failed = 10,
+
268 create_context_failed,
+
269 signinit_failed,
+
270 signupdate_failed,
+
271 signfinal_failed,
+
272 ecdsa_do_sign_failed,
+
273 digestinit_failed,
+
274 digestupdate_failed,
+
275 digestfinal_failed,
+
276 rsa_padding_failed,
+
277 rsa_private_encrypt_failed,
+
278 get_key_failed,
+
279 set_rsa_pss_saltlen_failed,
+
280 signature_decoding_failed
+
281 };
+
+
+
285 inline std::error_category& signature_generation_error_category() {
+
286 class signature_generation_error_cat : public std::error_category {
+
287 public:
+
288 const char* name() const noexcept override { return "signature_generation_error"; };
+
289 std::string message(int ev) const override {
+
290 switch (static_cast<signature_generation_error>(ev)) {
+
291 case signature_generation_error::ok: return "no error";
+
292 case signature_generation_error::hmac_failed: return "hmac failed";
+
293 case signature_generation_error::create_context_failed:
+
294 return "failed to create signature: could not create context";
+
295 case signature_generation_error::signinit_failed:
+
296 return "failed to create signature: SignInit failed";
+
297 case signature_generation_error::signupdate_failed:
+
298 return "failed to create signature: SignUpdate failed";
+
299 case signature_generation_error::signfinal_failed:
+
300 return "failed to create signature: SignFinal failed";
+
301 case signature_generation_error::ecdsa_do_sign_failed: return "failed to generate ecdsa signature";
+
302 case signature_generation_error::digestinit_failed:
+
303 return "failed to create signature: DigestInit failed";
+
304 case signature_generation_error::digestupdate_failed:
+
305 return "failed to create signature: DigestUpdate failed";
+
306 case signature_generation_error::digestfinal_failed:
+
307 return "failed to create signature: DigestFinal failed";
+
308 case signature_generation_error::rsa_padding_failed:
+
309 return "failed to create signature: EVP_PKEY_CTX_set_rsa_padding failed";
+
310 case signature_generation_error::rsa_private_encrypt_failed:
+
311 return "failed to create signature: RSA_private_encrypt failed";
+
312 case signature_generation_error::get_key_failed:
+
313 return "failed to generate signature: Could not get key";
+
314 case signature_generation_error::set_rsa_pss_saltlen_failed:
+
315 return "failed to create signature: EVP_PKEY_CTX_set_rsa_pss_saltlen failed";
+
316 case signature_generation_error::signature_decoding_failed:
+
317 return "failed to create signature: d2i_ECDSA_SIG failed";
+
318 default: return "unknown signature generation error";
+
319 }
+
320 }
+
321 };
+
322 static signature_generation_error_cat cat = {};
+
323 return cat;
+
324 }
+
+
+
328 inline std::error_code make_error_code(signature_generation_error e) {
+
329 return {static_cast<int>(e), signature_generation_error_category()};
+
330 }
+
+
331
+
+ +
336 ok = 0,
+
337 wrong_algorithm = 10,
+
338 missing_claim,
+
339 claim_type_missmatch,
+
340 claim_value_missmatch,
+
341 token_expired,
+
342 audience_missmatch
+
343 };
+
+
+
347 inline std::error_category& token_verification_error_category() {
+
348 class token_verification_error_cat : public std::error_category {
+
349 public:
+
350 const char* name() const noexcept override { return "token_verification_error"; };
+
351 std::string message(int ev) const override {
+
352 switch (static_cast<token_verification_error>(ev)) {
+
353 case token_verification_error::ok: return "no error";
+
354 case token_verification_error::wrong_algorithm: return "wrong algorithm";
+
355 case token_verification_error::missing_claim: return "decoded JWT is missing required claim(s)";
+
356 case token_verification_error::claim_type_missmatch:
+
357 return "claim type does not match expected type";
+
358 case token_verification_error::claim_value_missmatch:
+
359 return "claim value does not match expected value";
+
360 case token_verification_error::token_expired: return "token expired";
+
361 case token_verification_error::audience_missmatch:
+
362 return "token doesn't contain the required audience";
+
363 default: return "unknown token verification error";
+
364 }
+
365 }
+
366 };
+
367 static token_verification_error_cat cat = {};
+
368 return cat;
+
369 }
+
+
+
373 inline std::error_code make_error_code(token_verification_error e) {
+
374 return {static_cast<int>(e), token_verification_error_category()};
+
375 }
+
+
+
379 inline void throw_if_error(std::error_code ec) {
+
380 if (ec) {
+
381 if (ec.category() == rsa_error_category()) throw rsa_exception(ec);
+
382 if (ec.category() == ecdsa_error_category()) throw ecdsa_exception(ec);
+
383 if (ec.category() == signature_verification_error_category())
+ + +
386 if (ec.category() == token_verification_error_category()) throw token_verification_exception(ec);
+
387 }
+
388 }
+
+
389 } // namespace error
+
+
390} // namespace jwt
+
391
+
392namespace std {
+
393 template<>
+
394 struct is_error_code_enum<jwt::error::rsa_error> : true_type {};
+
395 template<>
+
396 struct is_error_code_enum<jwt::error::ecdsa_error> : true_type {};
+
397 template<>
+
398 struct is_error_code_enum<jwt::error::signature_verification_error> : true_type {};
+
399 template<>
+
400 struct is_error_code_enum<jwt::error::signature_generation_error> : true_type {};
+
401 template<>
+
402 struct is_error_code_enum<jwt::error::token_verification_error> : true_type {};
+
403} // namespace std
+
404
+
405namespace jwt {
+
+
413 namespace helper {
+
+ +
422 public:
+
426 constexpr evp_pkey_handle() noexcept = default;
+
427#ifdef JWT_OPENSSL_1_0_0
+
432 explicit evp_pkey_handle(EVP_PKEY* key) { m_key = std::shared_ptr<EVP_PKEY>(key, EVP_PKEY_free); }
+
433
+
434 EVP_PKEY* get() const noexcept { return m_key.get(); }
+
435 bool operator!() const noexcept { return m_key == nullptr; }
+
436 explicit operator bool() const noexcept { return m_key != nullptr; }
+
437
+
438 private:
+
439 std::shared_ptr<EVP_PKEY> m_key{nullptr};
+
440#else
+
445 explicit constexpr evp_pkey_handle(EVP_PKEY* key) noexcept : m_key{key} {}
+
446 evp_pkey_handle(const evp_pkey_handle& other) : m_key{other.m_key} {
+
447 if (m_key != nullptr && EVP_PKEY_up_ref(m_key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
448 }
+
449// C++11 requires the body of a constexpr constructor to be empty
+
450#if __cplusplus >= 201402L
+
451 constexpr
+
452#endif
+
453 evp_pkey_handle(evp_pkey_handle&& other) noexcept
+
454 : m_key{other.m_key} {
+
455 other.m_key = nullptr;
+
456 }
+
457 evp_pkey_handle& operator=(const evp_pkey_handle& other) {
+
458 if (&other == this) return *this;
+
459 decrement_ref_count(m_key);
+
460 m_key = other.m_key;
+
461 increment_ref_count(m_key);
+
462 return *this;
+
463 }
+
464 evp_pkey_handle& operator=(evp_pkey_handle&& other) noexcept {
+
465 if (&other == this) return *this;
+
466 decrement_ref_count(m_key);
+
467 m_key = other.m_key;
+
468 other.m_key = nullptr;
+
469 return *this;
+
470 }
+
471 evp_pkey_handle& operator=(EVP_PKEY* key) {
+
472 decrement_ref_count(m_key);
+
473 m_key = key;
+
474 increment_ref_count(m_key);
+
475 return *this;
+
476 }
+
477 ~evp_pkey_handle() noexcept { decrement_ref_count(m_key); }
+
478
+
479 EVP_PKEY* get() const noexcept { return m_key; }
+
480 bool operator!() const noexcept { return m_key == nullptr; }
+
481 explicit operator bool() const noexcept { return m_key != nullptr; }
+
482
+
483 private:
+
484 EVP_PKEY* m_key{nullptr};
+
485
+
486 static void increment_ref_count(EVP_PKEY* key) {
+
487 if (key != nullptr && EVP_PKEY_up_ref(key) != 1) throw std::runtime_error("EVP_PKEY_up_ref failed");
+
488 }
+
489 static void decrement_ref_count(EVP_PKEY* key) noexcept {
+
490 if (key != nullptr) EVP_PKEY_free(key);
+
491 }
+
492#endif
+
493 };
+
+
494
+
495 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio() {
+
496 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(BIO_new(BIO_s_mem()), BIO_free_all);
+
497 }
+
498
+
499 inline std::unique_ptr<BIO, decltype(&BIO_free_all)> make_mem_buf_bio(const std::string& data) {
+
500 return std::unique_ptr<BIO, decltype(&BIO_free_all)>(
+
501#if OPENSSL_VERSION_NUMBER <= 0x10100003L
+
502 BIO_new_mem_buf(const_cast<char*>(data.data()), static_cast<int>(data.size())), BIO_free_all
+
503#else
+
504 BIO_new_mem_buf(data.data(), static_cast<int>(data.size())), BIO_free_all
+
505#endif
+
506 );
+
507 }
+
508
+
509 template<typename error_category = error::rsa_error>
+
510 std::string write_bio_to_string(std::unique_ptr<BIO, decltype(&BIO_free_all)>& bio_out, std::error_code& ec) {
+
511 char* ptr = nullptr;
+
512 auto len = BIO_get_mem_data(bio_out.get(), &ptr);
+
513 if (len <= 0 || ptr == nullptr) {
+
514 ec = error_category::convert_to_pem_failed;
+
515 return {};
+
516 }
+
517 return {ptr, static_cast<size_t>(len)};
+
518 }
+
519
+
520 inline std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)> make_evp_md_ctx() {
+
521 return
+
522#ifdef JWT_OPENSSL_1_0_0
+
523 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(), &EVP_MD_CTX_destroy);
+
524#else
+
525 std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_free)>(EVP_MD_CTX_new(), &EVP_MD_CTX_free);
+
526#endif
+
527 }
+
528
+
537 template<typename error_category = error::rsa_error>
+
+
538 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw, std::error_code& ec) {
+
539 ec.clear();
+
540 auto certbio = make_mem_buf_bio(certstr);
+
541 auto keybio = make_mem_buf_bio();
+
542 if (!certbio || !keybio) {
+
543 ec = error_category::create_mem_bio_failed;
+
544 return {};
+
545 }
+
546
+
547 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
548 PEM_read_bio_X509(certbio.get(), nullptr, nullptr, const_cast<char*>(pw.c_str())), X509_free);
+
549 if (!cert) {
+
550 ec = error_category::cert_load_failed;
+
551 return {};
+
552 }
+
553 std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)> key(X509_get_pubkey(cert.get()), EVP_PKEY_free);
+
554 if (!key) {
+
555 ec = error_category::get_key_failed;
+
556 return {};
+
557 }
+
558 if (PEM_write_bio_PUBKEY(keybio.get(), key.get()) == 0) {
+
559 ec = error_category::write_key_failed;
+
560 return {};
+
561 }
+
562
+
563 return write_bio_to_string<error_category>(keybio, ec);
+
564 }
+
+
565
+
574 template<typename error_category = error::rsa_error>
+
+
575 std::string extract_pubkey_from_cert(const std::string& certstr, const std::string& pw = "") {
+
576 std::error_code ec;
+
577 auto res = extract_pubkey_from_cert<error_category>(certstr, pw, ec);
+ +
579 return res;
+
580 }
+
+
581
+
+
588 inline std::string convert_der_to_pem(const std::string& cert_der_str, std::error_code& ec) {
+
589 ec.clear();
+
590
+
591 auto c_str = reinterpret_cast<const unsigned char*>(cert_der_str.c_str());
+
592
+
593 std::unique_ptr<X509, decltype(&X509_free)> cert(
+
594 d2i_X509(NULL, &c_str, static_cast<int>(cert_der_str.size())), X509_free);
+
595 auto certbio = make_mem_buf_bio();
+
596 if (!cert || !certbio) {
+
597 ec = error::rsa_error::create_mem_bio_failed;
+
598 return {};
+
599 }
+
600
+
601 if (!PEM_write_bio_X509(certbio.get(), cert.get())) {
+
602 ec = error::rsa_error::write_cert_failed;
+
603 return {};
+
604 }
+
605
+
606 return write_bio_to_string(certbio, ec);
+
607 }
+
+
608
+
623 template<typename Decode>
+
+
624 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode,
+
625 std::error_code& ec) {
+
626 ec.clear();
+
627 const auto decoded_str = decode(cert_base64_der_str);
+
628 return convert_der_to_pem(decoded_str, ec);
+
629 }
+
+
630
+
645 template<typename Decode>
+
+
646 std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, Decode decode) {
+
647 std::error_code ec;
+
648 auto res = convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+ +
650 return res;
+
651 }
+
+
652
+
+
659 inline std::string convert_der_to_pem(const std::string& cert_der_str) {
+
660 std::error_code ec;
+
661 auto res = convert_der_to_pem(cert_der_str, ec);
+ +
663 return res;
+
664 }
+
+
665
+
666#ifndef JWT_DISABLE_BASE64
+
+
676 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str, std::error_code& ec) {
+
677 auto decode = [](const std::string& token) {
+
678 return base::decode<alphabet::base64>(base::pad<alphabet::base64>(token));
+
679 };
+
680 return convert_base64_der_to_pem(cert_base64_der_str, std::move(decode), ec);
+
681 }
+
+
682
+
+
692 inline std::string convert_base64_der_to_pem(const std::string& cert_base64_der_str) {
+
693 std::error_code ec;
+
694 auto res = convert_base64_der_to_pem(cert_base64_der_str, ec);
+ +
696 return res;
+
697 }
+
+
698#endif
+
709 template<typename error_category = error::rsa_error>
+
+
710 evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password,
+
711 std::error_code& ec) {
+
712 ec.clear();
+
713 auto pubkey_bio = make_mem_buf_bio();
+
714 if (!pubkey_bio) {
+
715 ec = error_category::create_mem_bio_failed;
+
716 return {};
+
717 }
+
718 if (key.substr(0, 27) == "-----BEGIN CERTIFICATE-----") {
+
719 auto epkey = helper::extract_pubkey_from_cert<error_category>(key, password, ec);
+
720 if (ec) return {};
+
721 const int len = static_cast<int>(epkey.size());
+
722 if (BIO_write(pubkey_bio.get(), epkey.data(), len) != len) {
+
723 ec = error_category::load_key_bio_write;
+
724 return {};
+
725 }
+
726 } else {
+
727 const int len = static_cast<int>(key.size());
+
728 if (BIO_write(pubkey_bio.get(), key.data(), len) != len) {
+
729 ec = error_category::load_key_bio_write;
+
730 return {};
+
731 }
+
732 }
+
733
+
734 evp_pkey_handle pkey(PEM_read_bio_PUBKEY(
+
735 pubkey_bio.get(), nullptr, nullptr,
+
736 (void*)password.data())); // NOLINT(google-readability-casting) requires `const_cast`
+
737 if (!pkey) ec = error_category::load_key_bio_read;
+
738 return pkey;
+
739 }
+
+
740
+
751 template<typename error_category = error::rsa_error>
+
+
752 inline evp_pkey_handle load_public_key_from_string(const std::string& key, const std::string& password = "") {
+
753 std::error_code ec;
+
754 auto res = load_public_key_from_string<error_category>(key, password, ec);
+ +
756 return res;
+
757 }
+
+
758
+
767 template<typename error_category = error::rsa_error>
+
+
768 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password,
+
769 std::error_code& ec) {
+
770 ec.clear();
+
771 auto private_key_bio = make_mem_buf_bio();
+
772 if (!private_key_bio) {
+
773 ec = error_category::create_mem_bio_failed;
+
774 return {};
+
775 }
+
776 const int len = static_cast<int>(key.size());
+
777 if (BIO_write(private_key_bio.get(), key.data(), len) != len) {
+
778 ec = error_category::load_key_bio_write;
+
779 return {};
+
780 }
+
781 evp_pkey_handle pkey(
+
782 PEM_read_bio_PrivateKey(private_key_bio.get(), nullptr, nullptr, const_cast<char*>(password.c_str())));
+
783 if (!pkey) ec = error_category::load_key_bio_read;
+
784 return pkey;
+
785 }
+
+
786
+
795 template<typename error_category = error::rsa_error>
+
+
796 inline evp_pkey_handle load_private_key_from_string(const std::string& key, const std::string& password = "") {
+
797 std::error_code ec;
+
798 auto res = load_private_key_from_string<error_category>(key, password, ec);
+ +
800 return res;
+
801 }
+
+
802
+
+
814 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key, const std::string& password,
+
815 std::error_code& ec) {
+
816 return load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+
817 }
+
+
818
+
824 inline
+
825#ifdef JWT_OPENSSL_1_0_0
+
826 std::string
+
827 bn2raw(BIGNUM* bn)
+
828#else
+
829 std::string
+
+
830 bn2raw(const BIGNUM* bn)
+
831#endif
+
832 {
+
833 std::string res(BN_num_bytes(bn), '\0');
+
834 BN_bn2bin(bn, (unsigned char*)res.data()); // NOLINT(google-readability-casting) requires `const_cast`
+
835 return res;
+
836 }
+
+
+
843 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw, std::error_code& ec) {
+
844 auto bn =
+
845 BN_bin2bn(reinterpret_cast<const unsigned char*>(raw.data()), static_cast<int>(raw.size()), nullptr);
+
846 // https://www.openssl.org/docs/man1.1.1/man3/BN_bin2bn.html#RETURN-VALUES
+
847 if (!bn) {
+
848 ec = error::rsa_error::set_rsa_failed;
+
849 return {nullptr, BN_free};
+
850 }
+
851 return {bn, BN_free};
+
852 }
+
+
+
858 inline std::unique_ptr<BIGNUM, decltype(&BN_free)> raw2bn(const std::string& raw) {
+
859 std::error_code ec;
+
860 auto res = raw2bn(raw, ec);
+ +
862 return res;
+
863 }
+
+
864
+
+
876 inline evp_pkey_handle load_public_ec_key_from_string(const std::string& key,
+
877 const std::string& password = "") {
+
878 std::error_code ec;
+
879 auto res = load_public_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
881 return res;
+
882 }
+
+
883
+
+
893 inline evp_pkey_handle load_private_ec_key_from_string(const std::string& key, const std::string& password,
+
894 std::error_code& ec) {
+
895 return load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+
896 }
+
+
897
+
912 template<typename Decode>
+
+
913 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
914 Decode decode, std::error_code& ec) {
+
915 ec.clear();
+
916 auto decoded_modulus = decode(modulus);
+
917 auto decoded_exponent = decode(exponent);
+
918
+
919 auto n = helper::raw2bn(decoded_modulus, ec);
+
920 if (ec) return {};
+
921 auto e = helper::raw2bn(decoded_exponent, ec);
+
922 if (ec) return {};
+
923
+
924#if defined(JWT_OPENSSL_3_0)
+
925 // OpenSSL deprecated mutable keys and there is a new way for making them
+
926 // https://mta.openssl.org/pipermail/openssl-users/2021-July/013994.html
+
927 // https://www.openssl.org/docs/man3.1/man3/OSSL_PARAM_BLD_new.html#Example-2
+
928 std::unique_ptr<OSSL_PARAM_BLD, decltype(&OSSL_PARAM_BLD_free)> param_bld(OSSL_PARAM_BLD_new(),
+
929 OSSL_PARAM_BLD_free);
+
930 if (!param_bld) {
+
931 ec = error::rsa_error::create_context_failed;
+
932 return {};
+
933 }
+
934
+
935 if (OSSL_PARAM_BLD_push_BN(param_bld.get(), "n", n.get()) != 1 ||
+
936 OSSL_PARAM_BLD_push_BN(param_bld.get(), "e", e.get()) != 1) {
+
937 ec = error::rsa_error::set_rsa_failed;
+
938 return {};
+
939 }
+
940
+
941 std::unique_ptr<OSSL_PARAM, decltype(&OSSL_PARAM_free)> params(OSSL_PARAM_BLD_to_param(param_bld.get()),
+
942 OSSL_PARAM_free);
+
943 if (!params) {
+
944 ec = error::rsa_error::set_rsa_failed;
+
945 return {};
+
946 }
+
947
+
948 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
949 EVP_PKEY_CTX_new_from_name(nullptr, "RSA", nullptr), EVP_PKEY_CTX_free);
+
950 if (!ctx) {
+
951 ec = error::rsa_error::create_context_failed;
+
952 return {};
+
953 }
+
954
+
955 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html#EXAMPLES
+
956 // Error codes based on https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_fromdata_init.html#RETURN-VALUES
+
957 EVP_PKEY* pkey = NULL;
+
958 if (EVP_PKEY_fromdata_init(ctx.get()) <= 0 ||
+
959 EVP_PKEY_fromdata(ctx.get(), &pkey, EVP_PKEY_KEYPAIR, params.get()) <= 0) {
+
960 // It's unclear if this can fail after allocating but free it anyways
+
961 // https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_fromdata.html
+
962 EVP_PKEY_free(pkey);
+
963
+
964 ec = error::rsa_error::cert_load_failed;
+
965 return {};
+
966 }
+
967
+
968 // Transfer ownership so we get ref counter and cleanup
+
969 evp_pkey_handle rsa(pkey);
+
970
+
971#else
+
972 std::unique_ptr<RSA, decltype(&RSA_free)> rsa(RSA_new(), RSA_free);
+
973
+
974#if defined(JWT_OPENSSL_1_1_1) || defined(JWT_OPENSSL_1_1_0)
+
975 // After this RSA_free will also free the n and e big numbers
+
976 // See https://github.com/Thalhammer/jwt-cpp/pull/298#discussion_r1282619186
+
977 if (RSA_set0_key(rsa.get(), n.get(), e.get(), nullptr) == 1) {
+
978 // This can only fail we passed in NULL for `n` or `e`
+
979 // https://github.com/openssl/openssl/blob/d6e4056805f54bb1a0ef41fa3a6a35b70c94edba/crypto/rsa/rsa_lib.c#L396
+
980 // So to make sure there is no memory leak, we hold the references
+
981 n.release();
+
982 e.release();
+
983 } else {
+
984 ec = error::rsa_error::set_rsa_failed;
+
985 return {};
+
986 }
+
987#elif defined(JWT_OPENSSL_1_0_0)
+
988 rsa->e = e.release();
+
989 rsa->n = n.release();
+
990 rsa->d = nullptr;
+
991#endif
+
992#endif
+
993
+
994 auto pub_key_bio = make_mem_buf_bio();
+
995 if (!pub_key_bio) {
+
996 ec = error::rsa_error::create_mem_bio_failed;
+
997 return {};
+
998 }
+
999
+
1000 auto write_pem_to_bio =
+
1001#if defined(JWT_OPENSSL_3_0)
+
1002 // https://www.openssl.org/docs/man3.1/man3/PEM_write_bio_RSA_PUBKEY.html
+
1003 &PEM_write_bio_PUBKEY;
+
1004#else
+
1005 &PEM_write_bio_RSA_PUBKEY;
+
1006#endif
+
1007 if (write_pem_to_bio(pub_key_bio.get(), rsa.get()) != 1) {
+
1008 ec = error::rsa_error::load_key_bio_write;
+
1009 return {};
+
1010 }
+
1011
+
1012 return write_bio_to_string<error::rsa_error>(pub_key_bio, ec);
+
1013 }
+
+
1014
+
1028 template<typename Decode>
+
+
1029 std::string create_public_key_from_rsa_components(const std::string& modulus, const std::string& exponent,
+
1030 Decode decode) {
+
1031 std::error_code ec;
+
1032 auto res = create_public_key_from_rsa_components(modulus, exponent, decode, ec);
+ +
1034 return res;
+
1035 }
+
+
1036
+
1037#ifndef JWT_DISABLE_BASE64
+
+
1048 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1049 const std::string& exponent, std::error_code& ec) {
+
1050 auto decode = [](const std::string& token) {
+
1051 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(token));
+
1052 };
+
1053 return create_public_key_from_rsa_components(modulus, exponent, std::move(decode), ec);
+
1054 }
+
+
+
1064 inline std::string create_public_key_from_rsa_components(const std::string& modulus,
+
1065 const std::string& exponent) {
+
1066 std::error_code ec;
+
1067 auto res = create_public_key_from_rsa_components(modulus, exponent, ec);
+ +
1069 return res;
+
1070 }
+
+
1071#endif
+
+ +
1082 const std::string& password = "") {
+
1083 std::error_code ec;
+
1084 auto res = load_private_key_from_string<error::ecdsa_error>(key, password, ec);
+ +
1086 return res;
+
1087 }
+
+
1088 } // namespace helper
+
+
1089
+
+
1099 namespace algorithm {
+
+
1107 struct none {
+
+
1111 std::string sign(const std::string& /*unused*/, std::error_code& ec) const {
+
1112 ec.clear();
+
1113 return {};
+
1114 }
+
+
+
1122 void verify(const std::string& /*unused*/, const std::string& signature, std::error_code& ec) const {
+
1123 ec.clear();
+
1124 if (!signature.empty()) { ec = error::signature_verification_error::invalid_signature; }
+
1125 }
+
+
1127 std::string name() const { return "none"; }
+
1128 };
+
+
+
1132 struct hmacsha {
+
+
1140 hmacsha(std::string key, const EVP_MD* (*md)(), std::string name)
+
1141 : secret(std::move(key)), md(md), alg_name(std::move(name)) {}
+
+
+
1149 std::string sign(const std::string& data, std::error_code& ec) const {
+
1150 ec.clear();
+
1151 std::string res(static_cast<size_t>(EVP_MAX_MD_SIZE), '\0');
+
1152 auto len = static_cast<unsigned int>(res.size());
+
1153 if (HMAC(md(), secret.data(), static_cast<int>(secret.size()),
+
1154 reinterpret_cast<const unsigned char*>(data.data()), static_cast<int>(data.size()),
+
1155 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1156 &len) == nullptr) {
+
1157 ec = error::signature_generation_error::hmac_failed;
+
1158 return {};
+
1159 }
+
1160 res.resize(len);
+
1161 return res;
+
1162 }
+
+
+
1170 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1171 ec.clear();
+
1172 auto res = sign(data, ec);
+
1173 if (ec) return;
+
1174
+
1175 bool matched = true;
+
1176 for (size_t i = 0; i < std::min<size_t>(res.size(), signature.size()); i++)
+
1177 if (res[i] != signature[i]) matched = false;
+
1178 if (res.size() != signature.size()) matched = false;
+
1179 if (!matched) {
+
1180 ec = error::signature_verification_error::invalid_signature;
+
1181 return;
+
1182 }
+
1183 }
+
+
1189 std::string name() const { return alg_name; }
+
1190
+
1191 private:
+
1193 const std::string secret;
+
1195 const EVP_MD* (*md)();
+
1197 const std::string alg_name;
+
1198 };
+
+
+
1202 struct rsa {
+
+
1213 rsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1214 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1215 : md(md), alg_name(std::move(name)) {
+
1216 if (!private_key.empty()) {
+
1217 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1218 } else if (!public_key.empty()) {
+
1219 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1220 } else
+
1221 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1222 }
+
+
+
1229 std::string sign(const std::string& data, std::error_code& ec) const {
+
1230 ec.clear();
+
1231 auto ctx = helper::make_evp_md_ctx();
+
1232 if (!ctx) {
+
1233 ec = error::signature_generation_error::create_context_failed;
+
1234 return {};
+
1235 }
+
1236 if (!EVP_SignInit(ctx.get(), md())) {
+
1237 ec = error::signature_generation_error::signinit_failed;
+
1238 return {};
+
1239 }
+
1240
+
1241 std::string res(EVP_PKEY_size(pkey.get()), '\0');
+
1242 unsigned int len = 0;
+
1243
+
1244 if (!EVP_SignUpdate(ctx.get(), data.data(), data.size())) {
+
1245 ec = error::signature_generation_error::signupdate_failed;
+
1246 return {};
+
1247 }
+
1248 if (EVP_SignFinal(ctx.get(), (unsigned char*)res.data(), &len, pkey.get()) == 0) {
+
1249 ec = error::signature_generation_error::signfinal_failed;
+
1250 return {};
+
1251 }
+
1252
+
1253 res.resize(len);
+
1254 return res;
+
1255 }
+
+
+
1263 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1264 ec.clear();
+
1265 auto ctx = helper::make_evp_md_ctx();
+
1266 if (!ctx) {
+
1267 ec = error::signature_verification_error::create_context_failed;
+
1268 return;
+
1269 }
+
1270 if (!EVP_VerifyInit(ctx.get(), md())) {
+
1271 ec = error::signature_verification_error::verifyinit_failed;
+
1272 return;
+
1273 }
+
1274 if (!EVP_VerifyUpdate(ctx.get(), data.data(), data.size())) {
+
1275 ec = error::signature_verification_error::verifyupdate_failed;
+
1276 return;
+
1277 }
+
1278 auto res = EVP_VerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1279 static_cast<unsigned int>(signature.size()), pkey.get());
+
1280 if (res != 1) {
+
1281 ec = error::signature_verification_error::verifyfinal_failed;
+
1282 return;
+
1283 }
+
1284 }
+
+
1289 std::string name() const { return alg_name; }
+
1290
+
1291 private:
+ +
1295 const EVP_MD* (*md)();
+
1297 const std::string alg_name;
+
1298 };
+
+
+
1302 struct ecdsa {
+
+
1314 ecdsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1315 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name, size_t siglen)
+
1316 : md(md), alg_name(std::move(name)), signature_length(siglen) {
+
1317 if (!private_key.empty()) {
+
1318 pkey = helper::load_private_ec_key_from_string(private_key, private_key_password);
+
1319 check_private_key(pkey.get());
+
1320 } else if (!public_key.empty()) {
+
1321 pkey = helper::load_public_ec_key_from_string(public_key, public_key_password);
+
1322 check_public_key(pkey.get());
+
1323 } else {
+
1324 throw error::ecdsa_exception(error::ecdsa_error::no_key_provided);
+
1325 }
+
1326 if (!pkey) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1327
+
1328 size_t keysize = EVP_PKEY_bits(pkey.get());
+
1329 if (keysize != signature_length * 4 && (signature_length != 132 || keysize != 521))
+
1330 throw error::ecdsa_exception(error::ecdsa_error::invalid_key_size);
+
1331 }
+
+
1332
+
+
1339 std::string sign(const std::string& data, std::error_code& ec) const {
+
1340 ec.clear();
+
1341 auto ctx = helper::make_evp_md_ctx();
+
1342 if (!ctx) {
+
1343 ec = error::signature_generation_error::create_context_failed;
+
1344 return {};
+
1345 }
+
1346 if (!EVP_DigestSignInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1347 ec = error::signature_generation_error::signinit_failed;
+
1348 return {};
+
1349 }
+
1350 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1351 ec = error::signature_generation_error::digestupdate_failed;
+
1352 return {};
+
1353 }
+
1354
+
1355 size_t len = 0;
+
1356 if (!EVP_DigestSignFinal(ctx.get(), nullptr, &len)) {
+
1357 ec = error::signature_generation_error::signfinal_failed;
+
1358 return {};
+
1359 }
+
1360 std::string res(len, '\0');
+
1361 if (!EVP_DigestSignFinal(ctx.get(), (unsigned char*)res.data(), &len)) {
+
1362 ec = error::signature_generation_error::signfinal_failed;
+
1363 return {};
+
1364 }
+
1365
+
1366 res.resize(len);
+
1367 return der_to_p1363_signature(res, ec);
+
1368 }
+
+
1369
+
+
1376 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1377 ec.clear();
+
1378 std::string der_signature = p1363_to_der_signature(signature, ec);
+
1379 if (ec) { return; }
+
1380
+
1381 auto ctx = helper::make_evp_md_ctx();
+
1382 if (!ctx) {
+
1383 ec = error::signature_verification_error::create_context_failed;
+
1384 return;
+
1385 }
+
1386 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, md(), nullptr, pkey.get())) {
+
1387 ec = error::signature_verification_error::verifyinit_failed;
+
1388 return;
+
1389 }
+
1390 if (!EVP_DigestUpdate(ctx.get(), data.data(), data.size())) {
+
1391 ec = error::signature_verification_error::verifyupdate_failed;
+
1392 return;
+
1393 }
+
1394
+
1395#if OPENSSL_VERSION_NUMBER < 0x10002000L
+
1396 unsigned char* der_sig_data = reinterpret_cast<unsigned char*>(const_cast<char*>(der_signature.data()));
+
1397#else
+
1398 const unsigned char* der_sig_data = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1399#endif
+
1400 auto res =
+
1401 EVP_DigestVerifyFinal(ctx.get(), der_sig_data, static_cast<unsigned int>(der_signature.length()));
+
1402 if (res == 0) {
+
1403 ec = error::signature_verification_error::invalid_signature;
+
1404 return;
+
1405 }
+
1406 if (res == -1) {
+
1407 ec = error::signature_verification_error::verifyfinal_failed;
+
1408 return;
+
1409 }
+
1410 }
+
+
1415 std::string name() const { return alg_name; }
+
1416
+
1417 private:
+
1418 static void check_public_key(EVP_PKEY* pkey) {
+
1419#ifdef JWT_OPENSSL_3_0
+
1420 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1421 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1422 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1423 if (EVP_PKEY_public_check(ctx.get()) != 1) {
+
1424 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1425 }
+
1426#else
+
1427 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1428 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1429 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1430#endif
+
1431 }
+
1432
+
1433 static void check_private_key(EVP_PKEY* pkey) {
+
1434#ifdef JWT_OPENSSL_3_0
+
1435 std::unique_ptr<EVP_PKEY_CTX, decltype(&EVP_PKEY_CTX_free)> ctx(
+
1436 EVP_PKEY_CTX_new_from_pkey(nullptr, pkey, nullptr), EVP_PKEY_CTX_free);
+
1437 if (!ctx) { throw error::ecdsa_exception(error::ecdsa_error::create_context_failed); }
+
1438 if (EVP_PKEY_private_check(ctx.get()) != 1) {
+
1439 throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1440 }
+
1441#else
+
1442 std::unique_ptr<EC_KEY, decltype(&EC_KEY_free)> eckey(EVP_PKEY_get1_EC_KEY(pkey), EC_KEY_free);
+
1443 if (!eckey) { throw error::ecdsa_exception(error::ecdsa_error::invalid_key); }
+
1444 if (EC_KEY_check_key(eckey.get()) == 0) throw error::ecdsa_exception(error::ecdsa_error::invalid_key);
+
1445#endif
+
1446 }
+
1447
+
1448 std::string der_to_p1363_signature(const std::string& der_signature, std::error_code& ec) const {
+
1449 const unsigned char* possl_signature = reinterpret_cast<const unsigned char*>(der_signature.data());
+
1450 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(
+
1451 d2i_ECDSA_SIG(nullptr, &possl_signature, static_cast<long>(der_signature.length())),
+
1452 ECDSA_SIG_free);
+
1453 if (!sig) {
+
1454 ec = error::signature_generation_error::signature_decoding_failed;
+
1455 return {};
+
1456 }
+
1457
+
1458#ifdef JWT_OPENSSL_1_0_0
+
1459 auto rr = helper::bn2raw(sig->r);
+
1460 auto rs = helper::bn2raw(sig->s);
+
1461#else
+
1462 const BIGNUM* r;
+
1463 const BIGNUM* s;
+
1464 ECDSA_SIG_get0(sig.get(), &r, &s);
+
1465 auto rr = helper::bn2raw(r);
+
1466 auto rs = helper::bn2raw(s);
+
1467#endif
+
1468 if (rr.size() > signature_length / 2 || rs.size() > signature_length / 2)
+
1469 throw std::logic_error("bignum size exceeded expected length");
+
1470 rr.insert(0, signature_length / 2 - rr.size(), '\0');
+
1471 rs.insert(0, signature_length / 2 - rs.size(), '\0');
+
1472 return rr + rs;
+
1473 }
+
1474
+
1475 std::string p1363_to_der_signature(const std::string& signature, std::error_code& ec) const {
+
1476 ec.clear();
+
1477 auto r = helper::raw2bn(signature.substr(0, signature.size() / 2), ec);
+
1478 if (ec) return {};
+
1479 auto s = helper::raw2bn(signature.substr(signature.size() / 2), ec);
+
1480 if (ec) return {};
+
1481
+
1482 ECDSA_SIG* psig;
+
1483#ifdef JWT_OPENSSL_1_0_0
+
1484 ECDSA_SIG sig;
+
1485 sig.r = r.get();
+
1486 sig.s = s.get();
+
1487 psig = &sig;
+
1488#else
+
1489 std::unique_ptr<ECDSA_SIG, decltype(&ECDSA_SIG_free)> sig(ECDSA_SIG_new(), ECDSA_SIG_free);
+
1490 if (!sig) {
+
1491 ec = error::signature_verification_error::create_context_failed;
+
1492 return {};
+
1493 }
+
1494 ECDSA_SIG_set0(sig.get(), r.release(), s.release());
+
1495 psig = sig.get();
+
1496#endif
+
1497
+
1498 int length = i2d_ECDSA_SIG(psig, nullptr);
+
1499 if (length < 0) {
+
1500 ec = error::signature_verification_error::signature_encoding_failed;
+
1501 return {};
+
1502 }
+
1503 std::string der_signature(length, '\0');
+
1504 unsigned char* psbuffer = (unsigned char*)der_signature.data();
+
1505 length = i2d_ECDSA_SIG(psig, &psbuffer);
+
1506 if (length < 0) {
+
1507 ec = error::signature_verification_error::signature_encoding_failed;
+
1508 return {};
+
1509 }
+
1510 der_signature.resize(length);
+
1511 return der_signature;
+
1512 }
+
1513
+
1515 helper::evp_pkey_handle pkey;
+
1517 const EVP_MD* (*md)();
+
1519 const std::string alg_name;
+
1521 const size_t signature_length;
+
1522 };
+
+
1523
+
1524#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
1533 struct eddsa {
+
+
1544 eddsa(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1545 const std::string& private_key_password, std::string name)
+
1546 : alg_name(std::move(name)) {
+
1547 if (!private_key.empty()) {
+
1548 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1549 } else if (!public_key.empty()) {
+
1550 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1551 } else
+
1552 throw error::ecdsa_exception(error::ecdsa_error::load_key_bio_read);
+
1553 }
+
+
+
1560 std::string sign(const std::string& data, std::error_code& ec) const {
+
1561 ec.clear();
+
1562 auto ctx = helper::make_evp_md_ctx();
+
1563 if (!ctx) {
+
1564 ec = error::signature_generation_error::create_context_failed;
+
1565 return {};
+
1566 }
+
1567 if (!EVP_DigestSignInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1568 ec = error::signature_generation_error::signinit_failed;
+
1569 return {};
+
1570 }
+
1571
+
1572 size_t len = EVP_PKEY_size(pkey.get());
+
1573 std::string res(len, '\0');
+
1574
+
1575// LibreSSL is the special kid in the block, as it does not support EVP_DigestSign.
+
1576// OpenSSL on the otherhand does not support using EVP_DigestSignUpdate for eddsa, which is why we end up with this
+
1577// mess.
+
1578#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1579 ERR_clear_error();
+
1580 if (EVP_DigestSignUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()), data.size()) !=
+
1581 1) {
+
1582 std::cout << ERR_error_string(ERR_get_error(), NULL) << std::endl;
+
1583 ec = error::signature_generation_error::signupdate_failed;
+
1584 return {};
+
1585 }
+
1586 if (EVP_DigestSignFinal(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len) != 1) {
+
1587 ec = error::signature_generation_error::signfinal_failed;
+
1588 return {};
+
1589 }
+
1590#else
+
1591 if (EVP_DigestSign(ctx.get(), reinterpret_cast<unsigned char*>(&res[0]), &len,
+
1592 reinterpret_cast<const unsigned char*>(data.data()), data.size()) != 1) {
+
1593 ec = error::signature_generation_error::signfinal_failed;
+
1594 return {};
+
1595 }
+
1596#endif
+
1597
+
1598 res.resize(len);
+
1599 return res;
+
1600 }
+
+
1601
+
+
1608 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1609 ec.clear();
+
1610 auto ctx = helper::make_evp_md_ctx();
+
1611 if (!ctx) {
+
1612 ec = error::signature_verification_error::create_context_failed;
+
1613 return;
+
1614 }
+
1615 if (!EVP_DigestVerifyInit(ctx.get(), nullptr, nullptr, nullptr, pkey.get())) {
+
1616 ec = error::signature_verification_error::verifyinit_failed;
+
1617 return;
+
1618 }
+
1619// LibreSSL is the special kid in the block, as it does not support EVP_DigestVerify.
+
1620// OpenSSL on the otherhand does not support using EVP_DigestVerifyUpdate for eddsa, which is why we end up with this
+
1621// mess.
+
1622#if defined(LIBRESSL_VERSION_NUMBER) || defined(LIBWOLFSSL_VERSION_HEX)
+
1623 if (EVP_DigestVerifyUpdate(ctx.get(), reinterpret_cast<const unsigned char*>(data.data()),
+
1624 data.size()) != 1) {
+
1625 ec = error::signature_verification_error::verifyupdate_failed;
+
1626 return;
+
1627 }
+
1628 if (EVP_DigestVerifyFinal(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1629 signature.size()) != 1) {
+
1630 ec = error::signature_verification_error::verifyfinal_failed;
+
1631 return;
+
1632 }
+
1633#else
+
1634 auto res = EVP_DigestVerify(ctx.get(), reinterpret_cast<const unsigned char*>(signature.data()),
+
1635 signature.size(), reinterpret_cast<const unsigned char*>(data.data()),
+
1636 data.size());
+
1637 if (res != 1) {
+
1638 ec = error::signature_verification_error::verifyfinal_failed;
+
1639 return;
+
1640 }
+
1641#endif
+
1642 }
+
+
1647 std::string name() const { return alg_name; }
+
1648
+
1649 private:
+ +
1653 const std::string alg_name;
+
1654 };
+
+
1655#endif
+
+
1659 struct pss {
+
+
1669 pss(const std::string& public_key, const std::string& private_key, const std::string& public_key_password,
+
1670 const std::string& private_key_password, const EVP_MD* (*md)(), std::string name)
+
1671 : md(md), alg_name(std::move(name)) {
+
1672 if (!private_key.empty()) {
+
1673 pkey = helper::load_private_key_from_string(private_key, private_key_password);
+
1674 } else if (!public_key.empty()) {
+
1675 pkey = helper::load_public_key_from_string(public_key, public_key_password);
+
1676 } else
+
1677 throw error::rsa_exception(error::rsa_error::no_key_provided);
+
1678 }
+
+
1679
+
+
1686 std::string sign(const std::string& data, std::error_code& ec) const {
+
1687 ec.clear();
+
1688 auto md_ctx = helper::make_evp_md_ctx();
+
1689 if (!md_ctx) {
+
1690 ec = error::signature_generation_error::create_context_failed;
+
1691 return {};
+
1692 }
+
1693 EVP_PKEY_CTX* ctx = nullptr;
+
1694 if (EVP_DigestSignInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1695 ec = error::signature_generation_error::signinit_failed;
+
1696 return {};
+
1697 }
+
1698 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1699 ec = error::signature_generation_error::rsa_padding_failed;
+
1700 return {};
+
1701 }
+
1702// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1703// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1704#ifndef LIBWOLFSSL_VERSION_HEX
+
1705 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1706 ec = error::signature_generation_error::set_rsa_pss_saltlen_failed;
+
1707 return {};
+
1708 }
+
1709#endif
+
1710 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1711 ec = error::signature_generation_error::digestupdate_failed;
+
1712 return {};
+
1713 }
+
1714
+
1715 size_t size = EVP_PKEY_size(pkey.get());
+
1716 std::string res(size, 0x00);
+
1717 if (EVP_DigestSignFinal(
+
1718 md_ctx.get(),
+
1719 (unsigned char*)res.data(), // NOLINT(google-readability-casting) requires `const_cast`
+
1720 &size) <= 0) {
+
1721 ec = error::signature_generation_error::signfinal_failed;
+
1722 return {};
+
1723 }
+
1724
+
1725 return res;
+
1726 }
+
+
1727
+
+
1734 void verify(const std::string& data, const std::string& signature, std::error_code& ec) const {
+
1735 ec.clear();
+
1736
+
1737 auto md_ctx = helper::make_evp_md_ctx();
+
1738 if (!md_ctx) {
+
1739 ec = error::signature_verification_error::create_context_failed;
+
1740 return;
+
1741 }
+
1742 EVP_PKEY_CTX* ctx = nullptr;
+
1743 if (EVP_DigestVerifyInit(md_ctx.get(), &ctx, md(), nullptr, pkey.get()) != 1) {
+
1744 ec = error::signature_verification_error::verifyinit_failed;
+
1745 return;
+
1746 }
+
1747 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) {
+
1748 ec = error::signature_generation_error::rsa_padding_failed;
+
1749 return;
+
1750 }
+
1751// wolfSSL does not require EVP_PKEY_CTX_set_rsa_pss_saltlen. The default behavior
+
1752// sets the salt length to the hash length. Unlike OpenSSL which exposes this functionality.
+
1753#ifndef LIBWOLFSSL_VERSION_HEX
+
1754 if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -1) <= 0) {
+
1755 ec = error::signature_verification_error::set_rsa_pss_saltlen_failed;
+
1756 return;
+
1757 }
+
1758#endif
+
1759 if (EVP_DigestUpdate(md_ctx.get(), data.data(), data.size()) != 1) {
+
1760 ec = error::signature_verification_error::verifyupdate_failed;
+
1761 return;
+
1762 }
+
1763
+
1764 if (EVP_DigestVerifyFinal(md_ctx.get(), (unsigned char*)signature.data(), signature.size()) <= 0) {
+
1765 ec = error::signature_verification_error::verifyfinal_failed;
+
1766 return;
+
1767 }
+
1768 }
+
+
1773 std::string name() const { return alg_name; }
+
1774
+
1775 private:
+ +
1779 const EVP_MD* (*md)();
+
1781 const std::string alg_name;
+
1782 };
+
+
1783
+
+
1787 struct hs256 : public hmacsha {
+
1792 explicit hs256(std::string key) : hmacsha(std::move(key), EVP_sha256, "HS256") {}
+
1793 };
+
+
+
1797 struct hs384 : public hmacsha {
+
1802 explicit hs384(std::string key) : hmacsha(std::move(key), EVP_sha384, "HS384") {}
+
1803 };
+
+
+
1807 struct hs512 : public hmacsha {
+
1812 explicit hs512(std::string key) : hmacsha(std::move(key), EVP_sha512, "HS512") {}
+
1813 };
+
+
+
1819 struct rs256 : public rsa {
+
+
1828 explicit rs256(const std::string& public_key, const std::string& private_key = "",
+
1829 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1830 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "RS256") {}
+
+
1831 };
+
+
+
1835 struct rs384 : public rsa {
+
+
1843 explicit rs384(const std::string& public_key, const std::string& private_key = "",
+
1844 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1845 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "RS384") {}
+
+
1846 };
+
+
+
1850 struct rs512 : public rsa {
+
+
1858 explicit rs512(const std::string& public_key, const std::string& private_key = "",
+
1859 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1860 : rsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "RS512") {}
+
+
1861 };
+
+
+
1865 struct es256 : public ecdsa {
+
+
1875 explicit es256(const std::string& public_key, const std::string& private_key = "",
+
1876 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1877 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256", 64) {}
+
+
1878 };
+
+
+
1882 struct es384 : public ecdsa {
+
+
1892 explicit es384(const std::string& public_key, const std::string& private_key = "",
+
1893 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1894 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "ES384", 96) {}
+
+
1895 };
+
+
+
1899 struct es512 : public ecdsa {
+
+
1909 explicit es512(const std::string& public_key, const std::string& private_key = "",
+
1910 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1911 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "ES512", 132) {}
+
+
1912 };
+
+
+
1916 struct es256k : public ecdsa {
+
+
1925 explicit es256k(const std::string& public_key, const std::string& private_key = "",
+
1926 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1927 : ecdsa(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "ES256K", 64) {}
+
+
1928 };
+
+
1929
+
1930#if !defined(JWT_OPENSSL_1_0_0) && !defined(JWT_OPENSSL_1_1_0)
+
+
1938 struct ed25519 : public eddsa {
+
+
1948 explicit ed25519(const std::string& public_key, const std::string& private_key = "",
+
1949 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1950 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
1951 };
+
+
1952
+
+
1960 struct ed448 : public eddsa {
+
+
1970 explicit ed448(const std::string& public_key, const std::string& private_key = "",
+
1971 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1972 : eddsa(public_key, private_key, public_key_password, private_key_password, "EdDSA") {}
+
+
1973 };
+
+
1974#endif
+
1975
+
+
1979 struct ps256 : public pss {
+
+
1987 explicit ps256(const std::string& public_key, const std::string& private_key = "",
+
1988 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
1989 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha256, "PS256") {}
+
+
1990 };
+
+
+
1994 struct ps384 : public pss {
+
+
2002 explicit ps384(const std::string& public_key, const std::string& private_key = "",
+
2003 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2004 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha384, "PS384") {}
+
+
2005 };
+
+
+
2009 struct ps512 : public pss {
+
+
2017 explicit ps512(const std::string& public_key, const std::string& private_key = "",
+
2018 const std::string& public_key_password = "", const std::string& private_key_password = "")
+
2019 : pss(public_key, private_key, public_key_password, private_key_password, EVP_sha512, "PS512") {}
+
+
2020 };
+
+
2021 } // namespace algorithm
+
+
2022
+
+
2026 namespace json {
+
2034 enum class type { boolean, integer, number, string, array, object };
+
2035 } // namespace json
+
+
2036
+
2037 namespace details {
+
2038#ifdef __cpp_lib_void_t
+
2039 template<typename... Ts>
+
2040 using void_t = std::void_t<Ts...>;
+
2041#else
+
2042 // https://en.cppreference.com/w/cpp/types/void_t
+
2043 template<typename... Ts>
+
2044 struct make_void {
+
2045 using type = void;
+
2046 };
+
2047
+
2048 template<typename... Ts>
+
2049 using void_t = typename make_void<Ts...>::type;
+
2050#endif
+
2051
+
2052#ifdef __cpp_lib_experimental_detect
+
2053 template<template<typename...> class _Op, typename... _Args>
+
2054 using is_detected = std::experimental::is_detected<_Op, _Args...>;
+
2055#else
+
2056 struct nonesuch {
+
2057 nonesuch() = delete;
+
2058 ~nonesuch() = delete;
+
2059 nonesuch(nonesuch const&) = delete;
+
2060 nonesuch(nonesuch const&&) = delete;
+
2061 void operator=(nonesuch const&) = delete;
+
2062 void operator=(nonesuch&&) = delete;
+
2063 };
+
2064
+
2065 // https://en.cppreference.com/w/cpp/experimental/is_detected
+
2066 template<class Default, class AlwaysVoid, template<class...> class Op, class... Args>
+
2067 struct detector {
+
2068 using value = std::false_type;
+
2069 using type = Default;
+
2070 };
+
2071
+
2072 template<class Default, template<class...> class Op, class... Args>
+
2073 struct detector<Default, void_t<Op<Args...>>, Op, Args...> {
+
2074 using value = std::true_type;
+
2075 using type = Op<Args...>;
+
2076 };
+
2077
+
2078 template<template<class...> class Op, class... Args>
+
2079 using is_detected = typename detector<nonesuch, void, Op, Args...>::value;
+
2080#endif
+
2081
+
2082 template<typename T, typename Signature>
+
2083 using is_signature = typename std::is_same<T, Signature>;
+
2084
+
2085 template<typename traits_type, template<typename...> class Op, typename Signature>
+
2086 struct is_function_signature_detected {
+
2087 using type = Op<traits_type>;
+
2088 static constexpr auto value = is_detected<Op, traits_type>::value && std::is_function<type>::value &&
+
2089 is_signature<type, Signature>::value;
+
2090 };
+
2091
+
2092 template<typename traits_type, typename value_type>
+
2093 struct supports_get_type {
+
2094 template<typename T>
+
2095 using get_type_t = decltype(T::get_type);
+
2096
+
2097 static constexpr auto value =
+
2098 is_function_signature_detected<traits_type, get_type_t, json::type(const value_type&)>::value;
+
2099
+
2100 // Internal assertions for better feedback
+
2101 static_assert(value, "traits implementation must provide `jwt::json::type get_type(const value_type&)`");
+
2102 };
+
2103
+
2104#define JWT_CPP_JSON_TYPE_TYPE(TYPE) json_##TYPE_type
+
2105#define JWT_CPP_AS_TYPE_T(TYPE) as_##TYPE_t
+
2106#define JWT_CPP_SUPPORTS_AS(TYPE) \
+
2107 template<typename traits_type, typename value_type, typename JWT_CPP_JSON_TYPE_TYPE(TYPE)> \
+
2108 struct supports_as_##TYPE { \
+
2109 template<typename T> \
+
2110 using JWT_CPP_AS_TYPE_T(TYPE) = decltype(T::as_##TYPE); \
+
2111 \
+
2112 static constexpr auto value = \
+
2113 is_function_signature_detected<traits_type, JWT_CPP_AS_TYPE_T(TYPE), \
+
2114 JWT_CPP_JSON_TYPE_TYPE(TYPE)(const value_type&)>::value; \
+
2115 \
+
2116 static_assert(value, "traits implementation must provide `" #TYPE "_type as_" #TYPE "(const value_type&)`"); \
+
2117 }
+
2118
+
2119 JWT_CPP_SUPPORTS_AS(object);
+
2120 JWT_CPP_SUPPORTS_AS(array);
+
2121 JWT_CPP_SUPPORTS_AS(string);
+
2122 JWT_CPP_SUPPORTS_AS(number);
+
2123 JWT_CPP_SUPPORTS_AS(integer);
+
2124 JWT_CPP_SUPPORTS_AS(boolean);
+
2125
+
2126#undef JWT_CPP_JSON_TYPE_TYPE
+
2127#undef JWT_CPP_AS_TYPE_T
+
2128#undef JWT_CPP_SUPPORTS_AS
+
2129
+
2130 template<typename traits>
+
2131 struct is_valid_traits {
+
2132 static constexpr auto value =
+
2133 supports_get_type<traits, typename traits::value_type>::value &&
+
2134 supports_as_object<traits, typename traits::value_type, typename traits::object_type>::value &&
+
2135 supports_as_array<traits, typename traits::value_type, typename traits::array_type>::value &&
+
2136 supports_as_string<traits, typename traits::value_type, typename traits::string_type>::value &&
+
2137 supports_as_number<traits, typename traits::value_type, typename traits::number_type>::value &&
+
2138 supports_as_integer<traits, typename traits::value_type, typename traits::integer_type>::value &&
+
2139 supports_as_boolean<traits, typename traits::value_type, typename traits::boolean_type>::value;
+
2140 };
+
2141
+
2142 template<typename value_type>
+
2143 struct is_valid_json_value {
+
2144 static constexpr auto value =
+
2145 std::is_default_constructible<value_type>::value &&
+
2146 std::is_constructible<value_type, const value_type&>::value && // a more generic is_copy_constructible
+
2147 std::is_move_constructible<value_type>::value && std::is_assignable<value_type, value_type>::value &&
+
2148 std::is_copy_assignable<value_type>::value && std::is_move_assignable<value_type>::value;
+
2149 // TODO(prince-chrismc): Stream operators
+
2150 };
+
2151
+
2152 // https://stackoverflow.com/a/53967057/8480874
+
2153 template<typename T, typename = void>
+
2154 struct is_iterable : std::false_type {};
+
2155
+
2156 template<typename T>
+
2157 struct is_iterable<T, void_t<decltype(std::begin(std::declval<T>())), decltype(std::end(std::declval<T>())),
+
2158#if __cplusplus > 201402L
+
2159 decltype(std::cbegin(std::declval<T>())), decltype(std::cend(std::declval<T>()))
+
2160#else
+
2161 decltype(std::begin(std::declval<const T>())),
+
2162 decltype(std::end(std::declval<const T>()))
+
2163#endif
+
2164 >> : std::true_type {
+
2165 };
+
2166
+
2167#if __cplusplus > 201703L
+
2168 template<typename T>
+
2169 inline constexpr bool is_iterable_v = is_iterable<T>::value;
+
2170#endif
+
2171
+
2172 template<typename object_type, typename string_type>
+
2173 using is_count_signature = typename std::is_integral<decltype(std::declval<const object_type>().count(
+
2174 std::declval<const string_type>()))>;
+
2175
+
2176 template<typename object_type, typename string_type, typename = void>
+
2177 struct is_subcription_operator_signature : std::false_type {};
+
2178
+
2179 template<typename object_type, typename string_type>
+
2180 struct is_subcription_operator_signature<
+
2181 object_type, string_type,
+
2182 void_t<decltype(std::declval<object_type>().operator[](std::declval<string_type>()))>> : std::true_type {
+
2183 // TODO(prince-chrismc): I am not convienced this is meaningful anymore
+
2184 static_assert(
+
2185 value,
+
2186 "object_type must implementate the subscription operator '[]' taking string_type as an argument");
+
2187 };
+
2188
+
2189 template<typename object_type, typename value_type, typename string_type>
+
2190 using is_at_const_signature =
+
2191 typename std::is_same<decltype(std::declval<const object_type>().at(std::declval<const string_type>())),
+
2192 const value_type&>;
+
2193
+
2194 template<typename value_type, typename string_type, typename object_type>
+
2195 struct is_valid_json_object {
+
2196 template<typename T>
+
2197 using mapped_type_t = typename T::mapped_type;
+
2198 template<typename T>
+
2199 using key_type_t = typename T::key_type;
+
2200 template<typename T>
+
2201 using iterator_t = typename T::iterator;
+
2202 template<typename T>
+
2203 using const_iterator_t = typename T::const_iterator;
+
2204
+
2205 static constexpr auto value =
+
2206 std::is_constructible<value_type, object_type>::value &&
+
2207 is_detected<mapped_type_t, object_type>::value &&
+
2208 std::is_same<typename object_type::mapped_type, value_type>::value &&
+
2209 is_detected<key_type_t, object_type>::value &&
+
2210 (std::is_same<typename object_type::key_type, string_type>::value ||
+
2211 std::is_constructible<typename object_type::key_type, string_type>::value) &&
+
2212 is_detected<iterator_t, object_type>::value && is_detected<const_iterator_t, object_type>::value &&
+
2213 is_iterable<object_type>::value && is_count_signature<object_type, string_type>::value &&
+
2214 is_subcription_operator_signature<object_type, string_type>::value &&
+
2215 is_at_const_signature<object_type, value_type, string_type>::value;
+
2216 };
+
2217
+
2218 template<typename value_type, typename array_type>
+
2219 struct is_valid_json_array {
+
2220 template<typename T>
+
2221 using value_type_t = typename T::value_type;
+
2222
+
2223 static constexpr auto value = std::is_constructible<value_type, array_type>::value &&
+
2224 is_iterable<array_type>::value &&
+
2225 is_detected<value_type_t, array_type>::value &&
+
2226 std::is_same<typename array_type::value_type, value_type>::value;
+
2227 };
+
2228
+
2229 template<typename string_type, typename integer_type>
+
2230 using is_substr_start_end_index_signature =
+
2231 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>(),
+
2232 std::declval<integer_type>())),
+
2233 string_type>;
+
2234
+
2235 template<typename string_type, typename integer_type>
+
2236 using is_substr_start_index_signature =
+
2237 typename std::is_same<decltype(std::declval<string_type>().substr(std::declval<integer_type>())),
+
2238 string_type>;
+
2239
+
2240 template<typename string_type>
+
2241 using is_std_operate_plus_signature =
+
2242 typename std::is_same<decltype(std::operator+(std::declval<string_type>(), std::declval<string_type>())),
+
2243 string_type>;
+
2244
+
2245 template<typename value_type, typename string_type, typename integer_type>
+
2246 struct is_valid_json_string {
+
2247 static constexpr auto substr = is_substr_start_end_index_signature<string_type, integer_type>::value &&
+
2248 is_substr_start_index_signature<string_type, integer_type>::value;
+
2249 static_assert(substr, "string_type must have a substr method taking only a start index and an overload "
+
2250 "taking a start and end index, both must return a string_type");
+
2251
+
2252 static constexpr auto operator_plus = is_std_operate_plus_signature<string_type>::value;
+
2253 static_assert(operator_plus,
+
2254 "string_type must have a '+' operator implemented which returns the concatenated string");
+
2255
+
2256 static constexpr auto value =
+
2257 std::is_constructible<value_type, string_type>::value && substr && operator_plus;
+
2258 };
+
2259
+
2260 template<typename value_type, typename number_type>
+
2261 struct is_valid_json_number {
+
2262 static constexpr auto value =
+
2263 std::is_floating_point<number_type>::value && std::is_constructible<value_type, number_type>::value;
+
2264 };
+
2265
+
2266 template<typename value_type, typename integer_type>
+
2267 struct is_valid_json_integer {
+
2268 static constexpr auto value = std::is_signed<integer_type>::value &&
+
2269 !std::is_floating_point<integer_type>::value &&
+
2270 std::is_constructible<value_type, integer_type>::value;
+
2271 };
+
2272 template<typename value_type, typename boolean_type>
+
2273 struct is_valid_json_boolean {
+
2274 static constexpr auto value = std::is_convertible<boolean_type, bool>::value &&
+
2275 std::is_constructible<value_type, boolean_type>::value;
+
2276 };
+
2277
+
2278 template<typename value_type, typename object_type, typename array_type, typename string_type,
+
2279 typename number_type, typename integer_type, typename boolean_type>
+
2280 struct is_valid_json_types {
+
2281 // Internal assertions for better feedback
+
2282 static_assert(is_valid_json_value<value_type>::value,
+
2283 "value_type must meet basic requirements, default constructor, copyable, moveable");
+
2284 static_assert(is_valid_json_object<value_type, string_type, object_type>::value,
+
2285 "object_type must be a string_type to value_type container");
+
2286 static_assert(is_valid_json_array<value_type, array_type>::value,
+
2287 "array_type must be a container of value_type");
+
2288
+
2289 static constexpr auto value = is_valid_json_value<value_type>::value &&
+
2290 is_valid_json_object<value_type, string_type, object_type>::value &&
+
2291 is_valid_json_array<value_type, array_type>::value &&
+
2292 is_valid_json_string<value_type, string_type, integer_type>::value &&
+
2293 is_valid_json_number<value_type, number_type>::value &&
+
2294 is_valid_json_integer<value_type, integer_type>::value &&
+
2295 is_valid_json_boolean<value_type, boolean_type>::value;
+
2296 };
+
2297 } // namespace details
+
2298
+
2306 template<typename json_traits>
+
+ +
2314 static_assert(std::is_same<typename json_traits::string_type, std::string>::value ||
+
2315 std::is_convertible<typename json_traits::string_type, std::string>::value ||
+
2316 std::is_constructible<typename json_traits::string_type, std::string>::value,
+
2317 "string_type must be a std::string, convertible to a std::string, or construct a std::string.");
+
2318
+
2319 static_assert(
+
2320 details::is_valid_json_types<typename json_traits::value_type, typename json_traits::object_type,
+
2321 typename json_traits::array_type, typename json_traits::string_type,
+
2322 typename json_traits::number_type, typename json_traits::integer_type,
+
2323 typename json_traits::boolean_type>::value,
+
2324 "must satisfy json container requirements");
+
2325 static_assert(details::is_valid_traits<json_traits>::value, "traits must satisfy requirements");
+
2326
+
2327 typename json_traits::value_type val;
+
2328
+
2329 public:
+
2333 using set_t = std::set<typename json_traits::string_type>;
+
2334
+
2335 basic_claim() = default;
+
2336 basic_claim(const basic_claim&) = default;
+
2337 basic_claim(basic_claim&&) = default;
+
2338 basic_claim& operator=(const basic_claim&) = default;
+
2339 basic_claim& operator=(basic_claim&&) = default;
+
2340 ~basic_claim() = default;
+
2341
+
2342 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::string_type s) : val(std::move(s)) {}
+
2343 JWT_CLAIM_EXPLICIT basic_claim(const date& d)
+
2344 : val(typename json_traits::integer_type(std::chrono::system_clock::to_time_t(d))) {}
+
2345 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::array_type a) : val(std::move(a)) {}
+
2346 JWT_CLAIM_EXPLICIT basic_claim(typename json_traits::value_type v) : val(std::move(v)) {}
+
2347 JWT_CLAIM_EXPLICIT basic_claim(const set_t& s) : val(typename json_traits::array_type(s.begin(), s.end())) {}
+
2348 template<typename Iterator>
+
2349 basic_claim(Iterator begin, Iterator end) : val(typename json_traits::array_type(begin, end)) {}
+
2350
+
2355 typename json_traits::value_type to_json() const { return val; }
+
2356
+
2361 std::istream& operator>>(std::istream& is) { return is >> val; }
+
2362
+
2367 std::ostream& operator<<(std::ostream& os) { return os << val; }
+
2368
+
2374 json::type get_type() const { return json_traits::get_type(val); }
+
2375
+
2381 typename json_traits::string_type as_string() const { return json_traits::as_string(val); }
+
2382
+
+
2391 date as_date() const {
+
2392 using std::chrono::system_clock;
+
2393 if (get_type() == json::type::number) return system_clock::from_time_t(std::round(as_number()));
+
2394 return system_clock::from_time_t(as_integer());
+
2395 }
+
+
2396
+
2402 typename json_traits::array_type as_array() const { return json_traits::as_array(val); }
+
2403
+
+
2409 set_t as_set() const {
+
2410 set_t res;
+
2411 for (const auto& e : json_traits::as_array(val)) {
+
2412 res.insert(json_traits::as_string(e));
+
2413 }
+
2414 return res;
+
2415 }
+
+
2416
+
2422 typename json_traits::integer_type as_integer() const { return json_traits::as_integer(val); }
+
2423
+
2429 typename json_traits::boolean_type as_boolean() const { return json_traits::as_boolean(val); }
+
2430
+
2436 typename json_traits::number_type as_number() const { return json_traits::as_number(val); }
+
2437 };
+
+
2438
+
2439 namespace error {
+
+
2443 struct invalid_json_exception : public std::runtime_error {
+
2444 invalid_json_exception() : runtime_error("invalid json") {}
+
2445 };
+
+
+
2449 struct claim_not_present_exception : public std::out_of_range {
+
2450 claim_not_present_exception() : out_of_range("claim not found") {}
+
2451 };
+
+
2452 } // namespace error
+
2453
+
2454 namespace details {
+
2455 template<typename json_traits>
+
2456 struct map_of_claims {
+
2457 typename json_traits::object_type claims;
+
2458 using basic_claim_t = basic_claim<json_traits>;
+
2459 using iterator = typename json_traits::object_type::iterator;
+
2460 using const_iterator = typename json_traits::object_type::const_iterator;
+
2461
+
2462 map_of_claims() = default;
+
2463 map_of_claims(const map_of_claims&) = default;
+
2464 map_of_claims(map_of_claims&&) = default;
+
2465 map_of_claims& operator=(const map_of_claims&) = default;
+
2466 map_of_claims& operator=(map_of_claims&&) = default;
+
2467
+
2468 map_of_claims(typename json_traits::object_type json) : claims(std::move(json)) {}
+
2469
+
2470 iterator begin() { return claims.begin(); }
+
2471 iterator end() { return claims.end(); }
+
2472 const_iterator cbegin() const { return claims.begin(); }
+
2473 const_iterator cend() const { return claims.end(); }
+
2474 const_iterator begin() const { return claims.begin(); }
+
2475 const_iterator end() const { return claims.end(); }
+
2476
+
2485 static typename json_traits::object_type parse_claims(const typename json_traits::string_type& str) {
+
2486 typename json_traits::value_type val;
+
2487 if (!json_traits::parse(val, str)) throw error::invalid_json_exception();
+
2488
+
2489 return json_traits::as_object(val);
+
2490 };
+
2491
+
2496 bool has_claim(const typename json_traits::string_type& name) const noexcept {
+
2497 return claims.count(name) != 0;
+
2498 }
+
2499
+
2507 basic_claim_t get_claim(const typename json_traits::string_type& name) const {
+
2508 if (!has_claim(name)) throw error::claim_not_present_exception();
+
2509 return basic_claim_t{claims.at(name)};
+
2510 }
+
2511 };
+
2512 } // namespace details
+
2513
+
2518 template<typename json_traits>
+
+
2519 class payload {
+
2520 protected:
+
2521 details::map_of_claims<json_traits> payload_claims;
+
2522
+
2523 public:
+ +
2525
+
2530 bool has_issuer() const noexcept { return has_payload_claim("iss"); }
+
2535 bool has_subject() const noexcept { return has_payload_claim("sub"); }
+
2540 bool has_audience() const noexcept { return has_payload_claim("aud"); }
+
2545 bool has_expires_at() const noexcept { return has_payload_claim("exp"); }
+
2550 bool has_not_before() const noexcept { return has_payload_claim("nbf"); }
+
2555 bool has_issued_at() const noexcept { return has_payload_claim("iat"); }
+
2560 bool has_id() const noexcept { return has_payload_claim("jti"); }
+
2567 typename json_traits::string_type get_issuer() const { return get_payload_claim("iss").as_string(); }
+
2574 typename json_traits::string_type get_subject() const { return get_payload_claim("sub").as_string(); }
+
+ +
2582 auto aud = get_payload_claim("aud");
+
2583 if (aud.get_type() == json::type::string) return {aud.as_string()};
+
2584
+
2585 return aud.as_set();
+
2586 }
+
+
2593 date get_expires_at() const { return get_payload_claim("exp").as_date(); }
+
2600 date get_not_before() const { return get_payload_claim("nbf").as_date(); }
+
2607 date get_issued_at() const { return get_payload_claim("iat").as_date(); }
+
2614 typename json_traits::string_type get_id() const { return get_payload_claim("jti").as_string(); }
+
+
2619 bool has_payload_claim(const typename json_traits::string_type& name) const noexcept {
+
2620 return payload_claims.has_claim(name);
+
2621 }
+
+
+
2627 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
2628 return payload_claims.get_claim(name);
+
2629 }
+
+
2630 };
+
+
2631
+
2636 template<typename json_traits>
+
+
2637 class header {
+
2638 protected:
+
2639 details::map_of_claims<json_traits> header_claims;
+
2640
+
2641 public:
+ +
2647 bool has_algorithm() const noexcept { return has_header_claim("alg"); }
+
2652 bool has_type() const noexcept { return has_header_claim("typ"); }
+
2657 bool has_content_type() const noexcept { return has_header_claim("cty"); }
+
2662 bool has_key_id() const noexcept { return has_header_claim("kid"); }
+
2669 typename json_traits::string_type get_algorithm() const { return get_header_claim("alg").as_string(); }
+
2676 typename json_traits::string_type get_type() const { return get_header_claim("typ").as_string(); }
+
2683 typename json_traits::string_type get_content_type() const { return get_header_claim("cty").as_string(); }
+
2690 typename json_traits::string_type get_key_id() const { return get_header_claim("kid").as_string(); }
+
+
2695 bool has_header_claim(const typename json_traits::string_type& name) const noexcept {
+
2696 return header_claims.has_claim(name);
+
2697 }
+
+
+
2703 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
2704 return header_claims.get_claim(name);
+
2705 }
+
+
2706 };
+
+
2707
+
2711 template<typename json_traits>
+
+
2712 class decoded_jwt : public header<json_traits>, public payload<json_traits> {
+
2713 protected:
+
2715 typename json_traits::string_type token;
+
2717 typename json_traits::string_type header;
+
2719 typename json_traits::string_type header_base64;
+
2721 typename json_traits::string_type payload;
+
2723 typename json_traits::string_type payload_base64;
+
2725 typename json_traits::string_type signature;
+
2727 typename json_traits::string_type signature_base64;
+
2728
+
2729 public:
+ +
2731#ifndef JWT_DISABLE_BASE64
+
+
2741 JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type& token)
+
2742 : decoded_jwt(token, [](const typename json_traits::string_type& str) {
+
2743 return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(str));
+
2744 }) {}
+
+
2745#endif
+
2757 template<typename Decode>
+
+
2758 decoded_jwt(const typename json_traits::string_type& token, Decode decode) : token(token) {
+
2759 auto hdr_end = token.find('.');
+
2760 if (hdr_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
2761 auto payload_end = token.find('.', hdr_end + 1);
+
2762 if (payload_end == json_traits::string_type::npos) throw std::invalid_argument("invalid token supplied");
+
2763 header_base64 = token.substr(0, hdr_end);
+
2764 payload_base64 = token.substr(hdr_end + 1, payload_end - hdr_end - 1);
+
2765 signature_base64 = token.substr(payload_end + 1);
+
2766
+ + + +
2770
+
2771 this->header_claims = details::map_of_claims<json_traits>::parse_claims(header);
+
2772 this->payload_claims = details::map_of_claims<json_traits>::parse_claims(payload);
+
2773 }
+
+
2774
+
2779 const typename json_traits::string_type& get_token() const noexcept { return token; }
+
2784 const typename json_traits::string_type& get_header() const noexcept { return header; }
+
2789 const typename json_traits::string_type& get_payload() const noexcept { return payload; }
+
2794 const typename json_traits::string_type& get_signature() const noexcept { return signature; }
+
2799 const typename json_traits::string_type& get_header_base64() const noexcept { return header_base64; }
+
2804 const typename json_traits::string_type& get_payload_base64() const noexcept { return payload_base64; }
+
2809 const typename json_traits::string_type& get_signature_base64() const noexcept { return signature_base64; }
+
2814 typename json_traits::object_type get_payload_json() const { return this->payload_claims.claims; }
+
2819 typename json_traits::object_type get_header_json() const { return this->header_claims.claims; }
+
+
2827 basic_claim_t get_payload_claim(const typename json_traits::string_type& name) const {
+
2828 return this->payload_claims.get_claim(name);
+
2829 }
+
+
+
2837 basic_claim_t get_header_claim(const typename json_traits::string_type& name) const {
+
2838 return this->header_claims.get_claim(name);
+
2839 }
+
+
2840 };
+
+
2841
+
2846 template<typename Clock, typename json_traits>
+
+
2847 class builder {
+
2848 typename json_traits::object_type header_claims;
+
2849 typename json_traits::object_type payload_claims;
+
2850
+
2852 Clock clock;
+
2853
+
2854 public:
+
2859 JWT_CLAIM_EXPLICIT builder(Clock c) : clock(c) {}
+
+
2866 builder& set_header_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
2867 header_claims[id] = std::move(c);
+
2868 return *this;
+
2869 }
+
+
2870
+
+
2877 builder& set_header_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
2878 header_claims[id] = c.to_json();
+
2879 return *this;
+
2880 }
+
+
+
2887 builder& set_payload_claim(const typename json_traits::string_type& id, typename json_traits::value_type c) {
+
2888 payload_claims[id] = std::move(c);
+
2889 return *this;
+
2890 }
+
+
+
2897 builder& set_payload_claim(const typename json_traits::string_type& id, basic_claim<json_traits> c) {
+
2898 payload_claims[id] = c.to_json();
+
2899 return *this;
+
2900 }
+
+
+
2908 builder& set_algorithm(typename json_traits::string_type str) {
+
2909 return set_header_claim("alg", typename json_traits::value_type(str));
+
2910 }
+
+
+
2916 builder& set_type(typename json_traits::string_type str) {
+
2917 return set_header_claim("typ", typename json_traits::value_type(str));
+
2918 }
+
+
+
2924 builder& set_content_type(typename json_traits::string_type str) {
+
2925 return set_header_claim("cty", typename json_traits::value_type(str));
+
2926 }
+
+
+
2933 builder& set_key_id(typename json_traits::string_type str) {
+
2934 return set_header_claim("kid", typename json_traits::value_type(str));
+
2935 }
+
+
+
2941 builder& set_issuer(typename json_traits::string_type str) {
+
2942 return set_payload_claim("iss", typename json_traits::value_type(str));
+
2943 }
+
+
+
2949 builder& set_subject(typename json_traits::string_type str) {
+
2950 return set_payload_claim("sub", typename json_traits::value_type(str));
+
2951 }
+
+
+
2957 builder& set_audience(typename json_traits::array_type a) {
+
2958 return set_payload_claim("aud", typename json_traits::value_type(a));
+
2959 }
+
+
+
2965 builder& set_audience(typename json_traits::string_type aud) {
+
2966 return set_payload_claim("aud", typename json_traits::value_type(aud));
+
2967 }
+
+ +
2979 template<class Rep>
+
+
2980 builder& set_expires_in(const std::chrono::duration<Rep>& d) {
+
2981 return set_payload_claim("exp", basic_claim<json_traits>(clock.now() + d));
+
2982 }
+
+ + +
2999 builder& set_issued_now() { return set_issued_at(clock.now()); }
+
+
3005 builder& set_id(const typename json_traits::string_type& str) {
+
3006 return set_payload_claim("jti", typename json_traits::value_type(str));
+
3007 }
+
+
3008
+
3020 template<typename Algo, typename Encode>
+
+
3021 typename json_traits::string_type sign(const Algo& algo, Encode encode) const {
+
3022 std::error_code ec;
+
3023 auto res = sign(algo, encode, ec);
+ +
3025 return res;
+
3026 }
+
+
3027#ifndef JWT_DISABLE_BASE64
+
3036 template<typename Algo>
+
+
3037 typename json_traits::string_type sign(const Algo& algo) const {
+
3038 std::error_code ec;
+
3039 auto res = sign(algo, ec);
+ +
3041 return res;
+
3042 }
+
+
3043#endif
+
3044
+
3057 template<typename Algo, typename Encode>
+
+
3058 typename json_traits::string_type sign(const Algo& algo, Encode encode, std::error_code& ec) const {
+
3059 // make a copy such that a builder can be re-used
+
3060 typename json_traits::object_type obj_header = header_claims;
+
3061 if (header_claims.count("alg") == 0) obj_header["alg"] = typename json_traits::value_type(algo.name());
+
3062
+
3063 const auto header = encode(json_traits::serialize(typename json_traits::value_type(obj_header)));
+
3064 const auto payload = encode(json_traits::serialize(typename json_traits::value_type(payload_claims)));
+
3065 const auto token = header + "." + payload;
+
3066
+
3067 auto signature = algo.sign(token, ec);
+
3068 if (ec) return {};
+
3069
+
3070 return token + "." + encode(signature);
+
3071 }
+
+
3072#ifndef JWT_DISABLE_BASE64
+
3082 template<typename Algo>
+
+
3083 typename json_traits::string_type sign(const Algo& algo, std::error_code& ec) const {
+
3084 return sign(
+
3085 algo,
+
3086 [](const typename json_traits::string_type& data) {
+
3087 return base::trim<alphabet::base64url>(base::encode<alphabet::base64url>(data));
+
3088 },
+
3089 ec);
+
3090 }
+
+
3091#endif
+
3092 };
+
+
3093
+
3094 namespace verify_ops {
+
3098 template<typename json_traits>
+
+ +
3100 verify_context(date ctime, const decoded_jwt<json_traits>& j, size_t l)
+
3101 : current_time(ctime), jwt(j), default_leeway(l) {}
+ + + +
3108
+
3110 typename json_traits::string_type claim_key{};
+
3111
+
+
3118 basic_claim<json_traits> get_claim(bool in_header, std::error_code& ec) const {
+
3119 if (in_header) {
+
3120 if (!jwt.has_header_claim(claim_key)) {
+
3121 ec = error::token_verification_error::missing_claim;
+
3122 return {};
+
3123 }
+
3124 return jwt.get_header_claim(claim_key);
+
3125 } else {
+
3126 if (!jwt.has_payload_claim(claim_key)) {
+
3127 ec = error::token_verification_error::missing_claim;
+
3128 return {};
+
3129 }
+
3130 return jwt.get_payload_claim(claim_key);
+
3131 }
+
3132 }
+
+
+
3140 basic_claim<json_traits> get_claim(bool in_header, json::type t, std::error_code& ec) const {
+
3141 auto c = get_claim(in_header, ec);
+
3142 if (ec) return {};
+
3143 if (c.get_type() != t) {
+
3144 ec = error::token_verification_error::claim_type_missmatch;
+
3145 return {};
+
3146 }
+
3147 return c;
+
3148 }
+
+
3154 basic_claim<json_traits> get_claim(std::error_code& ec) const { return get_claim(false, ec); }
+
+
3161 basic_claim<json_traits> get_claim(json::type t, std::error_code& ec) const {
+
3162 return get_claim(false, t, ec);
+
3163 }
+
+
3164 };
+
+
3165
+
3169 template<typename json_traits, bool in_header = false>
+
+ +
3171 const basic_claim<json_traits> expected;
+
3172 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3173 auto jc = ctx.get_claim(in_header, expected.get_type(), ec);
+
3174 if (ec) return;
+
3175 const bool matches = [&]() {
+
3176 switch (expected.get_type()) {
+
3177 case json::type::boolean: return expected.as_boolean() == jc.as_boolean();
+
3178 case json::type::integer: return expected.as_integer() == jc.as_integer();
+
3179 case json::type::number: return expected.as_number() == jc.as_number();
+
3180 case json::type::string: return expected.as_string() == jc.as_string();
+
3181 case json::type::array:
+
3182 case json::type::object:
+
3183 return json_traits::serialize(expected.to_json()) == json_traits::serialize(jc.to_json());
+
3184 default: throw std::logic_error("internal error, should be unreachable");
+
3185 }
+
3186 }();
+
3187 if (!matches) {
+
3188 ec = error::token_verification_error::claim_value_missmatch;
+
3189 return;
+
3190 }
+
3191 }
+
3192 };
+
+
3193
+
3198 template<typename json_traits, bool in_header = false>
+
+ +
3200 const size_t leeway;
+
3201 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3202 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3203 if (ec) return;
+
3204 auto c = jc.as_date();
+
3205 if (ctx.current_time > c + std::chrono::seconds(leeway)) {
+
3206 ec = error::token_verification_error::token_expired;
+
3207 }
+
3208 }
+
3209 };
+
+
3210
+
3215 template<typename json_traits, bool in_header = false>
+
+ +
3217 const size_t leeway;
+
3218 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3219 auto jc = ctx.get_claim(in_header, json::type::integer, ec);
+
3220 if (ec) return;
+
3221 auto c = jc.as_date();
+
3222 if (ctx.current_time < c - std::chrono::seconds(leeway)) {
+
3223 ec = error::token_verification_error::token_expired;
+
3224 }
+
3225 }
+
3226 };
+
+
3227
+
3233 template<typename json_traits, bool in_header = false>
+
+ +
3235 const typename basic_claim<json_traits>::set_t expected;
+
3236 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3237 auto c = ctx.get_claim(in_header, ec);
+
3238 if (ec) return;
+
3239 if (c.get_type() == json::type::string) {
+
3240 if (expected.size() != 1 || *expected.begin() != c.as_string()) {
+
3241 ec = error::token_verification_error::audience_missmatch;
+
3242 return;
+
3243 }
+
3244 } else if (c.get_type() == json::type::array) {
+
3245 auto jc = c.as_set();
+
3246 for (auto& e : expected) {
+
3247 if (jc.find(e) == jc.end()) {
+
3248 ec = error::token_verification_error::audience_missmatch;
+
3249 return;
+
3250 }
+
3251 }
+
3252 } else {
+
3253 ec = error::token_verification_error::claim_type_missmatch;
+
3254 return;
+
3255 }
+
3256 }
+
3257 };
+
+
3258
+
3262 template<typename json_traits, bool in_header = false>
+
+ +
3264 const typename json_traits::string_type expected;
+
3265 std::locale locale;
+
3266 insensitive_string_claim(const typename json_traits::string_type& e, std::locale loc)
+
3267 : expected(to_lower_unicode(e, loc)), locale(loc) {}
+
3268
+
3269 void operator()(const verify_context<json_traits>& ctx, std::error_code& ec) const {
+
3270 const auto c = ctx.get_claim(in_header, json::type::string, ec);
+
3271 if (ec) return;
+
3272 if (to_lower_unicode(c.as_string(), locale) != expected) {
+
3273 ec = error::token_verification_error::claim_value_missmatch;
+
3274 }
+
3275 }
+
3276
+
3277 static std::string to_lower_unicode(const std::string& str, const std::locale& loc) {
+
3278 std::mbstate_t state = std::mbstate_t();
+
3279 const char* in_next = str.data();
+
3280 const char* in_end = str.data() + str.size();
+
3281 std::wstring wide;
+
3282 wide.reserve(str.size());
+
3283
+
3284 while (in_next != in_end) {
+
3285 wchar_t wc;
+
3286 std::size_t result = std::mbrtowc(&wc, in_next, in_end - in_next, &state);
+
3287 if (result == static_cast<std::size_t>(-1)) {
+
3288 throw std::runtime_error("encoding error: " + std::string(std::strerror(errno)));
+
3289 } else if (result == static_cast<std::size_t>(-2)) {
+
3290 throw std::runtime_error("conversion error: next bytes constitute an incomplete, but so far "
+
3291 "valid, multibyte character.");
+
3292 }
+
3293 in_next += result;
+
3294 wide.push_back(wc);
+
3295 }
+
3296
+
3297 auto& f = std::use_facet<std::ctype<wchar_t>>(loc);
+
3298 f.tolower(&wide[0], &wide[0] + wide.size());
+
3299
+
3300 std::string out;
+
3301 out.reserve(wide.size());
+
3302 for (wchar_t wc : wide) {
+
3303 char mb[MB_LEN_MAX];
+
3304 std::size_t n = std::wcrtomb(mb, wc, &state);
+
3305 if (n != static_cast<std::size_t>(-1)) out.append(mb, n);
+
3306 }
+
3307
+
3308 return out;
+
3309 }
+
3310 };
+
+
3311 } // namespace verify_ops
+
3312
+
3317 template<typename Clock, typename json_traits>
+
+
3318 class verifier {
+
3319 public:
+ + +
3331 std::function<void(const verify_ops::verify_context<json_traits>&, std::error_code& ec)>;
+
3332
+
3333 private:
+
3334 struct algo_base {
+
3335 virtual ~algo_base() = default;
+
3336 virtual void verify(const std::string& data, const std::string& sig, std::error_code& ec) = 0;
+
3337 };
+
3338 template<typename T>
+
3339 struct algo : public algo_base {
+
3340 T alg;
+
3341 explicit algo(T a) : alg(a) {}
+
3342 void verify(const std::string& data, const std::string& sig, std::error_code& ec) override {
+
3343 alg.verify(data, sig, ec);
+
3344 }
+
3345 };
+
3347 std::unordered_map<typename json_traits::string_type, verify_check_fn_t> claims;
+
3349 size_t default_leeway = 0;
+
3351 Clock clock;
+
3353 std::unordered_map<std::string, std::shared_ptr<algo_base>> algs;
+
3354
+
3355 public:
+
+
3360 explicit verifier(Clock c) : clock(c) {
+
3361 claims["exp"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3362 if (!ctx.jwt.has_expires_at()) return;
+
3363 auto exp = ctx.jwt.get_expires_at();
+
3364 if (ctx.current_time > exp + std::chrono::seconds(ctx.default_leeway)) {
+
3365 ec = error::token_verification_error::token_expired;
+
3366 }
+
3367 };
+
3368 claims["iat"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3369 if (!ctx.jwt.has_issued_at()) return;
+
3370 auto iat = ctx.jwt.get_issued_at();
+
3371 if (ctx.current_time < iat - std::chrono::seconds(ctx.default_leeway)) {
+
3372 ec = error::token_verification_error::token_expired;
+
3373 }
+
3374 };
+
3375 claims["nbf"] = [](const verify_ops::verify_context<json_traits>& ctx, std::error_code& ec) {
+
3376 if (!ctx.jwt.has_not_before()) return;
+
3377 auto nbf = ctx.jwt.get_not_before();
+
3378 if (ctx.current_time < nbf - std::chrono::seconds(ctx.default_leeway)) {
+
3379 ec = error::token_verification_error::token_expired;
+
3380 }
+
3381 };
+
3382 }
+
+
3383
+
+ +
3390 default_leeway = leeway;
+
3391 return *this;
+
3392 }
+
+
+ + +
3401 return *this;
+
3402 }
+
+
+ + +
3411 return *this;
+
3412 }
+
+
+ + +
3421 return *this;
+
3422 }
+
+
3423
+
+
3435 verifier& with_type(const typename json_traits::string_type& type, std::locale locale = std::locale{}) {
+
3436 return with_claim("typ", verify_ops::insensitive_string_claim<json_traits, true>{type, std::move(locale)});
+
3437 }
+
+
3438
+
+
3445 verifier& with_issuer(const typename json_traits::string_type& iss) {
+
3446 return with_claim("iss", basic_claim_t(iss));
+
3447 }
+
+
3448
+
+
3455 verifier& with_subject(const typename json_traits::string_type& sub) {
+
3456 return with_claim("sub", basic_claim_t(sub));
+
3457 }
+
+
+ +
3465 claims["aud"] = verify_ops::is_subset_claim<json_traits>{aud};
+
3466 return *this;
+
3467 }
+
+
+
3474 verifier& with_audience(const typename json_traits::string_type& aud) {
+
3475 typename basic_claim_t::set_t s;
+
3476 s.insert(aud);
+
3477 return with_audience(s);
+
3478 }
+
+
3485 verifier& with_id(const typename json_traits::string_type& id) { return with_claim("jti", basic_claim_t(id)); }
+
3486
+
+
3498 verifier& with_claim(const typename json_traits::string_type& name, verify_check_fn_t fn) {
+
3499 claims[name] = fn;
+
3500 return *this;
+
3501 }
+
+
3502
+
+
3513 verifier& with_claim(const typename json_traits::string_type& name, basic_claim_t c) {
+ +
3515 }
+
+
3516
+
3530 template<typename Algorithm>
+
+
3531 verifier& allow_algorithm(Algorithm alg) {
+
3532 algs[alg.name()] = std::make_shared<algo<Algorithm>>(alg);
+
3533 return *this;
+
3534 }
+
+
3535
+
+ +
3542 std::error_code ec;
+
3543 verify(jwt, ec);
+ +
3545 }
+
+
+
3551 void verify(const decoded_jwt<json_traits>& jwt, std::error_code& ec) const {
+
3552 ec.clear();
+
3553 const typename json_traits::string_type data = jwt.get_header_base64() + "." + jwt.get_payload_base64();
+
3554 const typename json_traits::string_type sig = jwt.get_signature();
+
3555 const std::string algo = jwt.get_algorithm();
+
3556 if (algs.count(algo) == 0) {
+
3557 ec = error::token_verification_error::wrong_algorithm;
+
3558 return;
+
3559 }
+
3560 algs.at(algo)->verify(data, sig, ec);
+
3561 if (ec) return;
+
3562
+
3563 verify_ops::verify_context<json_traits> ctx{clock.now(), jwt, default_leeway};
+
3564 for (auto& c : claims) {
+
3565 ctx.claim_key = c.first;
+
3566 c.second(ctx, ec);
+
3567 if (ec) return;
+
3568 }
+
3569 }
+
+
3570 };
+
+
3571
+
3580 template<typename json_traits>
+
+
3581 class jwk {
+ +
3583 const details::map_of_claims<json_traits> jwk_claims;
+
3584
+
3585 public:
+
3586 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::string_type& str)
+
3587 : jwk_claims(details::map_of_claims<json_traits>::parse_claims(str)) {}
+
3588
+
3589 JWT_CLAIM_EXPLICIT jwk(const typename json_traits::value_type& json)
+
3590 : jwk_claims(json_traits::as_object(json)) {}
+
3591
+
3600 typename json_traits::string_type get_key_type() const { return get_jwk_claim("kty").as_string(); }
+
3601
+
3608 typename json_traits::string_type get_use() const { return get_jwk_claim("use").as_string(); }
+
3609
+
3616 typename basic_claim_t::set_t get_key_operations() const { return get_jwk_claim("key_ops").as_set(); }
+
3617
+
3624 typename json_traits::string_type get_algorithm() const { return get_jwk_claim("alg").as_string(); }
+
3625
+
3632 typename json_traits::string_type get_key_id() const { return get_jwk_claim("kid").as_string(); }
+
3633
+
3644 typename json_traits::string_type get_curve() const { return get_jwk_claim("crv").as_string(); }
+
3645
+
3652 typename json_traits::array_type get_x5c() const { return get_jwk_claim("x5c").as_array(); };
+
3653
+
3660 typename json_traits::string_type get_x5u() const { return get_jwk_claim("x5u").as_string(); };
+
3661
+
3668 typename json_traits::string_type get_x5t() const { return get_jwk_claim("x5t").as_string(); };
+
3669
+
3676 typename json_traits::string_type get_x5t_sha256() const { return get_jwk_claim("x5t#S256").as_string(); };
+
3677
+
+
3684 typename json_traits::string_type get_x5c_key_value() const {
+
3685 auto x5c_array = get_jwk_claim("x5c").as_array();
+
3686 if (x5c_array.size() == 0) throw error::claim_not_present_exception();
+
3687
+
3688 return json_traits::as_string(x5c_array.front());
+
3689 };
+
+
3690
+
3695 bool has_key_type() const noexcept { return has_jwk_claim("kty"); }
+
3696
+
3701 bool has_use() const noexcept { return has_jwk_claim("use"); }
+
3702
+
3707 bool has_key_operations() const noexcept { return has_jwk_claim("key_ops"); }
+
3708
+
3713 bool has_algorithm() const noexcept { return has_jwk_claim("alg"); }
+
3714
+
3719 bool has_curve() const noexcept { return has_jwk_claim("crv"); }
+
3720
+
3725 bool has_key_id() const noexcept { return has_jwk_claim("kid"); }
+
3726
+
3731 bool has_x5u() const noexcept { return has_jwk_claim("x5u"); }
+
3732
+
3737 bool has_x5c() const noexcept { return has_jwk_claim("x5c"); }
+
3738
+
3743 bool has_x5t() const noexcept { return has_jwk_claim("x5t"); }
+
3744
+
3749 bool has_x5t_sha256() const noexcept { return has_jwk_claim("x5t#S256"); }
+
3750
+
+
3755 bool has_jwk_claim(const typename json_traits::string_type& name) const noexcept {
+
3756 return jwk_claims.has_claim(name);
+
3757 }
+
+
3758
+
+
3764 basic_claim_t get_jwk_claim(const typename json_traits::string_type& name) const {
+
3765 return jwk_claims.get_claim(name);
+
3766 }
+
+
3767
+
3772 bool empty() const noexcept { return jwk_claims.empty(); }
+
3773
+
3778 typename json_traits::object_type get_claims() const { return this->jwk_claims.claims; }
+
3779 };
+
+
3780
+
3791 template<typename json_traits>
+
+
3792 class jwks {
+
3793 public:
+ +
3797 using jwks_vector_t = std::vector<jwks_t>;
+
3798 using iterator = typename jwks_vector_t::iterator;
+
3799 using const_iterator = typename jwks_vector_t::const_iterator;
+
3800
+
3804 jwks() = default;
+
3805
+
+
3812 JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type& str) {
+
3813 typename json_traits::value_type parsed_val;
+
3814 if (!json_traits::parse(parsed_val, str)) throw error::invalid_json_exception();
+
3815
+
3816 const details::map_of_claims<json_traits> jwks_json = json_traits::as_object(parsed_val);
+
3817 if (!jwks_json.has_claim("keys")) throw error::invalid_json_exception();
+
3818
+
3819 auto jwk_list = jwks_json.get_claim("keys").as_array();
+
3820 std::transform(jwk_list.begin(), jwk_list.end(), std::back_inserter(jwk_claims),
+
3821 [](const typename json_traits::value_type& val) { return jwks_t{val}; });
+
3822 }
+
+
3823
+
3824 iterator begin() { return jwk_claims.begin(); }
+
3825 iterator end() { return jwk_claims.end(); }
+
3826 const_iterator cbegin() const { return jwk_claims.begin(); }
+
3827 const_iterator cend() const { return jwk_claims.end(); }
+
3828 const_iterator begin() const { return jwk_claims.begin(); }
+
3829 const_iterator end() const { return jwk_claims.end(); }
+
3830
+
+
3835 bool has_jwk(const typename json_traits::string_type& key_id) const noexcept {
+
3836 return find_by_kid(key_id) != end();
+
3837 }
+
+
3838
+
+
3844 jwks_t get_jwk(const typename json_traits::string_type& key_id) const {
+
3845 const auto maybe = find_by_kid(key_id);
+
3846 if (maybe == end()) throw error::claim_not_present_exception();
+
3847 return *maybe;
+
3848 }
+
+
3849
+
3850 private:
+
3851 jwks_vector_t jwk_claims;
+
3852
+
3853 const_iterator find_by_kid(const typename json_traits::string_type& key_id) const noexcept {
+
3854 return std::find_if(cbegin(), cend(), [key_id](const jwks_t& jwk) {
+
3855 if (!jwk.has_key_id()) { return false; }
+
3856 return jwk.get_key_id() == key_id;
+
3857 });
+
3858 }
+
3859 };
+
+
3860
+
3866 template<typename Clock, typename json_traits>
+
+ + +
3869 }
+
+
3870
+
3876 template<typename Clock, typename json_traits>
+
+ + +
3879 }
+
+
3880
+
+ +
3889 date now() const { return date::clock::now(); }
+
3890 };
+
+
3891
+
3900 template<typename json_traits>
+
+ +
3902 return verifier<default_clock, json_traits>(c);
+
3903 }
+
+
3904
+
3908 template<typename json_traits>
+
+ +
3910 return builder<default_clock, json_traits>(c);
+
3911 }
+
+
3912
+
3927 template<typename json_traits, typename Decode>
+
+
3928 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token, Decode decode) {
+
3929 return decoded_jwt<json_traits>(token, decode);
+
3930 }
+
+
3931
+
3942 template<typename json_traits>
+
+
3943 decoded_jwt<json_traits> decode(const typename json_traits::string_type& token) {
+
3944 return decoded_jwt<json_traits>(token);
+
3945 }
+
+
3952 template<typename json_traits>
+
+
3953 jwk<json_traits> parse_jwk(const typename json_traits::string_type& jwk_) {
+
3954 return jwk<json_traits>(jwk_);
+
3955 }
+
+
3966 template<typename json_traits>
+
+
3967 jwks<json_traits> parse_jwks(const typename json_traits::string_type& jwks_) {
+
3968 return jwks<json_traits>(jwks_);
+
3969 }
+
+
3970} // namespace jwt
+
3971
+
3972template<typename json_traits>
+
3973std::istream& operator>>(std::istream& is, jwt::basic_claim<json_traits>& c) {
+
3974 return c.operator>>(is);
+
3975}
+
3976
+
3977template<typename json_traits>
+
3978std::ostream& operator<<(std::ostream& os, const jwt::basic_claim<json_traits>& c) {
+
3979 return os << c.to_json();
+
3980}
+
3981
+
3982#ifndef JWT_DISABLE_PICOJSON
+
3983#include "traits/kazuho-picojson/defaults.h"
+
3984#endif
+
3985
+
3986#endif
+
a class to store a generic JSON value as claim
Definition jwt.h:2307
+
json_traits::number_type as_number() const
Definition jwt.h:2436
+
set_t as_set() const
Definition jwt.h:2409
+
json::type get_type() const
Definition jwt.h:2374
+
std::set< typename json_traits::string_type > set_t
Definition jwt.h:2333
+
std::istream & operator>>(std::istream &is)
Definition jwt.h:2361
+
json_traits::boolean_type as_boolean() const
Definition jwt.h:2429
+
date as_date() const
Get the contained JSON value as a date.
Definition jwt.h:2391
+
std::ostream & operator<<(std::ostream &os)
Definition jwt.h:2367
+
json_traits::integer_type as_integer() const
Definition jwt.h:2422
+
json_traits::value_type to_json() const
Definition jwt.h:2355
+
json_traits::array_type as_array() const
Definition jwt.h:2402
+
json_traits::string_type as_string() const
Definition jwt.h:2381
+
Definition jwt.h:2847
+
builder & set_audience(typename json_traits::string_type aud)
Definition jwt.h:2965
+
builder & set_payload_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:2897
+
builder & set_expires_in(const std::chrono::duration< Rep > &d)
Definition jwt.h:2980
+
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:2908
+
builder & set_expires_at(const date &d)
Definition jwt.h:2973
+
builder & set_type(typename json_traits::string_type str)
Definition jwt.h:2916
+
JWT_CLAIM_EXPLICIT builder(Clock c)
Definition jwt.h:2859
+
json_traits::string_type sign(const Algo &algo, std::error_code &ec) const
Definition jwt.h:3083
+
builder & set_issued_at(const date &d)
Definition jwt.h:2994
+
json_traits::string_type sign(const Algo &algo) const
Definition jwt.h:3037
+
builder & set_payload_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:2887
+
builder & set_id(const typename json_traits::string_type &str)
Definition jwt.h:3005
+
builder & set_header_claim(const typename json_traits::string_type &id, typename json_traits::value_type c)
Definition jwt.h:2866
+
builder & set_header_claim(const typename json_traits::string_type &id, basic_claim< json_traits > c)
Definition jwt.h:2877
+
json_traits::string_type sign(const Algo &algo, Encode encode) const
Definition jwt.h:3021
+
builder & set_audience(typename json_traits::array_type a)
Definition jwt.h:2957
+
json_traits::string_type sign(const Algo &algo, Encode encode, std::error_code &ec) const
Definition jwt.h:3058
+
builder & set_content_type(typename json_traits::string_type str)
Definition jwt.h:2924
+
builder & set_not_before(const date &d)
Definition jwt.h:2988
+
builder & set_subject(typename json_traits::string_type str)
Definition jwt.h:2949
+
builder & set_issued_now()
Definition jwt.h:2999
+
builder & set_key_id(typename json_traits::string_type str)
Set key id claim.
Definition jwt.h:2933
+
builder & set_issuer(typename json_traits::string_type str)
Definition jwt.h:2941
+
Definition jwt.h:2712
+
const json_traits::string_type & get_header() const noexcept
Definition jwt.h:2784
+
const json_traits::string_type & get_signature_base64() const noexcept
Definition jwt.h:2809
+
json_traits::string_type signature
Signature part decoded from base64.
Definition jwt.h:2725
+
json_traits::string_type header
Header part decoded from base64.
Definition jwt.h:2717
+
json_traits::string_type header_base64
Unmodified header part in base64.
Definition jwt.h:2719
+
json_traits::string_type token
Unmodified token, as passed to constructor.
Definition jwt.h:2715
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2827
+
const json_traits::string_type & get_signature() const noexcept
Definition jwt.h:2794
+
JWT_CLAIM_EXPLICIT decoded_jwt(const typename json_traits::string_type &token)
Parses a given token.
Definition jwt.h:2741
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2837
+
decoded_jwt(const typename json_traits::string_type &token, Decode decode)
Parses a given token.
Definition jwt.h:2758
+
json_traits::object_type get_payload_json() const
Definition jwt.h:2814
+
json_traits::string_type signature_base64
Unmodified signature part in base64.
Definition jwt.h:2727
+
const json_traits::string_type & get_payload_base64() const noexcept
Definition jwt.h:2804
+
const json_traits::string_type & get_token() const noexcept
Definition jwt.h:2779
+
json_traits::object_type get_header_json() const
Definition jwt.h:2819
+
const json_traits::string_type & get_payload() const noexcept
Definition jwt.h:2789
+
const json_traits::string_type & get_header_base64() const noexcept
Definition jwt.h:2799
+
json_traits::string_type payload_base64
Unmodified payload part in base64.
Definition jwt.h:2723
+
json_traits::string_type payload
Payload part decoded from base64.
Definition jwt.h:2721
+
Definition jwt.h:2637
+
json_traits::string_type get_type() const
Definition jwt.h:2676
+
bool has_header_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2695
+
bool has_algorithm() const noexcept
Definition jwt.h:2647
+
bool has_type() const noexcept
Definition jwt.h:2652
+
json_traits::string_type get_algorithm() const
Definition jwt.h:2669
+
bool has_content_type() const noexcept
Definition jwt.h:2657
+
basic_claim_t get_header_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2703
+
json_traits::string_type get_key_id() const
Definition jwt.h:2690
+
json_traits::string_type get_content_type() const
Definition jwt.h:2683
+
bool has_key_id() const noexcept
Definition jwt.h:2662
+
Handle class for EVP_PKEY structures.
Definition jwt.h:421
+
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:445
+
JSON Web Key.
Definition jwt.h:3581
+
bool has_x5c() const noexcept
Definition jwt.h:3737
+
json_traits::string_type get_curve() const
Get curve claim.
Definition jwt.h:3644
+
bool has_x5t_sha256() const noexcept
Definition jwt.h:3749
+
json_traits::string_type get_algorithm() const
Definition jwt.h:3624
+
json_traits::array_type get_x5c() const
Definition jwt.h:3652
+
json_traits::object_type get_claims() const
Definition jwt.h:3778
+
json_traits::string_type get_x5t() const
Definition jwt.h:3668
+
json_traits::string_type get_x5c_key_value() const
Definition jwt.h:3684
+
json_traits::string_type get_x5t_sha256() const
Definition jwt.h:3676
+
json_traits::string_type get_key_id() const
Definition jwt.h:3632
+
bool has_algorithm() const noexcept
Definition jwt.h:3713
+
json_traits::string_type get_use() const
Definition jwt.h:3608
+
bool has_key_id() const noexcept
Definition jwt.h:3725
+
bool has_x5u() const noexcept
Definition jwt.h:3731
+
bool has_key_operations() const noexcept
Definition jwt.h:3707
+
bool empty() const noexcept
Definition jwt.h:3772
+
bool has_use() const noexcept
Definition jwt.h:3701
+
bool has_x5t() const noexcept
Definition jwt.h:3743
+
bool has_jwk_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:3755
+
basic_claim_t::set_t get_key_operations() const
Definition jwt.h:3616
+
bool has_curve() const noexcept
Definition jwt.h:3719
+
bool has_key_type() const noexcept
Definition jwt.h:3695
+
basic_claim_t get_jwk_claim(const typename json_traits::string_type &name) const
Definition jwt.h:3764
+
json_traits::string_type get_x5u() const
Definition jwt.h:3660
+
json_traits::string_type get_key_type() const
Definition jwt.h:3600
+
JWK Set.
Definition jwt.h:3792
+
jwks_t get_jwk(const typename json_traits::string_type &key_id) const
Definition jwt.h:3844
+
jwks()=default
+
std::vector< jwks_t > jwks_vector_t
Type specialization for the vector of JWK.
Definition jwt.h:3797
+
JWT_CLAIM_EXPLICIT jwks(const typename json_traits::string_type &str)
Definition jwt.h:3812
+
bool has_jwk(const typename json_traits::string_type &key_id) const noexcept
Definition jwt.h:3835
+
Definition jwt.h:2519
+
basic_claim_t::set_t get_audience() const
Definition jwt.h:2581
+
json_traits::string_type get_id() const
Definition jwt.h:2614
+
bool has_issued_at() const noexcept
Definition jwt.h:2555
+
bool has_not_before() const noexcept
Definition jwt.h:2550
+
bool has_payload_claim(const typename json_traits::string_type &name) const noexcept
Definition jwt.h:2619
+
bool has_subject() const noexcept
Definition jwt.h:2535
+
date get_not_before() const
Definition jwt.h:2600
+
bool has_issuer() const noexcept
Definition jwt.h:2530
+
bool has_id() const noexcept
Definition jwt.h:2560
+
bool has_expires_at() const noexcept
Definition jwt.h:2545
+
date get_issued_at() const
Definition jwt.h:2607
+
basic_claim_t get_payload_claim(const typename json_traits::string_type &name) const
Definition jwt.h:2627
+
bool has_audience() const noexcept
Definition jwt.h:2540
+
date get_expires_at() const
Definition jwt.h:2593
+
json_traits::string_type get_subject() const
Definition jwt.h:2574
+
json_traits::string_type get_issuer() const
Definition jwt.h:2567
+
Definition jwt.h:3318
+
verifier & expires_at_leeway(size_t leeway)
Definition jwt.h:3399
+
verifier & with_claim(const typename json_traits::string_type &name, verify_check_fn_t fn)
Definition jwt.h:3498
+
void verify(const decoded_jwt< json_traits > &jwt, std::error_code &ec) const
Definition jwt.h:3551
+
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:3330
+
verifier & not_before_leeway(size_t leeway)
Definition jwt.h:3409
+
verifier & issued_at_leeway(size_t leeway)
Definition jwt.h:3419
+
verifier & with_subject(const typename json_traits::string_type &sub)
Definition jwt.h:3455
+
verifier & with_audience(const typename basic_claim_t::set_t &aud)
Definition jwt.h:3464
+
verifier & with_claim(const typename json_traits::string_type &name, basic_claim_t c)
Definition jwt.h:3513
+
verifier & with_audience(const typename json_traits::string_type &aud)
Definition jwt.h:3474
+
void verify(const decoded_jwt< json_traits > &jwt) const
Definition jwt.h:3541
+
verifier(Clock c)
Definition jwt.h:3360
+
verifier & leeway(size_t leeway)
Definition jwt.h:3389
+
verifier & with_issuer(const typename json_traits::string_type &iss)
Definition jwt.h:3445
+
verifier & allow_algorithm(Algorithm alg)
Add an algorithm available for checking.
Definition jwt.h:3531
+
verifier & with_type(const typename json_traits::string_type &type, std::locale locale=std::locale{})
Definition jwt.h:3435
+
verifier & with_id(const typename json_traits::string_type &id)
Definition jwt.h:3485
+
signature_verification_error
Errors related to verification of signatures.
Definition jwt.h:212
+
std::error_category & token_verification_error_category()
Error category for token verification errors.
Definition jwt.h:347
+
void throw_if_error(std::error_code ec)
Raises an exception if any JWT-CPP error codes are active.
Definition jwt.h:379
+
std::error_category & ecdsa_error_category()
Error category for ECDSA errors.
Definition jwt.h:177
+
std::error_category & signature_verification_error_category()
Error category for verification errors.
Definition jwt.h:226
+
std::error_category & rsa_error_category()
Error category for RSA errors.
Definition jwt.h:127
+
std::error_category & signature_generation_error_category()
Error category for signature generation errors.
Definition jwt.h:285
+
ecdsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:159
+
rsa_error
Errors related to processing of RSA signatures.
Definition jwt.h:110
+
signature_generation_error
Errors related to signature generation errors.
Definition jwt.h:265
+
token_verification_error
Errors related to token verification errors.
Definition jwt.h:335
+
std::error_code make_error_code(rsa_error e)
Converts JWT-CPP errors into generic STL error_codes.
Definition jwt.h:155
+
std::string extract_pubkey_from_cert(const std::string &certstr, const std::string &pw, std::error_code &ec)
Extract the public key of a pem certificate.
Definition jwt.h:538
+
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:814
+
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:710
+
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:913
+
std::unique_ptr< BIGNUM, decltype(&BN_free)> raw2bn(const std::string &raw, std::error_code &ec)
Definition jwt.h:843
+
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:893
+
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:624
+
std::string bn2raw(const BIGNUM *bn)
Definition jwt.h:830
+
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:768
+
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:588
+
type
Categories for the various JSON types used in JWTs.
Definition jwt.h:2034
+
JSON Web Token.
Definition base.h:21
+
verifier< Clock, json_traits > verify(Clock c)
Definition jwt.h:3867
+
std::chrono::system_clock::time_point date
Definition jwt.h:86
+
builder< Clock, json_traits > create(Clock c)
Definition jwt.h:3877
+
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:3953
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3967
+
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:3928
+
verify_ops::verify_context< traits::boost_json > verify_context
Definition defaults.h:88
+
Base class for ECDSA family of algorithms.
Definition jwt.h:1302
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1376
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1339
+
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:1314
+
std::string name() const
Definition jwt.h:1415
+
Definition jwt.h:1938
+
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:1948
+
Definition jwt.h:1960
+
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:1970
+
Base class for EdDSA family of algorithms.
Definition jwt.h:1533
+
std::string name() const
Definition jwt.h:1647
+
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:1544
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1560
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1608
+
Definition jwt.h:1865
+
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:1875
+
Definition jwt.h:1916
+
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:1925
+
Definition jwt.h:1882
+
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:1892
+
Definition jwt.h:1899
+
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:1909
+
Base class for HMAC family of algorithms.
Definition jwt.h:1132
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1149
+
std::string name() const
Definition jwt.h:1189
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1170
+
hmacsha(std::string key, const EVP_MD *(*md)(), std::string name)
Definition jwt.h:1140
+
Definition jwt.h:1787
+
hs256(std::string key)
Definition jwt.h:1792
+
Definition jwt.h:1797
+
hs384(std::string key)
Definition jwt.h:1802
+
Definition jwt.h:1807
+
hs512(std::string key)
Definition jwt.h:1812
+
"none" algorithm.
Definition jwt.h:1107
+
void verify(const std::string &, const std::string &signature, std::error_code &ec) const
Check if the given signature is empty.
Definition jwt.h:1122
+
std::string name() const
Get algorithm name.
Definition jwt.h:1127
+
std::string sign(const std::string &, std::error_code &ec) const
Return an empty string.
Definition jwt.h:1111
+
Definition jwt.h:1979
+
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:1987
+
Definition jwt.h:1994
+
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:2002
+
Definition jwt.h:2009
+
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:2017
+
Base class for PSS-RSA family of algorithms.
Definition jwt.h:1659
+
std::string name() const
Definition jwt.h:1773
+
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:1669
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1734
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1686
+
Definition jwt.h:1819
+
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:1828
+
Definition jwt.h:1835
+
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:1843
+
Definition jwt.h:1850
+
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:1858
+
Base class for RSA family of algorithms.
Definition jwt.h:1202
+
void verify(const std::string &data, const std::string &signature, std::error_code &ec) const
Definition jwt.h:1263
+
std::string sign(const std::string &data, std::error_code &ec) const
Definition jwt.h:1229
+
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:1213
+
std::string name() const
Definition jwt.h:1289
+
Definition jwt.h:3884
+
date now() const
Definition jwt.h:3889
+ +
Definition jwt.h:101
+ +
Definition jwt.h:98
+ + + + + +
Definition jwt.h:3170
+ + +
Definition jwt.h:3099
+
date current_time
Current time, retrieved from the verifiers clock and cached for performance and consistency.
Definition jwt.h:3103
+
basic_claim< json_traits > get_claim(bool in_header, json::type t, std::error_code &ec) const
Definition jwt.h:3140
+
size_t default_leeway
The configured default leeway for this verification.
Definition jwt.h:3107
+
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:3118
+
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:3161
+
basic_claim< json_traits > get_claim(std::error_code &ec) const
Helper method to get a payload claim from the jwt.
Definition jwt.h:3154
+
json_traits::string_type claim_key
The claim key to apply this comparison on.
Definition jwt.h:3110
+
const decoded_jwt< json_traits > & jwt
The jwt passed to the verifier.
Definition jwt.h:3105
+
+
+ + + + diff --git a/kazuho-picojson_2defaults_8h_source.html b/kazuho-picojson_2defaults_8h_source.html new file mode 100644 index 000000000..d5d164325 --- /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:2712
+
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:3953
+
jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
Definition jwt.h:3967
+
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:3928
+
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..6d132655d --- /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:1787
+

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..34c07f975 --- /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..71ccb9b27 --- /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:3867
+

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:2307
+
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..477505948 --- /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:1107
+
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:2034
+
+
+
+ + + + 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:2712
    +
    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:3953
    +
    jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
    Definition jwt.h:3967
    +
    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:3928
    +
    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..a6fc5a4ae --- /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:2034
    +
    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..ababd6bf9 --- /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:2712
    +
    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:3953
    +
    jwks< json_traits > parse_jwks(const typename json_traits::string_type &jwks_)
    Definition jwt.h:3967
    +
    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:3928
    +
    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..ad49c67b4 --- /dev/null +++ b/open-source-parsers-jsoncpp_2traits_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + +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::CharReaderBuilder builder;
    +
    121 const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
    +
    122
    +
    123 return reader->parse(reinterpret_cast<const char*>(str.c_str()),
    +
    124 reinterpret_cast<const char*>(str.c_str() + str.size()), &val, nullptr);
    +
    125 }
    +
    126
    +
    127 static string_type serialize(const value_type& val) {
    +
    128 Json::StreamWriterBuilder builder;
    +
    129 builder["commentStyle"] = "None";
    +
    130 builder["indentation"] = "";
    +
    131 std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
    +
    132 return Json::writeString(builder, val);
    +
    133 }
    +
    134 };
    +
    +
    135 } // namespace traits
    +
    136} // namespace jwt
    +
    137
    +
    138#endif
    + + +
    type
    Categories for the various JSON types used in JWTs.
    Definition jwt.h:2034
    +
    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..0f65e2734 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['json_20traits_0',['JSON Traits',['../md_docs_2traits.html',1,'']]], + ['jwk_1',['jwk',['../classjwt_1_1jwk.html',1,'jwt']]], + ['jwks_2',['jwks',['../classjwt_1_1jwks.html',1,'jwt::jwks< json_traits >'],['../classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561',1,'jwt::jwks::jwks()=default'],['../classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2',1,'jwt::jwks::jwks(const typename json_traits::string_type &str)']]], + ['jwks_2dverify_2ecpp_3',['jwks-verify.cpp',['../jwks-verify_8cpp.html',1,'']]], + ['jwks_5ft_4',['jwks_t',['../classjwt_1_1jwks.html#a25df35cca51f36672dc34ce86f292c7b',1,'jwt::jwks']]], + ['jwks_5fvector_5ft_5',['jwks_vector_t',['../classjwt_1_1jwks.html#ac1999abc822287e49bb86d89b47e1a25',1,'jwt::jwks']]], + ['jwt_6',['jwt',['../namespacejwt.html',1,'jwt'],['../structjwt_1_1verify__ops_1_1verify__context.html#ae9662ab8311e90d4209859a8446eca37',1,'jwt::verify_ops::verify_context::jwt']]], + ['jwt_20cpp_7',['JWT-CPP',['../index.html',1,'']]], + ['jwt_3a_3aalgorithm_8',['algorithm',['../namespacejwt_1_1algorithm.html',1,'jwt']]], + ['jwt_3a_3aalphabet_9',['alphabet',['../namespacejwt_1_1alphabet.html',1,'jwt']]], + ['jwt_3a_3abase_10',['base',['../namespacejwt_1_1base.html',1,'jwt']]], + ['jwt_3a_3aerror_11',['error',['../namespacejwt_1_1error.html',1,'jwt']]], + ['jwt_3a_3ahelper_12',['helper',['../namespacejwt_1_1helper.html',1,'jwt']]], + ['jwt_3a_3ajson_13',['json',['../namespacejwt_1_1json.html',1,'jwt']]], + ['jwt_3a_3atraits_14',['traits',['../namespacejwt_1_1traits.html',1,'jwt']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 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..83175afa4 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jwks_0',['jwks',['../classjwt_1_1jwks.html#a35532c5a8f559739bef25edafebd7561',1,'jwt::jwks::jwks()=default'],['../classjwt_1_1jwks.html#ad0fedb031f3b2f6ebf62e1e66b3451c2',1,'jwt::jwks::jwks(const typename json_traits::string_type &str)']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 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