From 874fcd40f9dbe0e1c500816c481a9e90f4c34cfd Mon Sep 17 00:00:00 2001 From: kristelmerilain Date: Thu, 15 Aug 2024 14:24:06 +0000 Subject: [PATCH] deploy: 36168c910877b26763b8cbcf908a47ea18ee8898 --- .nojekyll | 0 Doxyfile.css | 4 + ID.ico | Bin 0 -> 60177 bytes annotated.html | 110 + annotated_dup.js | 31 + asic.svg | 158 ++ bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes classdigidoc_1_1Conf-members.html | 111 + classdigidoc_1_1Conf.html | 1046 +++++++++ classdigidoc_1_1Conf.js | 34 + classdigidoc_1_1Conf.png | Bin 0 -> 2913 bytes classdigidoc_1_1ConfV2-members.html | 114 + classdigidoc_1_1ConfV2.html | 304 +++ classdigidoc_1_1ConfV2.js | 7 + classdigidoc_1_1ConfV2.png | Bin 0 -> 2647 bytes classdigidoc_1_1ConfV3-members.html | 117 + classdigidoc_1_1ConfV3.html | 314 +++ classdigidoc_1_1ConfV3.js | 7 + classdigidoc_1_1ConfV3.png | Bin 0 -> 2394 bytes classdigidoc_1_1ConfV4-members.html | 120 + classdigidoc_1_1ConfV4.html | 322 +++ classdigidoc_1_1ConfV4.js | 7 + classdigidoc_1_1ConfV4.png | Bin 0 -> 1915 bytes classdigidoc_1_1ConfV5-members.html | 123 ++ classdigidoc_1_1ConfV5.html | 331 +++ classdigidoc_1_1ConfV5.js | 7 + classdigidoc_1_1ConfV5.png | Bin 0 -> 1449 bytes classdigidoc_1_1Container-members.html | 102 + classdigidoc_1_1Container.html | 961 ++++++++ classdigidoc_1_1Container.js | 25 + classdigidoc_1_1DataFile-members.html | 89 + classdigidoc_1_1DataFile.html | 394 ++++ classdigidoc_1_1DataFile.js | 12 + classdigidoc_1_1Exception-members.html | 124 ++ classdigidoc_1_1Exception.html | 718 ++++++ classdigidoc_1_1Exception.js | 48 + classdigidoc_1_1PKCS11Signer-members.html | 104 + classdigidoc_1_1PKCS11Signer.html | 465 ++++ classdigidoc_1_1PKCS11Signer.js | 11 + classdigidoc_1_1PKCS11Signer.png | Bin 0 -> 620 bytes classdigidoc_1_1PKCS12Signer-members.html | 101 + classdigidoc_1_1PKCS12Signer.html | 303 +++ classdigidoc_1_1PKCS12Signer.js | 7 + classdigidoc_1_1PKCS12Signer.png | Bin 0 -> 627 bytes classdigidoc_1_1Signature-members.html | 112 + classdigidoc_1_1Signature.html | 1020 +++++++++ classdigidoc_1_1Signature.js | 36 + ...doc_1_1Signature_1_1Validator-members.html | 92 + classdigidoc_1_1Signature_1_1Validator.html | 229 ++ classdigidoc_1_1Signature_1_1Validator.js | 16 + classdigidoc_1_1Signer-members.html | 99 + classdigidoc_1_1Signer.html | 673 ++++++ classdigidoc_1_1Signer.js | 22 + classdigidoc_1_1Signer.png | Bin 0 -> 1136 bytes classdigidoc_1_1WinSigner-members.html | 101 + classdigidoc_1_1WinSigner.html | 284 +++ classdigidoc_1_1WinSigner.js | 8 + classdigidoc_1_1WinSigner.png | Bin 0 -> 546 bytes classdigidoc_1_1X509Cert-members.html | 137 ++ classdigidoc_1_1X509Cert.html | 1421 ++++++++++++ classdigidoc_1_1X509Cert.js | 62 + classdigidoc_1_1XmlConf-members.html | 125 ++ classdigidoc_1_1XmlConf.html | 1350 ++++++++++++ classdigidoc_1_1XmlConf.js | 43 + classdigidoc_1_1XmlConf.png | Bin 0 -> 516 bytes classdigidoc_1_1XmlConfV2-members.html | 128 ++ classdigidoc_1_1XmlConfV2.html | 1413 ++++++++++++ classdigidoc_1_1XmlConfV2.js | 40 + classdigidoc_1_1XmlConfV2.png | Bin 0 -> 777 bytes classdigidoc_1_1XmlConfV3-members.html | 131 ++ classdigidoc_1_1XmlConfV3.html | 1455 ++++++++++++ classdigidoc_1_1XmlConfV3.js | 41 + classdigidoc_1_1XmlConfV3.png | Bin 0 -> 1000 bytes classdigidoc_1_1XmlConfV4-members.html | 134 ++ classdigidoc_1_1XmlConfV4.html | 1497 +++++++++++++ classdigidoc_1_1XmlConfV4.js | 42 + classdigidoc_1_1XmlConfV4.png | Bin 0 -> 1214 bytes classdigidoc_1_1XmlConfV5-members.html | 137 ++ classdigidoc_1_1XmlConfV5.html | 1537 +++++++++++++ classdigidoc_1_1XmlConfV5.js | 43 + classdigidoc_1_1XmlConfV5.png | Bin 0 -> 1448 bytes classes.html | 110 + closed.png | Bin 0 -> 132 bytes components.svg | 249 +++ deprecated.html | 110 + digidoc_framework.svg | 273 +++ dir_4261af1259721e3e39e0d2dd7354b511.html | 102 + dir_68267d1309a1af8e8297ef4c3efbcdba.html | 117 + doc.png | Bin 0 -> 746 bytes doxygen.css | 1793 +++++++++++++++ doxygen.svg | 26 + dynsections.js | 121 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 101 + functions_b.html | 80 + functions_c.html | 172 ++ functions_d.html | 121 + functions_dup.js | 27 + functions_e.html | 95 + functions_enum.html | 87 + functions_eval.html | 267 +++ functions_f.html | 92 + functions_func.html | 101 + functions_func.js | 26 + functions_func_b.html | 80 + functions_func_c.html | 139 ++ functions_func_d.html | 97 + functions_func_e.html | 89 + functions_func_f.html | 89 + functions_func_h.html | 83 + functions_func_i.html | 105 + functions_func_k.html | 80 + functions_func_l.html | 99 + functions_func_m.html | 91 + functions_func_n.html | 86 + functions_func_o.html | 146 ++ functions_func_p.html | 183 ++ functions_func_q.html | 80 + functions_func_r.html | 83 + functions_func_s.html | 279 +++ functions_func_t.html | 145 ++ functions_func_u.html | 80 + functions_func_v.html | 112 + functions_func_w.html | 83 + functions_func_x.html | 101 + functions_func_~.html | 140 ++ functions_g.html | 80 + functions_h.html | 86 + functions_i.html | 117 + functions_k.html | 92 + functions_l.html | 99 + functions_m.html | 94 + functions_n.html | 97 + functions_o.html | 161 ++ functions_p.html | 213 ++ functions_q.html | 134 ++ functions_r.html | 86 + functions_s.html | 288 +++ functions_t.html | 157 ++ functions_type.html | 99 + functions_u.html | 83 + functions_v.html | 118 + functions_vars.html | 165 ++ functions_w.html | 89 + functions_x.html | 101 + functions_~.html | 140 ++ hierarchy.html | 112 + hierarchy.js | 43 + index.html | 81 + jquery.js | 35 + manual.html | 1947 +++++++++++++++++ menu.js | 51 + menudata.js | 102 + namespacedigidoc.html | 513 +++++ namespacemembers.html | 111 + namespacemembers_func.html | 99 + namespacemembers_type.html | 87 + nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes navtree.css | 146 ++ navtree.js | 546 +++++ navtreedata.js | 152 ++ navtreeindex0.js | 253 +++ navtreeindex1.js | 253 +++ navtreeindex2.js | 178 ++ open.png | Bin 0 -> 123 bytes pages.html | 83 + resize.js | 140 ++ schemas.svg | 137 ++ security.svg | 544 +++++ splitbar.png | Bin 0 -> 314 bytes structdigidoc_1_1ContainerOpenCB-members.html | 82 + structdigidoc_1_1ContainerOpenCB.html | 155 ++ structdigidoc_1_1ContainerOpenCB.js | 5 + structdigidoc_1_1XMLDocument-members.html | 130 ++ structdigidoc_1_1XMLDocument.html | 771 +++++++ structdigidoc_1_1XMLDocument.js | 20 + structdigidoc_1_1XMLDocument.png | Bin 0 -> 1671 bytes structdigidoc_1_1XMLElem-members.html | 97 + structdigidoc_1_1XMLElem.html | 655 ++++++ structdigidoc_1_1XMLElem.js | 20 + structdigidoc_1_1XMLName-members.html | 82 + structdigidoc_1_1XMLName.html | 123 ++ structdigidoc_1_1XMLName.js | 5 + structdigidoc_1_1XMLNode-members.html | 113 + structdigidoc_1_1XMLNode.html | 676 ++++++ structdigidoc_1_1XMLNode.js | 20 + structdigidoc_1_1XMLNode.png | Bin 0 -> 1018 bytes ...igidoc_1_1XMLNode_1_1iterator-members.html | 100 + structdigidoc_1_1XMLNode_1_1iterator.html | 208 ++ structdigidoc_1_1XMLNode_1_1iterator.js | 6 + structdigidoc_1_1XMLNode_1_1iterator.png | Bin 0 -> 763 bytes structdigidoc_1_1unique__xml.html | 81 + ...e__xml_3_01void_07T_01_5_08_4-members.html | 81 + ...1_1unique__xml_3_01void_07T_01_5_08_4.html | 109 + ...c_1_1unique__xml_3_01void_07T_01_5_08_4.js | 4 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + 206 files changed, 37355 insertions(+) create mode 100644 .nojekyll create mode 100644 Doxyfile.css create mode 100644 ID.ico create mode 100644 annotated.html create mode 100644 annotated_dup.js create mode 100644 asic.svg create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 classdigidoc_1_1Conf-members.html create mode 100644 classdigidoc_1_1Conf.html create mode 100644 classdigidoc_1_1Conf.js create mode 100644 classdigidoc_1_1Conf.png create mode 100644 classdigidoc_1_1ConfV2-members.html create mode 100644 classdigidoc_1_1ConfV2.html create mode 100644 classdigidoc_1_1ConfV2.js create mode 100644 classdigidoc_1_1ConfV2.png create mode 100644 classdigidoc_1_1ConfV3-members.html create mode 100644 classdigidoc_1_1ConfV3.html create mode 100644 classdigidoc_1_1ConfV3.js create mode 100644 classdigidoc_1_1ConfV3.png create mode 100644 classdigidoc_1_1ConfV4-members.html create mode 100644 classdigidoc_1_1ConfV4.html create mode 100644 classdigidoc_1_1ConfV4.js create mode 100644 classdigidoc_1_1ConfV4.png create mode 100644 classdigidoc_1_1ConfV5-members.html create mode 100644 classdigidoc_1_1ConfV5.html create mode 100644 classdigidoc_1_1ConfV5.js create mode 100644 classdigidoc_1_1ConfV5.png create mode 100644 classdigidoc_1_1Container-members.html create mode 100644 classdigidoc_1_1Container.html create mode 100644 classdigidoc_1_1Container.js create mode 100644 classdigidoc_1_1DataFile-members.html create mode 100644 classdigidoc_1_1DataFile.html create mode 100644 classdigidoc_1_1DataFile.js create mode 100644 classdigidoc_1_1Exception-members.html create mode 100644 classdigidoc_1_1Exception.html create mode 100644 classdigidoc_1_1Exception.js create mode 100644 classdigidoc_1_1PKCS11Signer-members.html create mode 100644 classdigidoc_1_1PKCS11Signer.html create mode 100644 classdigidoc_1_1PKCS11Signer.js create mode 100644 classdigidoc_1_1PKCS11Signer.png create mode 100644 classdigidoc_1_1PKCS12Signer-members.html create mode 100644 classdigidoc_1_1PKCS12Signer.html create mode 100644 classdigidoc_1_1PKCS12Signer.js create mode 100644 classdigidoc_1_1PKCS12Signer.png create mode 100644 classdigidoc_1_1Signature-members.html create mode 100644 classdigidoc_1_1Signature.html create mode 100644 classdigidoc_1_1Signature.js create mode 100644 classdigidoc_1_1Signature_1_1Validator-members.html create mode 100644 classdigidoc_1_1Signature_1_1Validator.html create mode 100644 classdigidoc_1_1Signature_1_1Validator.js create mode 100644 classdigidoc_1_1Signer-members.html create mode 100644 classdigidoc_1_1Signer.html create mode 100644 classdigidoc_1_1Signer.js create mode 100644 classdigidoc_1_1Signer.png create mode 100644 classdigidoc_1_1WinSigner-members.html create mode 100644 classdigidoc_1_1WinSigner.html create mode 100644 classdigidoc_1_1WinSigner.js create mode 100644 classdigidoc_1_1WinSigner.png create mode 100644 classdigidoc_1_1X509Cert-members.html create mode 100644 classdigidoc_1_1X509Cert.html create mode 100644 classdigidoc_1_1X509Cert.js create mode 100644 classdigidoc_1_1XmlConf-members.html create mode 100644 classdigidoc_1_1XmlConf.html create mode 100644 classdigidoc_1_1XmlConf.js create mode 100644 classdigidoc_1_1XmlConf.png create mode 100644 classdigidoc_1_1XmlConfV2-members.html create mode 100644 classdigidoc_1_1XmlConfV2.html create mode 100644 classdigidoc_1_1XmlConfV2.js create mode 100644 classdigidoc_1_1XmlConfV2.png create mode 100644 classdigidoc_1_1XmlConfV3-members.html create mode 100644 classdigidoc_1_1XmlConfV3.html create mode 100644 classdigidoc_1_1XmlConfV3.js create mode 100644 classdigidoc_1_1XmlConfV3.png create mode 100644 classdigidoc_1_1XmlConfV4-members.html create mode 100644 classdigidoc_1_1XmlConfV4.html create mode 100644 classdigidoc_1_1XmlConfV4.js create mode 100644 classdigidoc_1_1XmlConfV4.png create mode 100644 classdigidoc_1_1XmlConfV5-members.html create mode 100644 classdigidoc_1_1XmlConfV5.html create mode 100644 classdigidoc_1_1XmlConfV5.js create mode 100644 classdigidoc_1_1XmlConfV5.png create mode 100644 classes.html create mode 100644 closed.png create mode 100644 components.svg create mode 100644 deprecated.html create mode 100644 digidoc_framework.svg create mode 100644 dir_4261af1259721e3e39e0d2dd7354b511.html create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_dup.js create mode 100644 functions_e.html create mode 100644 functions_enum.html create mode 100644 functions_eval.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func.js create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_k.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_n.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_q.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_w.html create mode 100644 functions_func_x.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_k.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_n.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_q.html create mode 100644 functions_r.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_w.html create mode 100644 functions_x.html create mode 100644 functions_~.html create mode 100644 hierarchy.html create mode 100644 hierarchy.js create mode 100644 index.html create mode 100644 jquery.js create mode 100644 manual.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 namespacedigidoc.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_func.html create mode 100644 namespacemembers_type.html create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.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 open.png create mode 100644 pages.html create mode 100644 resize.js create mode 100644 schemas.svg create mode 100644 security.svg create mode 100644 splitbar.png create mode 100644 structdigidoc_1_1ContainerOpenCB-members.html create mode 100644 structdigidoc_1_1ContainerOpenCB.html create mode 100644 structdigidoc_1_1ContainerOpenCB.js create mode 100644 structdigidoc_1_1XMLDocument-members.html create mode 100644 structdigidoc_1_1XMLDocument.html create mode 100644 structdigidoc_1_1XMLDocument.js create mode 100644 structdigidoc_1_1XMLDocument.png create mode 100644 structdigidoc_1_1XMLElem-members.html create mode 100644 structdigidoc_1_1XMLElem.html create mode 100644 structdigidoc_1_1XMLElem.js create mode 100644 structdigidoc_1_1XMLName-members.html create mode 100644 structdigidoc_1_1XMLName.html create mode 100644 structdigidoc_1_1XMLName.js create mode 100644 structdigidoc_1_1XMLNode-members.html create mode 100644 structdigidoc_1_1XMLNode.html create mode 100644 structdigidoc_1_1XMLNode.js create mode 100644 structdigidoc_1_1XMLNode.png create mode 100644 structdigidoc_1_1XMLNode_1_1iterator-members.html create mode 100644 structdigidoc_1_1XMLNode_1_1iterator.html create mode 100644 structdigidoc_1_1XMLNode_1_1iterator.js create mode 100644 structdigidoc_1_1XMLNode_1_1iterator.png create mode 100644 structdigidoc_1_1unique__xml.html create mode 100644 structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4-members.html create mode 100644 structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html create mode 100644 structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.js create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/Doxyfile.css b/Doxyfile.css new file mode 100644 index 000000000..5cb044db9 --- /dev/null +++ b/Doxyfile.css @@ -0,0 +1,4 @@ +#projectlogo > img { + width: 55px; + height: 55px; +} diff --git a/ID.ico b/ID.ico new file mode 100644 index 0000000000000000000000000000000000000000..40018f81a334b213cb87501da282125e42700ae3 GIT binary patch literal 60177 zcmeG_2O!qZ`}f*WMn==Bq$MFFvXdqnv=GUbRradL%4kocsUjm8Wfy59geXxokj-no zpa0$G^;%K-f5)$1zpl=`pU>Sr_dL(%=5x!Es_Es#zVMSIRH$ZN{;uL0DuWZkb{H#oJlu>?P_(Db5*at?dpz?gro*_aWAh(M0OvYc?0pSnhar|L?(C~N%oL(Ov zAIt%{AjA(??ofBwJ_xaq@*lIOH!`#v^55z&em+zOhB*&Z-TonmU=J${KA?Jz>M|en zlzN^Ce^cB)RnK89^oHKS-3Rl5HL=rupE3ME?!+Ji2Uyisp=Sf1!z!IY2F3>NoytBz z-VQ23od!PcK0eA0hgE#seSKhkTSW|V^f53nbSJtKAsip9)0^ykDEL!Ca(kmZjX$L1 zLws5S{VwQHKZcwKBOZ|d4EbutA^?~!rG}mcm`l)uy;2i^rSwE#CBqD?Wm$o(JUiH@ z$O-I}rvm3SyufJY);I&N@_-IQ4UmYnBU?2wq4dlTI zi#6b+#X4}xY6A#y+y=s2bU?VP4!G#H3taNh2bT{RfGY?0fUBNH;M!pmaNXAeL>{pM zQ2{pKR?t2WbJQNh9CHA%#~nfJ2`3PD(iOy?aR;+EG=Vv4O+Y}s2`tiV2GV*hV8!kh zu-UE^SRH8xcE>t^^T`h2db$JLIpYD6E_i|D5O0ti>I3eD`+?NU0U-5CAV|M<6lC5w z2_D9Vg52BT;L)AS;Bn$r@H9CBJiB)jyhw=xFH)mGL1r8%e2@T&9wdUI>_qVD;ayPj zI2DvWP6NlT6T#^yA~+XK1R-%ma4CTZ(w=mK*Uz&+MP4?jDtQiSD~iCU$`a^H!RM;i zp!jVsD68rPZ$9*ahT3${A9RLLH10XgKfV>+3G(CWQ{!2E1m5KoDjRwFzSOe_KQGhkY z0j#57pnPFCHmT2o`Io@_vM~R8m> z!wucc+1o8GxALQ(+%w@n?wLHZrB-e;8qB0ZMNY3kAUhdLi&_0YDFHR(6ouWC94q_N z%k{@fSz7Q=5)Otmoa_6Eq`>b_PX*KS4yGIY#iT^eFh2M&AJZC~=n?PZVSoCmCWG)- zvy!p=7Jo}isZr9KX)AEi!}p`4AEKlGqDAD$(Up|EYn?=Pn4dLf88=2l%bz*;V+I2(tzj^Uuk)@kZA(Zb$CAfO^ zYE}8^l+R0;tUna~V(6BLN$3ouCs4uaMn%;RoIs$OkLnu*e+VCU8iVNvQj&j6-U*Wr z@MlPRN_`%le!@xwe%$aU$it5d9fkix;E&SYso7QGw?dAB|CS|W{5O8vpHMMyuF%7g zLFxPZt6j^)k(1Q5wAA96F~o5TDs0_DNsYtr?+;Pm*WVwS4RIqnL}hB01%tV96ug7wt-K_e)Rkf z<)w#fDHIM_L!rn2MdyKthJ46GA>_-C_%|{htyB4+mxq2}oeI|i18xY9DeF`-aay=e zr6aFXm!oy+Bw)XC8gN)O6F9EshHF!P;HD-3+|>nvhsHc`Xp0c=)Dnh%3Gmt~0=##M z!*!|z@Yj4L94 z=WT2PqT8E+ifIeb^JoKB0dUP3+>Wm~6V4qRw!X}`ejH?6KLN6Co&xuy&VcOb^Wbs9 z6_A$}jjtmY&No^H?w*OX{I$%jn_E8seD2V5sQ!gb;qxK2!f>%<~#aGk{g*O{}_ zpg359y1Gijix&$k z>aG{*pS>+vD!)M!&!x@=IoWhgQ7QtQ_n|*j^enShqXgvm=_r1hrZ5U9j*3HJ zc>GkYC4;j@l!^mlHYER4%_Zn96&*btIUNL^yseV zLZE0RN5rFCc)YFz9ZIlxXncS9~!+ zuI_TQNEm=GyJqtyWhpJ3KX`tPX(*aTq96Wz0l^g;wRCa%CrQdJUpfU}oiVMV#Lu2R zXRZu6KNTGvUH{5z=9a^|OJW?s9w{a%A@k5NxCjj+(3lC-<%cmk$~Y z$it)Iykp^(CZK8G3bb9?fHjnFCx>~1q!1q%`hvSqo}F^(2rkb~yBZAA;anp(J{&xU z^6O_Qx9~Xzl3C|xr{i-BTy72L8D-Bhz?oY_a67#b2C zoctb8{H7Ot{RHLHa4yl_(g@mGnm}iJ3m|s14$LJwi6pX|x_>?a)ZqrE6%+~wFM#fSO_?Z-3D>kV<@K{l*dxRc?OL-0CZLWFa!g@7z+Rs zoM$jMLH_@lr~Hwpi~RS>)A?uckR2}!cxUi)%Zn@!Sth)2!2)41c{R0}eA28mEOY5; zX=&-0I3(40c$ZHiOcbCc(9u&9sMzIr`TCzZMP@M)7)4<`Gak>UCeKcwS-{IHKZlJC zrsq>r;2_Y<=i!xIB(!86ErC;HHWPtCl!tG{6s~E4Gz3}%Z?YT@?~18hQy0@iVG=DP zyM!7Kw}SXmajAv#=g(g#Ca0z_oqs0p5I6IO0|90KaiB9C=MPFgU-b>ECNWM&JC&1G zt153Kck{5vg?mF_r_FUk0QhgOR#w>T@Vem*y#q(_Te>FuL`x_B100HC`6t7Fkv=R_XxRhghBP`6)%($kZ-7$Q5eTU!NlsCJQ%H|s|SRY+;t9sIclM@zv zT|oae>hLD+;?Lsr38v5E&b*6_%rHM=IypVSzMZ(3^MzYq_l?eLTYN>&3pLm-I`vi4 ze?@3g`NF1m?K0Y1SgR!ztE#>Dme?-Xa!e(X^js_Q4VU@S`n^*fYE|_0FFp5q z% z@Md-Bg(uUv>cH{G%QH=rite;tcw1=6$iL=lwL`qhRVj=7y7VPe+prBLS2H}f#n-f@P(QAyR%*lh&r{SGy4Z7DHE*fd-Y>bn<125tuKS)IX_F0o z6-pUO*V|`z))Zxg>aMGOYh2~rrl&>CGSP!b z47xMLHBaX3+4G&(iVb7>VjBfL9cXnTwuCiFc0coZ{-V^a>D`*O8kJiO4n)7&b5vHm zr#kq;&ca0tgBV}Pib;oWzjaU{!b>ND4STM!mvy6gYE#&ALvN`{#!cxfd+n|7^@y7m zuRo;G=|o%k#Oy`G1!KFm70hc5L)<3ZTe!OHfla(^Ekg;*MHc5-oVonVGU*fa7xJas z2^7Wfc%5O)VrUa%0F!mcNP0)Z|kDv72dqGOep=$YR<3?dC&Xg87{=qbML&h@#31zQf<)CZt;VY!3uWx%YNJ+qFFJ@YF>%tN7Yc4x>a1_X> zM=o1>Ysa*hpf86L15AAyToiqbVo3)YnJ;A3pDd5Vh%2j1!yg$EEb~n=m|7(#-n(b^ zHXubeRqN5VAZ%Kn@7c1uU4@Q;CCir|RJo-RlW6T=wo`4h{{;5e9Yx84*@X_Fxn&D) zIP8CXT0cJ1)K-Qs_`Q^WSPZFQ`nA`#%sexN-cC!_I`}ln{l?>lBT)gG(!33yyvqdK zDw&(l$X%7ZbpMb{-?<6=v^&>s$n|fu%zpUB+mqF*LO8stNb4zWPv`3Hju7g4EC(1D z&dq8%FSXk`uxu$6^Wwg3>nr0{3%SVH@-0|-*r9v>WJN!#u7})5&ZKcw@+=e3nYJvm zXL>vDDw@q_GxtvN^GZ|9H3`^Q7%y3F?sDaF*!Ah$hx0x%D-}A$g}S+V2Gj3aNh-NK zrMbc^tonZY4(5ziw>E0Cu(UN;+jgcZ%}i-XYIWMDXs7elOeR@TyDRE=V@R`_UT>jA zj=~C0*2af)6NN}6_6~aqm;80t#+7r`VSg>+ZR`Si9g9jY(g$9ULFeE#*GKT4a{sy)3MjUCd^Et>Ow7l{7Bj#z5tySM4%=(;4^|zwUk@ zGVu&aq~)2{X__XHPhwL0FHbR-n4x>Uk9X!f{|5hummGKQQOlrH^zrZDPWSlAewtrs zVN(8XQ*on@`R^RPA9&qAMBUWh((DsCtuJ4Y-_s%DK}7VW)=~l0^-pbx4o3-@*LvL2 zT&TX3__VZ{LF_&~`fT<|#!v)m%rI#1pdn>lIw8|gbX#jyd6YmY@w#W}yHzI{FQ~92 zo17I(yl}kC-0Qh-`k(&1q^Y(yqTw(j=bqIVMZgr2T zmtd97v7vp3gj{NmO5SQpnNy^!$Cls8JxRMK-6PQ;(>Ors|#%*f~jtpcOeoVwTzSL|qXRlG7EVkB;2}C#OX@hL@OT*L>c+ zz>_c9Y3aG5fSk+Xmo)_LU2x#Mm|c9ch8@_=covrDZBi(=!v1k1&H6VgO^%LtS?Qv0 z9oaWqoO*>|4688a>l|mO;KRxwuK(n6@#W(DXzNMMtveS#QWG)T@n|j}MoB+9yJBXd zSguUxUa14EOdgHTPO6ufet4PZ-rBml?Q93zZJXzd`(&&qr6@La7WnJsr(3U=DYzNE z>`{O?=M$Tcm&~a$Lv1*v#OSj^_dU05JSBE#J8_+MlaW{^tyyAYZoZ_Ze`F$S-Y#0% z(n|VCW;yR}bOcp5*CuGp7rnFYs|9};P)(mjlPO=-I72}0jI@a-IMc#&M<{IH=Uln+ z4yMByaVo|&>cD~e)w*3~I=5@S_Sgrm3c1OqudBFCfxsuu=ppL+M%#yxNhL_4y*Wtm zyl&F31_4AD4GX2yxQqyUWHG;HtFjTiGZ6=_d3ep;O0$U$THh=ZdNJ5f|ZTy z)8|6#>E!flBQ!2sTt25d_06R9bq}9hvh<*mH{}3+4+F@i=uh@~?3G7! z0vq0d?EyTu>h#`zkgbkVvQ)y~ZUi&L@^5V8UgUNoEScwkhiYGdI*vnuqux&m$kHx!bDK(7|$}WlXX(IcW=P{nyO3 zO3Qb5$L8j&kXYf1(~~{HJnN`eVfXvHg43P%2`S=CVHMmGGc{1$_V6W>w5>rQ)Hp|c zj+e$(Eq>0Mb#vRH?7oRI2k`t?rk37RjG5H9po9LCOspCKPpT@i@-VI5n+m;ZC#tIf zWGeoDM$Ksm0ud-gb)7=2%KPWMseFqib*9e)YdooqmMU`ZU_WQbebJ(n>!wfXWDAxJC|OV3w##AJ zZF(U&(>%Yb5Z*DyC9-&5(-DKc67&A&bnkkVcD|k5>&5}DxV0ObYZIyTXYDN4ySHo} z@H-&ZEw8=pdc%2!1Xq{GX3nc%XIXBxtN9LTYS~ATBufcJLer8?)1GUJ7L_$IuVuG7 z7**Ih!cTN2aJ?yibD9PN=%$LzET}moAU!wb^&b9AMyK@Rz^HneipNiKimxoakbdFF`;U9y6xU_9`!w5ls~DZG5O-Z7tBz=PB+R0Ni=`mwlKV&HnY;HWm|dr#gbPYf$Bi@eeJD@sdsJY zH7(uAlA7`8qvhktwPaS00?Bv2?r5zHoBJ z>HQ3C4f(8QwY}7Il8g8kH-cRWu8(vRT$#FxaoGM|nPzK~-W?b2e3B@o9$`a6T6jX- zzJmG09?)Bs7}IQ29{N1fzb!D-#m;O&joqo_{N2XEW^1KkU(;x4N~e;y&D+8`=<)5{ z!2ygF_pByvm$0(%>pJvE5NwR*w=CFv{fU;RigCGF>h;9D$4{rwN0^t{a_C|%lZ7XJ z_LSwGk-TpaBj{YVuVq1~Yx^cxK|XxmG+!b>#fwu|&Y#V7`x-a%G8$khawy~YqMa?L zJI}qA{j52+W9D-2fJ#yz{G{xa$^mPBF|=!1 zBGY=pUB^p%wCB8-F+Y&`#AI3z_N@&^T^82Gye0)N`?5$%XjAIPovgGT_T}jxStefS zn*TDsMaFeO&c=-GCra72Uc7LJ`rtgk^KP$2#{RspguciA?lBGA7eUkBvt@H-I$tlS z>U1nBjM%t{t%fS6MKfvpl`FYd!918Adw(&$l@Z< z?RnSbAsunrq|#net8wM#*X@LPfMnxd?$-16vZ6&;Z~p7IY>c2W_tlh75_;1DLsGte z-ef&}hiGr1XV%oxTfSFvx4`NcW8to8T+aLO?d*@iPJ)|=_v$+R=7ZF*V$<9!j&*S| z&GcpKcny^fR!%Qu7iMwZ`SSe&QLxjbT-u*Xo=3u^Rhlj>eT}A)r{IbbLZjN}+0k5c zICE$+`x5%*UbMh=i69W*?zQj`PoYhO%)<`1MY{AYGPJHY z2$dM0+JQx7F(4QLb7>*s9LePmhM4tbj>NY$lJAlXWYvq44pKBsVo|HDR&B2)w7cZYGHnx=D`CrsVdtTJX*Cj z6;yS3CA$=+$ZfLMz#-md1>S1f58m(gCp9_GU<8aHMuUs$T}od>f$bCTM^D5N@`|v$ zcj8YJL9baZVdCnoLg$4Ze92bvA+T^rUi5{^az=_>Z!qchc1Qs(W65eTl-~sfcjM|frP-Uh(k^)~YCZ&^})s7EkBvOrz>WC9lr`-UbQH6>BQqLd@&*hOEkIsSe+O z<~gd#3zp%NkJQSeVkP;m_if;K*4lPs+4`#+tJ2_l^Gk5x%k(K6;N>OQ=FQu$+iST7 zoaNoirbTy(DMa&70-WvWMjSrIbDCUC!*-kHP8)O%C`EiI?8&3)nijXeYU>@-ty^Bc z$C;Gr9QWFNWi`(_S9j`XT#*rK5nJ_VD>gs(^S#c+KKHZrd@u)2CDIn}O!1Nxj?S(U z(?Zz3O4Z>s*OlSQIv_hx(&G!3EARVRY>n-hvF%NFihlzW@pF`dzOKiKc{mJLC@0X8 zJS-uZ_U&vs2?zK~oGtG#cKg17Kn zo&$pAMaO$fIl$!0plPw>MzJNN2H~cf(Ahc(2i93dxa1v3Q{`l{TxZ8UTCBUsp1y} zix!;xkQ;&HV-%OOA}}n4pM&(gG_H{*N}}sk??f{!=DhSoG`iOi$v9n*IZj*dE^}Ba ztUfc&wq#HI%e+II;p7umtjlZmNhQq;!x6h0)G*z(!^SV!vHo5Ny_KL?ZehfnvvA@4 z5Y9&R^4B_J*kZhrp5W1Jim6CFG^w&TaLbMk*l;+S&GvY0ht-&CeO~*xw6{;gyt{*SgZ73~`-R;#7OXn;An@w@3Y(rrGECK=HyL>^#Qmj-y*6!B zb|e?744xF9E9GbR+2CD;rq%c5r|x?xM9_o-Q1*$*V9RCC*Cu5SoBbG$)}M*W z3k)ceJS+6*nK*x!<~5?T9Gq>q$+>bGd7cY(Re!2)p&J~eZ(0M0 z)7y=kjkge|?>ja#$n{Yv6?d7`TmyrestuaaMEk(U6C>5%)l`P*$}}hF$L=YZs(g5L z(gYtk@j;ncJN2mDba=}qiK*Ce3R2x=hgi)6s;lGTuyU?Ig|v#uE)!t1^K&MYUApj-*THn)A=$wW+>TwJunl{IrD7%i}KaaC8l zQ^_xL_7v4Mkxs}?Ert{3%1&V){DWUvR%(%1g+gEo>&v<*r zzP&x1$^_lzHaaqjfi&IIM0Pu99dW*Aabta(H65Ax z3Qe9k=&=a5iBUlA1W^}I+_q(e;Qr#)U_WcJ@(xLk(8@`&4H>J;$< zI$BO*y?%#qo_Gc{8pZd#omR;dlyrSkz(eWfy)(&;|F(%&rF+D+1QDZkEZN0J7PptV z=D=|W@}`DyLKBjPigexW@Ud!jB5fq+Xo)4P2zur7u`HpYQ*DZ&f`%&97BPFCH)^MUq z`(7{D3AR!hNII4j`Qt328o>NbDR zIn7&KiyH&3Pv$=SP;pY8Q_GAZKQ^Ycq`-275U?egE}+ZnohZkf!Vvm#t(&}WT!^;T z3kR+@J4$Tt9`Z?x4oGp!EltXhU*mLYZ7!dCu4cua5C?NZovS{qG8+Y`niCdYbZehi zwNZ{kfgsDX<77#p0VjyEnki#V8?&hFNSb$E)(OkzXDON<+lft^{h4!*uxS@$*t+;? zIg9LwBD(arrN)2BNVe+ZGB4u)#OlA5>&^u~_EqoWNK@?GW#x@y;upqVZ{o{VIef_} z$7*v7N1$KLAvT_B7G2&neI^%$+l=7wmfrbEV$GFdYP<3-+N!1!;gp!fDWr?loAobVJE(1Qn;9soK2`^;mv(Ug&v|E_5?FbjQSC}i z{xX4IIg~l~rbi2KJ4bXFRvNKYCWYHKQ*4L2loX?)^J=Mb6(OYJ2-*^E{dCTif?dwOhpPZ7Na~ z>L%nFtiOB|33al~t%wz;P90CkFrb|4N&&7Y1v92!b(-K?zw#B z6fOPAI3_4?zfqjwd4lOvR(oBET3V}0QC-x1z!|r<;z4nW*X5fDt zuzu-|J71+!@3pP9t~F7ZS#KxD`~Li<<#f-vV(MnUULU0P{7I>PLi5o;=B?rjCYpU@ zUK!uLbgl=h<-_i7cPSe-Y9p5g8^rCEFTG8{Q&8HoZ6Ey6b zWQN%r?_>%~m1R9SO9=|kC-ARK-q$Cg@=VA7O-9IK)9EW3&5CXvVR$DPT7Ea%B_{T? zCART+`R8pjZpk!S)eEQeHkPOJ*TN;#;z(tN=EWt)3YYB9QZeuS+BxfVaiP`C$eM!z zuE)}~tvvd$Gyo6TsyaWkvQe=M?BWc4&%O81C5^~}`1P)-E7GUj%<(J;AtKGbWSKXb$)lRq>7&~wKQSE;ZD;7(@)-i+S~HP(}CT;_^_Db zEi4b~^~|%c7q+?As6Bm>y=-ZTz3P|FR`+{YotLSj-3}{zn>LTOnXU8^DSZc&K-u)Y zCub`aT(+3$l;Eobg|^ijpY2NtX8jyz=jx=%6Bw4^`@E7j>lAO`yXt^)7VXWN^CISF zxgB2Ja6cwmZQZ)w9X**)+5c?{a=Bq7}uuXmR!R z5|gJN0vCEFm{J0}HG{k$MWT91Cz4%O-{j?Fn0!#|QOeyUCH8(Tgv@~}*3SCRB zG!mR_R5QgT_0gqmx1P>&-T0zL;hIdLdE|4Rs`}OO)VCLcG|hz_EV1sJx&*Hfw>BFl z$TATm!oB-amaWY-ExLK0?y{R9ZDnb~N4pLClIz>3pBlRK&TA0J$lSZF?5=G~L*jCl z9ydiF$#)IQ18O}pVysonHEXr(oqM?*9S&?zRbSa4Qk-(~^oj@ix8?LcI`FDx$SC^k zUJ&}Uc!qen(nML?m?Vjr52CiQ)bm;0QwjPkv0~Z6r!R#COP0RUPk2=&75Eins}@)m znq(^e<$XF`-))b4kL;)Cjjl?!+vYfNRhjY`#z;x5s4S{HaT>c*yf<>sN2#<3T^Y*W zwd@|Wcil}SN#FIVZFykY*K@b%no$y?`;+TzXU#;Dp62Dbzci1_ZnaZJTjuTT{afa8 zb2sD&d`@_Mh%Uq_GV5Kd_R~x;NyfL;wk-|<(qW&{k56*BXSvVKO()Ie{H=?{Pjbuj zBBM9*&&|`9EVZy>q*2^?Wn-knWzFM8N#!v&!(}52tXAzaZRZc!u>T0tZJm_FDr)vM zv5q{P8-5YZgi+KZ>M??GM3U+YVv9O}ZuQCy%F&9upwNh{_U{2h0^oyxp;IIWfBydA zz#k6$;lLjb{NcbK4*cQ39}WOuD$Y37WGRiMi5S&GlOaZqp=9pOGj01toBXuZ%6A`1l3d&VUDUZF;g+B0@&`mkLa(! z;E|)TlK*z^Q62Etlfe+}sE-deR>rzIJI16F9?Qb&Ybr5#1blQ4`$urmHX576ux7G$I}Fur|{euO_fGKV>@ z;lrHP@Q&(HTrh+OO|K20gYdi??u)r?5EwPjSg=OEN3dNt%)t(6F2({4!vL?wniD{?3E1~O+nVulbgcA$<-Lh0 z0kdAgj6pLCSaQf=$oF!L)Hi-U{0#ljEFWerN&iFop?O0Ln)Mr?ADY+0e03y$nD4Lf z0p&FnqsH7d1hI^WV^{}lr{i(I6a5taSx7Qqp-wwsKlSd1EchMiM|^hzF>@f=9NozP{d3dGNc_k9Yu&zmGYm{nhA)>k-Up zH8-3m@C^FZJeZx*6tq@>V+i4=#}N}zDlG1V^QhzEuSP#K=Zk%;EWzsF+;7mo!Jt`N ztnmIFEb@pAJ_kbm8~V26_0TjE2F>1n(*}Mu`j4Bh#=5&YzrmC8qOZ3X`}p=1KKFwr zl*dg!G!KClKDa{xGZ6l_(N94f_34)n?8fIj8&BCCmy5FY$BSN4_cg$rS|Gz>%D(kA3Fu9I zN8{hHj|U%6ALs<vLh`-3_Z8Uv$kW(SC_jbfx1jvz`amf^BmeoC`j2Eh$4phm z_3aTKPFSq{W^Va2^yk0s#r!UIVo!^EFlg3ufWE;WB)D(VjFrE*kA0~wA9(#w(2v?7 zG(pzCCK}&50Gd{X)4$<({|x;Z&w8*0o0~9bjuqSG(S}{W*M(Jo>cila{JZXNr61xC z&8y;TdU##RxW7F#V>?VHOF{T&>7T!;34>Rn;9hWJ6Q*R`f*m;5i9IUp!CKl$*l_NW zOZgf4p?NwCnuUXFoRVR_wxSp-e|{hT=4g$GWPC&0_K$uexj8glOCft8{44ZR_%H|Z zLu6YsrtR8>L36s;yN|=`#Lv)=FK@C_ZOj@v9SRW|vXXyV1_n%nfkChkk^XnSQh`JZ7RYs@#Y2aei0&5$#CNqo$&eLh7jD??^w| ze>`cq9+#6rfzPOPQ(pc~^dmX1^IAR(UO|TMkyB{=UidTg-+w`#{|xQ#NBfQD1&KL> z{U4eWqPjR%|NPh96EGy(MDpF(<4#yjc_Gvb_`!s12t$5`erVDjgC_Vf8T}SadJK=^ zwmY?9Z)*nkpwapOeG{}!N4h3|&2!`X8E7qY+DZ+B*91VhZUWxNjkU)!gxqg_{tW#n zb7LzBtAg{JceP`97zeME8!2YR<&H>i1g#7Hl85Uoq=$iYOmJD|i23|C1peT~Q2PJZ z^?#r~VB!Co{ukO;LhTXhz8QptdCzv%bZ0Ykc9NY@eR|G{~plgUyBZrBFy zBb`WiO(wn$Lwz?{|FaW@zk~0Kfk1hxRG(Ba;2=b%|s?l zhx=1;4y$>3B9B;O597kH#|f8zNsn-gJYt18tmf{4a-vu=?$n2zR`c~D-KU?~YZznL z`Nv-)9N|@bnByAW9w^^DXe>(gHukvVm}f%%afJRK1)#l+n4|U>!rgc&O&`40cvL9p z>>o-y(vNl~aICZ=^A3F;sXsI-5@Wo4bmuZ=yp+0cq<$PFIXW|X-PZyObJ6+6BRMUS zRa0C=UN(MyeYCV=y$g5K#m{>qooU3ss*>jz(oGmIO;3`pL0vo8&x|i$sb1`2<5{1F}dp`KMiX56T4 z;=ciZL<8Cz9;xU4Z}T73X{5_W@#qOLs-4BZUmGDP6q4R)4>&(dCCoI+sJ1_Sm{PWVHF_-nT z#ypQO-uc5=?U%wwN{HIPNSud0|1AE!P)`ZXL6Q9kq+@L*Giez7zZ3uQ%mGpTL3U#( z?nnHmq(l8&d&^hs)x*2+jHm&$*TRd>TmMe{k-Zfk?eE+4xa6TXY>o9J{E^OBSyeCA zHK;m=>+ODm=b=+C2Vl?c-oQyjy!+n#^GEduwAVCX}`EU%?;gYr*U0aT`3t@g05!WUtf&tmr}FQ1pL@e@Gm0 z;B3Pp&1P(~T`P7jnuwKG_hH>brnEo8AI)EG1?|JfU^EURk8nokRZyKKpBWpD??_q> zY+8Udet!S|#-E~>DWKkjt=Qdy*&XY^ird~O58GCIvLPsB+&5t?e zFs$y6r~VA(KL!7x;qe>fv&-YbeDP|JK7aTbbqXE7D*kA_;I&Nzdyx_~Y`mi2O$mR5|D^;XHb-sneAUpp zkA9zy8mvFaKI6~S>5*ws8?}aO0AHPD_&gcSM}H&-`VszbKJ;O(r#mpKBkkXK=aU^+ z>AOL_Y-F?SqT4Pk#BtkCd1Uh}D!>LmYl&oF=q%ii@E*zk@5v8Qvq9%PNBU8k6IsRx z=S)byd)yw%CdZ2}1#e17ksm^NdL`0z?;8y%O5$HEL^4z~CLsAO+^_I-Ud`WI_9T5^ zPVkGNI}9B(Z$Wkz9M?kmxhVA^qh%9jK)uO$$2B}XQ31AC?(K`%lfNU0sTs26}jn;Zqub%%$J;LGkDK~7t zJm&|f$FbUUDc$|V^M}T?tw8Rt{@uUGE>6O^gBavvmbDyPS7qVje;0vql=k-JBg{&c zwF~KQd?+gzmgB?gm+(xpD;6DWKg{2cI)mG)K#9>A@6pnX%!8g|jyYmU&@T9+_)FN^ zg4}W0Nk{iy*ebB&`XwXri#z2qs@w(Hp!)=E)*u&u+6|@|-(ELGE`!!xXiwH>C$wV@ z_h%bER*fkq_#S@IN9{(%59u{f^oQ_u_z0OT1&{HBNZy6;eDx^h8yPR6|38f%g$85` zp&0G~jg+_iD)=Ehy|#&dW0&Y3!w>F>BfCjx-v@d08_JSKtuGWFnn1nM+oxQIedm7) zKkF5&Sa$RUT<-wsD5 zMb9^&UL>U*|C`@;fGO}tLFVl-b$`%4GeuwNd-y#~zJ?vxyb!_}URTD`KY#E0B0Rr$ zKgD?QLvmVl#|n}gB71?h@{@7Bt-k|5G=`65w;Sobj_3Qfcaq>%a*$xVl zA2-$2;&v2J{-4DU;g$mXLCfV#qvD79@q(<|2sG}#ho3LB--z~-gts;Ql6ZXg)OBxBA{YRL?A-{YHdW{26!LZZW05`x*RRK^+eNOPzRoKy8BJFDGJzP_vI*9g3$K#P6T-MFgSlQDIthxT<5BC)*{2Ob1iTBR%4;<15{74!HB8Da! z>-RUAzyE@=zQot(7d(H#_4y&#Ptj(*lG!I21p^XTbBM=zJ`)H;>ls zNG39xYiq2B^Z6y%(DKn*=!z%Q%|vpnAwC@HIwCm$Sq4HqEN*Bz^c%^*(0%|qe}U}U zA{(#Bb}Bw+9)ieN<&SnYAjEMyUOu|F1TXI=|oWli~am5=UhEr#;piu`Qs^|MU8j`-_I zk1D$uDogph$|v88GW3p262AY0>|PF~AN@x6|GtFx@FDlll~4Y{FQH89n=>k~ZJ_r0 zZas_0YiO9+O=RD!BM|IT=S=e8!Z={SK@!w@F|G?cgW0h|Q%csbV=0RKNDyA*? zy℘(aJ~t%3dhjMSTyF@s73Eg~kPB2LkQ!BR8J%DR@`~wBtM&t$a$o`ca7HHR$e1 ziu{F}giJ9HN4R`7oEz2Znd zHN=fZKZ<@?-iw98vt%K$WRHI5m67KVXr6@5SE7B*F+H?Hf#m9Fe;wI6r;Im4ipGCZ z%6C&2_*(y;n18|hbkN*y?{dbYH~cN({IderuRv!b|7nlrx@gV|$A=(eDZphRNgwFC zZgxGAul^g}Wy7pGH0MWi{~=3(KR^EmIWV$a{?jZNSss#8OoblVE~LmQc1`%FvH1Pq zTPOSn!;9-d-stB|kmsmme!jN$^ZN^xc1x?;^qbvPu5C zmKR*G)9OQT;khtUWzka-yn_(;dFj!l*2a2LbNwgM^VFz;_mp@PLi;8pINu}H)l}m6 zAs7^o@IAkOOWy^@?KsZeT}0BEeVa&74-EHKGR!16R^hObJ$=gip&^{pkl_4=1jh>! zyu+IW$HC$79k!Av@Vkheq!X6wNpL*IJzR5;p#BW$>D}u%Y|8twLO6Dl0u2>OU*5mL z%fRvff53(QwHF}J#tb(R{S^c5l!Ra|48^9t<5C=-LeDl z;XW)0o{jqkKHO_3!Ly{K00VgvsykzS-;wY;+gnKidlZJir-Jaqzl9I$Zq1h-QvH_( z64d`AMR=Q&-n`8Hrv8kCUsdvg1n)l?fDhLiB&hTA4SZsEAIUDLon++MN{Y=Sl4?E? zVLj;n2L3TKRZ>M>4hin(1;_^2$nxBm_N&aOVvo`bEV*&7;3^EWk; z)NEQvg%v&Dz=!%~Bxp+j_XyWv^;49Jbot;O5?p_M7d|Ru!RAI%*7L4!;17j2^f%ng zCi&^fz<#H6)b@q=V|uuaG*`V5_lvcfNZEPaL;445*p5ef8dwh|kl-D?`1gWq?{E8u zA^lr^SvM&T@*er5oG#MW=3Y`$-ABmh8>GjHSHJP7z7^#plRj6M<87AGCQwM}-+XnY z3n}fbrw8`We}{*CC*qTz&hnRgrI}Xx=q@ined&4FAN?&J!a`#f8oPeK5&7?>2+o_( zUKsBGF31#kC`9ux4(L%xnTG|_{aq#fdvKiB@fn4=>U_HHYe_d|}H0pRO>wB|>?tD_Ct#nk;A8DI++ z;_x0aXutC0-gQ_oymJ|rh3hS%^BL%Qs6T4566&aJgt`qLc%FgvG=zE6-dq43bX&rZ{r~pem?}^{% zSo@}U*!LI;57{vdGE^LZcg$?nH~2k7rB{H}=4_oL1Z$OI8QO8Y3R=*9F8v_afjF>5IQ`}l>3 z#lgKK#HW$|q~$vN{zO#o2JCnCw~veNx?jlc7vA|!gdXad5xdB364`1Y!ge{*cXz?| zJ+l46HXi1>>$CG(ev@!FolmIk;rJq)f6}A82nOn_{=J^@*C+|Yn&24L^p}vKz(64y zuaH^;AM})QOa2$st_n6%KALdOs}r3Q_!*D#1Q{v?Cx!TQqJ9V6{f727P}ttmh~HO_ zo+-XO?*T63M`I9jXzWS6aJVz|N)W8)t#})U>v;^~gP&2^ufzrW3Z?;%?&(H0=a5c2 z+CN4P>2IU_o$y{kw6}-aFtR0z_A-#{A3dWzNOUF+=`N#Zv=13^*c7)x_~ZQKJ|5AO z8y^nuG$ijEq5Ug#m-^8B=#KSo%ZK|q&^{S*Xq+bB3kdK&umsvUr{qWD+_RKh__&M4 z-a-5a^P_fu!*4HM2HL+vXL%_3J7NEE<`xmVo!*F*7QM!0++_M8{;>h~%6+d4>?rhO~6a7z%#aws(YyJ!{+%Pb#RIc M`< + + + + + + +libdigidocpp: Class List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ndigidoc
 CConfConfiguration class which can reimplemented and virtual methods overloaded
 CConfV2Verison 2 of configuration class to add additonial parameters
 CConfV3Verison 3 of configuration class to add additonial parameters
 CConfV4Verison 4 of configuration class to add additonial parameters
 CConfV5Verison 5 of configuration class to add additonial parameters
 CContainerOpenCBUsed on container open to provide additional info
 CContainerOffers functionality for handling data files and signatures in a container
 CPKCS11SignerImplements Signer interface for ID-Cards, which support PKCS#11 protocol
 CPKCS12SignerImplements Signer interface for PKCS#12 files
 CSignerSigner interface. Provides interface for signing documents
 CWinSignerImplements Signer interface for Windows Crypto backends
 CX509CertWrapper for OpenSSL X509 certificate structure
 CDataFileData file wrapper providing methods for handling signed files or files to be signed in Container
 CExceptionBase exception class of the digidoc implementation
 CSignatureSignature interface. Provides interface for handling a signature and the corresponding OCSP response properties
 CValidator
 CXmlConfXML Configuration class
 CXmlConfV2Version 2 of XML Configuration class
 CXmlConfV3Version 3 of XML Configuration class
 CXmlConfV4Version 4 of XML Configuration class
 CXmlConfV5Version 5 of XML Configuration class
 Cunique_xml
 Cunique_xml< void(T *)>
 CXMLElem
 CXMLName
 CXMLNode
 Citerator
 CXMLDocument
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..19b87f347 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,31 @@ +var annotated_dup = +[ + [ "digidoc", "namespacedigidoc.html", [ + [ "Conf", "classdigidoc_1_1Conf.html", "classdigidoc_1_1Conf" ], + [ "ConfV2", "classdigidoc_1_1ConfV2.html", "classdigidoc_1_1ConfV2" ], + [ "ConfV3", "classdigidoc_1_1ConfV3.html", "classdigidoc_1_1ConfV3" ], + [ "ConfV4", "classdigidoc_1_1ConfV4.html", "classdigidoc_1_1ConfV4" ], + [ "ConfV5", "classdigidoc_1_1ConfV5.html", "classdigidoc_1_1ConfV5" ], + [ "ContainerOpenCB", "structdigidoc_1_1ContainerOpenCB.html", "structdigidoc_1_1ContainerOpenCB" ], + [ "Container", "classdigidoc_1_1Container.html", "classdigidoc_1_1Container" ], + [ "PKCS11Signer", "classdigidoc_1_1PKCS11Signer.html", "classdigidoc_1_1PKCS11Signer" ], + [ "PKCS12Signer", "classdigidoc_1_1PKCS12Signer.html", "classdigidoc_1_1PKCS12Signer" ], + [ "Signer", "classdigidoc_1_1Signer.html", "classdigidoc_1_1Signer" ], + [ "WinSigner", "classdigidoc_1_1WinSigner.html", "classdigidoc_1_1WinSigner" ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html", "classdigidoc_1_1X509Cert" ], + [ "DataFile", "classdigidoc_1_1DataFile.html", "classdigidoc_1_1DataFile" ], + [ "Exception", "classdigidoc_1_1Exception.html", "classdigidoc_1_1Exception" ], + [ "Signature", "classdigidoc_1_1Signature.html", "classdigidoc_1_1Signature" ], + [ "XmlConf", "classdigidoc_1_1XmlConf.html", "classdigidoc_1_1XmlConf" ], + [ "XmlConfV2", "classdigidoc_1_1XmlConfV2.html", "classdigidoc_1_1XmlConfV2" ], + [ "XmlConfV3", "classdigidoc_1_1XmlConfV3.html", "classdigidoc_1_1XmlConfV3" ], + [ "XmlConfV4", "classdigidoc_1_1XmlConfV4.html", "classdigidoc_1_1XmlConfV4" ], + [ "XmlConfV5", "classdigidoc_1_1XmlConfV5.html", "classdigidoc_1_1XmlConfV5" ], + [ "unique_xml", "structdigidoc_1_1unique__xml.html", null ], + [ "unique_xml< void(T *)>", "structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html", "structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4" ], + [ "XMLElem", "structdigidoc_1_1XMLElem.html", "structdigidoc_1_1XMLElem" ], + [ "XMLName", "structdigidoc_1_1XMLName.html", "structdigidoc_1_1XMLName" ], + [ "XMLNode", "structdigidoc_1_1XMLNode.html", "structdigidoc_1_1XMLNode" ], + [ "XMLDocument", "structdigidoc_1_1XMLDocument.html", "structdigidoc_1_1XMLDocument" ] + ] ] +]; \ No newline at end of file diff --git a/asic.svg b/asic.svg new file mode 100644 index 000000000..4c8ad01f7 --- /dev/null +++ b/asic.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + META-INF/ + manifest.xml + + + + <manifest:manifest> + <manifest:file-entry manifest:media-type=" + text/plain + " + manifest:full-path=" + file1.txt + " /> + + + + + + + + + + + + + + META-INF/ + manifest.xml + + + + <asic:XAdESSignatures> + <ds:Signature Id="S0"> + <ds:SignedInfo> + <ds:Reference Id="S0-ref-0" URI=" + file1.txt + "> + ... + <xades:SignedDataObjectProperties> + <xades:DataObjectFormat ObjectReference="#S0-ref-0"> + <xades:MimeType> + text/plain + </xades:MimeType> + + + + + + + + + + + + + + file1.txt + + + + Signed data file's contens in original format + + + + + + + + + + + + + + mimetype + + + + application/vnd.etsi.asic-e+zip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BDOC 2.1 container (ASiC-E) + + + + + 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/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::Conf Member List
+
+
+ +

This is the complete list of members for digidoc::Conf, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
digestUri() constdigidoc::Confvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::Confstatic
libdigidocConf() constdigidoc::Confvirtual
logFile() constdigidoc::Confvirtual
logLevel() constdigidoc::Confvirtual
ocsp(const std::string &issuer) constdigidoc::Confvirtual
PKCS11Driver() constdigidoc::Confvirtual
PKCS12Cert() constdigidoc::Confvirtual
PKCS12Disable() constdigidoc::Confvirtual
PKCS12Pass() constdigidoc::Confvirtual
proxyForceSSL() constdigidoc::Confvirtual
proxyHost() constdigidoc::Confvirtual
proxyPass() constdigidoc::Confvirtual
proxyPort() constdigidoc::Confvirtual
proxyTunnelSSL() constdigidoc::Confvirtual
proxyUser() constdigidoc::Confvirtual
signatureDigestUri() constdigidoc::Confvirtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() constdigidoc::Confvirtual
TSLCache() constdigidoc::Confvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() constdigidoc::Confvirtual
TSLTimeOut() constdigidoc::Confvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() constdigidoc::Confvirtual
verifyServiceUri() constdigidoc::Confvirtual
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
+
+ + + + diff --git a/classdigidoc_1_1Conf.html b/classdigidoc_1_1Conf.html new file mode 100644 index 000000000..3d7a1406c --- /dev/null +++ b/classdigidoc_1_1Conf.html @@ -0,0 +1,1046 @@ + + + + + + + +libdigidocpp: digidoc::Conf Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+ +

Configuration class which can reimplemented and virtual methods overloaded. + More...

+ +

#include <Conf.h>

+
+Inheritance diagram for digidoc::Conf:
+
+
+ + +digidoc::ConfV2 +digidoc::XmlConf +digidoc::ConfV3 +digidoc::XmlConfV2 +digidoc::ConfV4 +digidoc::XmlConfV3 +digidoc::ConfV5 +digidoc::XmlConfV4 +digidoc::XmlConfV5 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Conf ()
 
virtual ~Conf ()
 
virtual int logLevel () const
 
virtual std::string logFile () const
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual std::string PKCS11Driver () const
 
virtual std::string proxyHost () const
 
virtual std::string proxyPort () const
 
virtual std::string proxyUser () const
 
virtual std::string proxyPass () const
 
virtual bool proxyForceSSL () const
 
virtual bool proxyTunnelSSL () const
 
virtual std::string digestUri () const
 
virtual std::string signatureDigestUri () const
 
virtual std::string ocsp (const std::string &issuer) const
 
virtual std::string TSUrl () const
 
virtual std::string verifyServiceUri () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const
 
virtual DIGIDOCPP_DEPRECATED bool PKCS12Disable () const
 
virtual bool TSLAllowExpired () const
 
virtual bool TSLAutoUpdate () const
 
virtual std::string TSLCache () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual bool TSLOnlineDigest () const
 
virtual int TSLTimeOut () const
 
virtual std::string TSLUrl () const
 
+ + + + + +

+Static Public Member Functions

static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Configuration class which can reimplemented and virtual methods overloaded.

+
Deprecated:
Use digidoc::ConfV5
+
See also
Configuration parameters
+

Constructor & Destructor Documentation

+ +

◆ Conf()

+ +
+
+ + + + + +
+ + + + + + + +
Conf::Conf ()
+
+default
+
+

Configuration parameters

+ +
+
+ +

◆ ~Conf()

+ +
+
+ + + + + +
+ + + + + + + +
Conf::~Conf ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ certsPath()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::certsPath () const
+
+virtual
+
+

Gets Certificate store location.

Deprecated:
Unused
+ +
+
+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::digestUri () const
+
+virtual
+
+

Return default digest type as URI

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void Conf::init (Confconf)
+
+static
+
+

Init global Conf with conf

+ +

Referenced by digidoc::initialize(), and digidoc::terminate().

+ +
+
+ +

◆ instance()

+ + + +

◆ libdigidocConf()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::libdigidocConf () const
+
+virtual
+
+

Returns libdigidoc library configuration file's (digidoc.ini) file location

Deprecated:
Unused
+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::logFile () const
+
+virtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int Conf::logLevel () const
+
+virtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string Conf::ocsp (const std::string & issuer) const
+
+virtual
+
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::PKCS11Driver () const
+
+virtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +

Referenced by digidoc::PKCS11Signer::PKCS11Signer().

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::PKCS12Cert () const
+
+virtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::PKCS12Disable () const
+
+virtual
+
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::PKCS12Pass () const
+
+virtual
+
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::proxyForceSSL () const
+
+virtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::proxyHost () const
+
+virtual
+
+

Gets proxy host address.

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::proxyPass () const
+
+virtual
+
+

Gets proxy login password.

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::proxyPort () const
+
+virtual
+
+

Gets proxy port number.

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::proxyTunnelSSL () const
+
+virtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::proxyUser () const
+
+virtual
+
+

Gets proxy user name.

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::signatureDigestUri () const
+
+virtual
+
+

Gets signature digest URI

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ TSLAllowExpired()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::TSLAllowExpired () const
+
+virtual
+
+

Allow expired TSL lists

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::TSLAutoUpdate () const
+
+virtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::TSLCache () const
+
+virtual
+
+

TSL cache path in local file system

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ TSLCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > Conf::TSLCerts () const
+
+virtual
+
+

TSL master list's (LOTL) signing certificates

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool Conf::TSLOnlineDigest () const
+
+virtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int Conf::TSLTimeOut () const
+
+virtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ TSLUrl()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::TSLUrl () const
+
+virtual
+
+

TSL master list's (LOTL) URL

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::TSUrl () const
+
+virtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::verifyServiceUri () const
+
+virtual
+
+

Gets verify service URI

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, digidoc::XmlConfV3, digidoc::XmlConfV2, and digidoc::XmlConf.

+ +
+
+ +

◆ xsdPath()

+ +
+
+ + + + + +
+ + + + + + + +
string Conf::xsdPath () const
+
+virtual
+
+

Gets XSD schema files path

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Conf.h
  • +
  • Conf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Conf.js b/classdigidoc_1_1Conf.js new file mode 100644 index 000000000..ed032727f --- /dev/null +++ b/classdigidoc_1_1Conf.js @@ -0,0 +1,34 @@ +var classdigidoc_1_1Conf = +[ + [ "Conf", "classdigidoc_1_1Conf.html#a143db233420f3d2ad3863c5320d6796d", null ], + [ "~Conf", "classdigidoc_1_1Conf.html#ae0f20490187026c7e09643ada9285b52", null ], + [ "certsPath", "classdigidoc_1_1Conf.html#a958ff82ba0c3fa74112503d1d04c9761", null ], + [ "digestUri", "classdigidoc_1_1Conf.html#a922cc1abc8bf097b2a57abb1950c1b10", null ], + [ "init", "classdigidoc_1_1Conf.html#abbfddce7554787e43e53c93865e17aa7", null ], + [ "instance", "classdigidoc_1_1Conf.html#a67297f85dafaa99edaffe700378a342f", null ], + [ "libdigidocConf", "classdigidoc_1_1Conf.html#a4ed6814f171d61c28009da0fb89f270c", null ], + [ "logFile", "classdigidoc_1_1Conf.html#a631845aa439f6bfc109e93bf2300e355", null ], + [ "logLevel", "classdigidoc_1_1Conf.html#ad272071b578c116b52ad8611cb8d3439", null ], + [ "ocsp", "classdigidoc_1_1Conf.html#a5c3d07aa418a11651486b9906f102036", null ], + [ "PKCS11Driver", "classdigidoc_1_1Conf.html#aeaf4e0e2c0dc1230929836be48955d4b", null ], + [ "PKCS12Cert", "classdigidoc_1_1Conf.html#a19f8593e318d0f8aee71b1a3aae7dbf7", null ], + [ "PKCS12Disable", "classdigidoc_1_1Conf.html#ae3a1d76e323014346a588fe8f51c2bc9", null ], + [ "PKCS12Pass", "classdigidoc_1_1Conf.html#a8743bba8092cf19bf678ada33ef709e2", null ], + [ "proxyForceSSL", "classdigidoc_1_1Conf.html#a48741be9dc808466db22346ace40ed35", null ], + [ "proxyHost", "classdigidoc_1_1Conf.html#a8c8d51591ff71787af7cc70979ca96c0", null ], + [ "proxyPass", "classdigidoc_1_1Conf.html#ade1ec10ab80c549bb6a1e3c7eb81fbce", null ], + [ "proxyPort", "classdigidoc_1_1Conf.html#a989c1306f421eddf53e31e91c16b011b", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1Conf.html#af2424fdacccb6beb013a0ee0968d79a0", null ], + [ "proxyUser", "classdigidoc_1_1Conf.html#adfe3912ef50c80008f33ee3e122ddc4e", null ], + [ "signatureDigestUri", "classdigidoc_1_1Conf.html#a310e6746c9b35a35be95a3e030d14b78", null ], + [ "TSLAllowExpired", "classdigidoc_1_1Conf.html#a4a3657eff3e31fae297a72cee853fd01", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1Conf.html#ad5629b16f518d2ef565675fea6250dc8", null ], + [ "TSLCache", "classdigidoc_1_1Conf.html#ad915846ce969b34f8a998b674e1ff4d6", null ], + [ "TSLCerts", "classdigidoc_1_1Conf.html#ab9f072db46996436266d3f611414d7c5", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1Conf.html#a76de09d59ae378d2c8b75bcfa23de406", null ], + [ "TSLTimeOut", "classdigidoc_1_1Conf.html#ab1cc695358149c2d9f81fc14caf4f1fa", null ], + [ "TSLUrl", "classdigidoc_1_1Conf.html#a29c8ee1c698539dca1dc24c0fb0193c1", null ], + [ "TSUrl", "classdigidoc_1_1Conf.html#a49ba2d56ab3236c25a121bdf04f4ec9f", null ], + [ "verifyServiceUri", "classdigidoc_1_1Conf.html#a25c8c14a502f621371f8ec923b097d6e", null ], + [ "xsdPath", "classdigidoc_1_1Conf.html#afa6c9117eeb005bbc0a5ccc90078ecb0", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1Conf.png b/classdigidoc_1_1Conf.png new file mode 100644 index 0000000000000000000000000000000000000000..7f01e68576e4a05b8a2a670eb2fcc71c5f4b62a6 GIT binary patch literal 2913 zcmbtWc~leU7RS0kQACeV6f5BKRZ!4?nFb_0K!FfKgs@o%BrIVGB=3v0MNe)2d2`O3d%u}G-*@N!es{Ux zPw=rYUuAA$VqyX9+`iAmWDWvuXS2EB$ynj8H9)NN_dT$~U@!o+Z(!^+Ec^~=ukXi? zAJ4zgW($^Pr}h!{n*bx@^`iQKtBHxZ8ruHZ0mdAaTopC!z35-{Px;n^2A-v@1$qf1 z%i{b`-)JI<%BroK?;Ez#C&D+S)~23WaOfph8V=vJQZ4w-FwLJld!yJV@S^E`F9n{wyw&dZQ#a^DE>k3D;~%pE$u(BeuCb}O?;X7%BVFxWpMU1as)(=b@Q;>1P& zOs&}%c=lIV z6u--%06|YK1%bRi>#)`S60d?0JbyRunREaLxl%l$SIZ5-X*7j$*_yQGluK=i{n;3M zabge(_S)@w(v-b_O>?oKF@*Q5WQA~`tnu+NqHU)p5JFt9j*CjKmiO`7$)`MMadiQP z>6!hg%!M5V66WAc2~Mc&XioaEp6OCnb%jdxDX zgCR-8gDbo)q)n6D)pm5Hkitl#9)<3&hZ!82ne9G!cNv*?yK>vuMC%e9g|vsaLep1% z744LbwHL!DX6Xc2?6#;- z{JR;`Yv@}mlwSB8EUtrgL~xRomd5mB zreSW@At}EEeTc8nTe3K;SGOvso-p(e5pJtU5oaX9VQ)YJNq67Dc9D+f+gfPcp603F zoH3J_7mpus5kGL~!b44;KMCQ{*&PkGd*J}tA>P9?Y!vC?D1}LEU(63(KG>u@DbPE^ z(6G0@Fwb6G69!Z}Pz-kb7E)tm7gahxyg;&=$N4zu#5H##{_>)oKM>dn!vpR`J3j_W z#g?Gg0KCEBeS+a8Q$_1yuf-1yZ`jv@>hPI`?S1CILpuA8^u&2lWwCT|r86fLIP?6A zoxEb_v1Bwg>(A89PZri@r5jR+yim#UalnSMd&<61Dvutdov3PP_QQ?Ze$$Il*0Ftg z*2NeUT@c!|SbDW*6V%f-nv8ZEbinEc-M_?Vh`DhsN=+@cylA9-0_8`VfQFn)Q%fp( zZ^iBE5BZ%9rpn2A@Oct8r|Tz=x)yh;vM+SvFzn~ZWepw$RLEjTbd{M}Pe}X)RbTDb zPa{iiEI^G-JZo4H)NKJT)NpoT?{sT!9leuu?*%4lEIHg>MbZ=?R2GKA3l-I2CH*rr zn7`uIZ+xiW%mjGb4ly|B3|L*_C!5eYv2@kmlH_!6LAF9W(beFw7%}biqFTna0OW&y ziR0aVauz}NYK1pfe08R@P2;Jk;)Na@WO6hOnccMeGiY&Z+s{a|;|v*;)YH=^K~)em z0u?|McyYE=Tc0B{mQ`#toA59C@0PGuyDOBkh|B)zTC;9xSomfCG_6@&e9_T_E4a*bsm-Kh%7Orjmbkf!enMFhO;B zyMIw!zE0h?+2Hm7El#T)tFQ<28$7ZqK~MCp%oFIIYSV}G0iY_ITK4G3?C zvG*$edU~CB)kcPIRHPG;YeJ zaC~`f^vZJ`vMqBrIHScu?{+WaD7FlK1Aj`PQaxI;EiPXNm>_Qn)5nUMuV~Fqy1Yi7 zfk~_@-)upY(=xo-dqM3J^=Sg#&!>?_wV#e23~!E-&?!$j$)&o%!1(-0)zU+~HOe&| z*_Up$6Pp60Trrl7_ga-J$$|4kuOf_IP~c@B2_9Xvp~Y?|$hs@N&>P-%pcx=kiUoS3OJ>SN$ zu|bAzj81mVWOdUxf$W6k)>r`M#e8R|2?Y8Gk(oA>2@S6`PI0HP88PJmI4~9+qy3i4 mZzqLuwlhLE&s|N|&y9@g;TzT#f^pcy1lmE^erN0FXa5KAs1rQ^ literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1ConfV2-members.html b/classdigidoc_1_1ConfV2-members.html new file mode 100644 index 000000000..a534b91bf --- /dev/null +++ b/classdigidoc_1_1ConfV2-members.html @@ -0,0 +1,114 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::ConfV2 Member List
+
+
+ +

This is the complete list of members for digidoc::ConfV2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
digestUri() constdigidoc::Confvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::ConfV2static
libdigidocConf() constdigidoc::Confvirtual
logFile() constdigidoc::Confvirtual
logLevel() constdigidoc::Confvirtual
ocsp(const std::string &issuer) constdigidoc::Confvirtual
PKCS11Driver() constdigidoc::Confvirtual
PKCS12Cert() constdigidoc::Confvirtual
PKCS12Disable() constdigidoc::Confvirtual
PKCS12Pass() constdigidoc::Confvirtual
proxyForceSSL() constdigidoc::Confvirtual
proxyHost() constdigidoc::Confvirtual
proxyPass() constdigidoc::Confvirtual
proxyPort() constdigidoc::Confvirtual
proxyTunnelSSL() constdigidoc::Confvirtual
proxyUser() constdigidoc::Confvirtual
signatureDigestUri() constdigidoc::Confvirtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() constdigidoc::Confvirtual
TSLCache() constdigidoc::Confvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() constdigidoc::Confvirtual
TSLTimeOut() constdigidoc::Confvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() constdigidoc::Confvirtual
verifyServiceCert() constdigidoc::ConfV2virtual
verifyServiceUri() constdigidoc::Confvirtual
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
+
+ + + + diff --git a/classdigidoc_1_1ConfV2.html b/classdigidoc_1_1ConfV2.html new file mode 100644 index 000000000..5fa203e61 --- /dev/null +++ b/classdigidoc_1_1ConfV2.html @@ -0,0 +1,304 @@ + + + + + + + +libdigidocpp: digidoc::ConfV2 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::ConfV2 Class Reference
+
+
+ +

Verison 2 of configuration class to add additonial parameters. + More...

+ +

#include <Conf.h>

+
+Inheritance diagram for digidoc::ConfV2:
+
+
+ + +digidoc::Conf +digidoc::ConfV3 +digidoc::XmlConfV2 +digidoc::ConfV4 +digidoc::XmlConfV3 +digidoc::ConfV5 +digidoc::XmlConfV4 +digidoc::XmlConfV5 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfV2 ()
 
 ~ConfV2 () override
 
virtual X509Cert verifyServiceCert () const
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual int logLevel () const
 
virtual std::string logFile () const
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual std::string PKCS11Driver () const
 
virtual std::string proxyHost () const
 
virtual std::string proxyPort () const
 
virtual std::string proxyUser () const
 
virtual std::string proxyPass () const
 
virtual bool proxyForceSSL () const
 
virtual bool proxyTunnelSSL () const
 
virtual std::string digestUri () const
 
virtual std::string signatureDigestUri () const
 
virtual std::string ocsp (const std::string &issuer) const
 
virtual std::string TSUrl () const
 
virtual std::string verifyServiceUri () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const
 
virtual DIGIDOCPP_DEPRECATED bool PKCS12Disable () const
 
virtual bool TSLAllowExpired () const
 
virtual bool TSLAutoUpdate () const
 
virtual std::string TSLCache () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual bool TSLOnlineDigest () const
 
virtual int TSLTimeOut () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + +

+Static Public Member Functions

static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Verison 2 of configuration class to add additonial parameters.

+

Conf contains virtual members and is not leaf class we need create subclasses to keep binary compatibility https://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++#Adding_new_virtual_functions_to_leaf_classes

See also
digidoc::Conf
+
Deprecated:
Use digidoc::ConfV5
+
See also
Configuration parameters
+

Constructor & Destructor Documentation

+ +

◆ ConfV2()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV2::ConfV2 ()
+
+default
+
+

Version 2 config with new parameters

+ +
+
+ +

◆ ~ConfV2()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV2::~ConfV2 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV2 * ConfV2::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ verifyServiceCert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert ConfV2::verifyServiceCert () const
+
+virtual
+
+
+
The documentation for this class was generated from the following files:
    +
  • Conf.h
  • +
  • Conf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1ConfV2.js b/classdigidoc_1_1ConfV2.js new file mode 100644 index 000000000..f71e0b953 --- /dev/null +++ b/classdigidoc_1_1ConfV2.js @@ -0,0 +1,7 @@ +var classdigidoc_1_1ConfV2 = +[ + [ "ConfV2", "classdigidoc_1_1ConfV2.html#a9e33d5f2cd57315958bcab64d0638d14", null ], + [ "~ConfV2", "classdigidoc_1_1ConfV2.html#a0ca0269bee7dd5f3585e284a217946e0", null ], + [ "instance", "classdigidoc_1_1ConfV2.html#a675094090e1a85c66e7b7013816c09da", null ], + [ "verifyServiceCert", "classdigidoc_1_1ConfV2.html#a5376a9c52bc6de08d4ae087af233fc0f", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1ConfV2.png b/classdigidoc_1_1ConfV2.png new file mode 100644 index 0000000000000000000000000000000000000000..7d008e181fdcdd377317c5861bcb41d514a93b21 GIT binary patch literal 2647 zcmc&$2~<;88ooiPOQcxQhXpHYqsR~zsUpZ$1S$bpDyBTbB7qT*T_B+BN1F&PfDr*j zKrE1efCfwuF%kpFs90JkR?J51PDUrpJOB58 z-~G~Eoe!w2)>sVyP{G;T9s&SGM!Mn3Wynl~tl&O!+vs}mu$^2kM}}|4r%9RIEM&CQ zIUJ61`hXVlxH9IDvl~DbDXyL;hm8POCBoTSA3lK+7YL~}`_?aif!i=4|C_os=CjC$ zJ!Z3Fcw~>}GMsY}CIz*q?4Z-K{OgT+_Ea*QrkpBSiw5C-D2@{r+&vjAG|HYU8g--+ z^cN0L3BCP(sGuh<5T=}{TVXT*y47g~<2G-9QA-_r5^gA4(3^MXTCk*F+~S2skYT<* zF-;h=Q!hA94}XQU+r_?9L$P|pU~B(2E*hZ{;DL{wQDd7Z9d>2)BFt$Ob=Q7FqiDizRhy(XCRhn0~Qj?>h7u z7Yr``D+coW!&@ORpx6`!k!}t;JAe{r;tfzry$A!tE>Z^=+zx@ZsdYC{90x3zO6*ThVQSX>w zdNUA~E2mPbuB(X8X`SKseUqEn%B_XZdzhC+dge#na~4+^-%+G^U{o@}0JmERkm_-- zTln%M11BlZWj7SH4Ha5L$}#_DUKld>-l0eYD+Q&I<*nT56Z>N4zTn8!c?L|zJ~(Dg z)hJYX`93y+Z&B1m*jO8I@CwU#$h9C89~LAw^C_zD85YEOm>5qjEJO>MB&IjX#AjWn zAZ9Fkx`NhQQSZR<*6w^*93j-QbJ`(oAATinhANaTdi!H;Mkki?I@pnsZ_d~RG;v20 z-?A4|$vW;<0mOcEXX#(8c!A07S~a(4Vl9J<_l>D~&|kfqp4neT)b)xU72kQU*WB(d5eT!qHma!g;h<5Ef7Z9nTy zFH4gt^>K0wCAUO%vWsLTSryn*r;ht=g%k}%cSKOp zDP6Cooxhyp-icZczGML3vN42CNF;A$yX~^n%P^Q!Tk%gF`8^B=-DAA_=1{XwuWbXr z;RQn5KPr$9!S+Vq;_O2{Wx5F7raxkU*Lqxyt7jGljc9>J6rGGHowAc}N6v9X-mpL~_4#WYOBlnZB| zel|c_7d4z?O&;>_gYoe&? zBmqqo)vU9?#jns+DCcRLTh2+o)f0~nTF?l zhQHL^Q4l8NKku2RJ(w4LWf>WaZn{QO)(aNLkKtXa@RFpVn}N-p+=s;z9rw>(Jve@a z7YEa!DcEz9;W@l}(rD7{VIPEuO~rLY;!#U{ot1C#lX@PUCp{HY{=`L6e(5Jw54ce? zIik2-yZ}*nR#67s8Z0i!YL}E?Vm|en+P|yFfRC2g)zQ6cgT_0qu`;Wk;wSDGsD8>m zt}~v;Q-`y5=U#q;>okKI2*E*Y{!dZ+XbFC3~bD1!i+ngGv#4zi)ATTU>;d(_f{A1Q&0_sb15cR#tP-AOlaCqL=T?Lg@?@<_oKxz0hlk&9 zMfVh@k^3gd+R*4rMt7XmLqF8@p#b6oe|6^Ag?-W!cdwJabrUtrydn{a@g7(ZeFbZO z_32MeSX_iQR0s#TY{tpfGA2U}+5#zz~_{xCU)I5f=z>cFwld`+ZOS0&V`Og8%>k literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1ConfV3-members.html b/classdigidoc_1_1ConfV3-members.html new file mode 100644 index 000000000..232e293c1 --- /dev/null +++ b/classdigidoc_1_1ConfV3-members.html @@ -0,0 +1,117 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::ConfV3 Member List
+
+
+ +

This is the complete list of members for digidoc::ConfV3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
digestUri() constdigidoc::Confvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::ConfV3static
libdigidocConf() constdigidoc::Confvirtual
logFile() constdigidoc::Confvirtual
logLevel() constdigidoc::Confvirtual
ocsp(const std::string &issuer) constdigidoc::Confvirtual
OCSPTMProfiles() constdigidoc::ConfV3virtual
PKCS11Driver() constdigidoc::Confvirtual
PKCS12Cert() constdigidoc::Confvirtual
PKCS12Disable() constdigidoc::Confvirtual
PKCS12Pass() constdigidoc::Confvirtual
proxyForceSSL() constdigidoc::Confvirtual
proxyHost() constdigidoc::Confvirtual
proxyPass() constdigidoc::Confvirtual
proxyPort() constdigidoc::Confvirtual
proxyTunnelSSL() constdigidoc::Confvirtual
proxyUser() constdigidoc::Confvirtual
signatureDigestUri() constdigidoc::Confvirtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() constdigidoc::Confvirtual
TSLCache() constdigidoc::Confvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() constdigidoc::Confvirtual
TSLTimeOut() constdigidoc::Confvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() constdigidoc::Confvirtual
verifyServiceCert() constdigidoc::ConfV2virtual
verifyServiceUri() constdigidoc::Confvirtual
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
+
+ + + + diff --git a/classdigidoc_1_1ConfV3.html b/classdigidoc_1_1ConfV3.html new file mode 100644 index 000000000..7efe27481 --- /dev/null +++ b/classdigidoc_1_1ConfV3.html @@ -0,0 +1,314 @@ + + + + + + + +libdigidocpp: digidoc::ConfV3 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::ConfV3 Class Reference
+
+
+ +

Verison 3 of configuration class to add additonial parameters. + More...

+ +

#include <Conf.h>

+
+Inheritance diagram for digidoc::ConfV3:
+
+
+ + +digidoc::ConfV2 +digidoc::Conf +digidoc::ConfV4 +digidoc::XmlConfV3 +digidoc::ConfV5 +digidoc::XmlConfV4 +digidoc::XmlConfV5 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfV3 ()
 
 ~ConfV3 () override
 
virtual std::set< std::string > OCSPTMProfiles () const
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
virtual X509Cert verifyServiceCert () const
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual int logLevel () const
 
virtual std::string logFile () const
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual std::string PKCS11Driver () const
 
virtual std::string proxyHost () const
 
virtual std::string proxyPort () const
 
virtual std::string proxyUser () const
 
virtual std::string proxyPass () const
 
virtual bool proxyForceSSL () const
 
virtual bool proxyTunnelSSL () const
 
virtual std::string digestUri () const
 
virtual std::string signatureDigestUri () const
 
virtual std::string ocsp (const std::string &issuer) const
 
virtual std::string TSUrl () const
 
virtual std::string verifyServiceUri () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const
 
virtual DIGIDOCPP_DEPRECATED bool PKCS12Disable () const
 
virtual bool TSLAllowExpired () const
 
virtual bool TSLAutoUpdate () const
 
virtual std::string TSLCache () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual bool TSLOnlineDigest () const
 
virtual int TSLTimeOut () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + +

+Static Public Member Functions

static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Verison 3 of configuration class to add additonial parameters.

+

Conf contains virtual members and is not leaf class we need create subclasses to keep binary compatibility https://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++#Adding_new_virtual_functions_to_leaf_classes

See also
digidoc::ConfV2
+
Deprecated:
Use digidoc::ConfV5
+
See also
Configuration parameters
+

Constructor & Destructor Documentation

+ +

◆ ConfV3()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV3::ConfV3 ()
+
+default
+
+

Version 3 config with new parameters

+ +
+
+ +

◆ ~ConfV3()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV3::~ConfV3 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV3 * ConfV3::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ OCSPTMProfiles()

+ +
+
+ + + + + +
+ + + + + + + +
set< string > ConfV3::OCSPTMProfiles () const
+
+virtual
+
+

Gets OCSP TM Profile OID-s

+

OCSP responder certificate policies that are used to identify if OCSP response is given with TM profile

+ +

Reimplemented in digidoc::XmlConfV5, digidoc::XmlConfV4, and digidoc::XmlConfV3.

+ +

Referenced by digidoc::XmlConfV3::OCSPTMProfiles(), digidoc::XmlConfV4::OCSPTMProfiles(), and digidoc::XmlConfV5::OCSPTMProfiles().

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Conf.h
  • +
  • Conf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1ConfV3.js b/classdigidoc_1_1ConfV3.js new file mode 100644 index 000000000..dd39e233d --- /dev/null +++ b/classdigidoc_1_1ConfV3.js @@ -0,0 +1,7 @@ +var classdigidoc_1_1ConfV3 = +[ + [ "ConfV3", "classdigidoc_1_1ConfV3.html#a902f6cfcf55cf70b66d4ad499c189c7f", null ], + [ "~ConfV3", "classdigidoc_1_1ConfV3.html#a1aab87c6134531391988b0ea8d00ede0", null ], + [ "instance", "classdigidoc_1_1ConfV3.html#a2899236c5d847928b6fae19ce019f383", null ], + [ "OCSPTMProfiles", "classdigidoc_1_1ConfV3.html#ac66b548f0e7f794dd5f9fc475becc171", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1ConfV3.png b/classdigidoc_1_1ConfV3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a27d3d34162ab5a39ff204731906fb0941dab53 GIT binary patch literal 2394 zcmcJR3p87K9>*`E9lg|}qU^SwLutE)Gt(*c2=!QlifEFm&=^(P5s%O!(0NCyJwev{;kaL8Gh2kgh%<`R-bMQ?YeFEzulgVH?F|!<#&dY$+ zKL(e}-H|$|2R|xaI*Gyn@TTpn`w8|7cxuwk`8bv=H=EmatJ+#^rvP<(Ue@j!rD-_9 zOnX2XE&Qo5N;%}hfeth7__yUORXNG-Bi-q0bjY{>&2mOSSt*X)djx3qz5!|Aq8ICY z92-l?I=c^3G7#m_p~j$nhZ#PA(487D2ALFo(ne|H4xi$Qz~O~FfeTxX{(a&SK5zMR zlu7udeqnyYj|UK_8UNLg%ORjvTS?|#y0!s)6NDCHx(63)#-q7f!aN1g#2Gp9256=E20fSId^z5)%3qxJzGXn9aM_ zisy67zQtoRht%wpZHJa#>TyK3c*nU9$sx^d-e>SWaU(jpJWsPx)Qbnbk(n4vrJ#oH z2LtMKRa4uFDZ$1C1TvqrX7q$WrWu-twqX8r?52s$P|T$YiLJAaK#4ofQ|`|Bp{b@=Gxc9g|8dncten*eRDQPt$PMG*s`29Wl7SuD z;?Xzz<(p6lc|@wi|FVc5dP8oCZ4}Nq0n|?zl#CDUkw(yyhqYysLh9?W)@3ytm-K{e zS9oJRLjKa=<<|ztjc7GXn$D7db6Q*)k9z!a_3zzB%pkYO6y2S=^J|moqDVKf{;ebaoqu0@qLy!v};+JbAH4|mX?POA=^g%yBWy?R`~z9)`5Pk+RfRF~c;j9C30 zaI{lbA82w%$YcBFN7U{)z`{!V&rXTGsg8+;>i+@Dv(w<}#^%-%@Gf#qqu=$n)2ruI z!0I7{i10-7CH^gdoLaQ5UIgMkM)yGx$+C8#b(9g>IY%m8*?+cp;w{sYL66+9Dz=Ih>dcl z39^D>9NQvf@r@o%`s|etap@|LPL0n8MfWAe?je3X0z_UJIxcgCN!>~ZlRa346_w0I zzGemOu5FXSncVj4otHO%64h!Ac}u@WCcJTOnX%~Y%GN|4TfT8aa)sLFQkCWy6Q-12 zv97Wg0R{O*O+7XO2(Qz4`}m1dHtb^3SZRW%_=h2!=(+Haf83M^Q_`R-!?#0a8Xq>w zNbf#8ks(eumXmDE$jNid;0{CIM5@Sv+v592Rtn@?nCLxMJ|zBMY(L5*aYXa>s$5x? z{Y~0$Z(0irMtI_E@Jcyr<%@(r>`KhO0OsgW>m66I}Kv5 z=_U}P+N*gcMJ?~*_15B$nTjChi^ z`yydE&0IQeXKp)m@Uk`;YIGY?Jxq<5>X>Knky)LSSC3e_hcemuBm+iAC8vV4Sl8=K zu5c834saIlwDila^TswSVW%O!rb=%>pAr)_`uMz#>Z4CJk#@^rLGk(wR+&T`v{2pZ z?>c_ao_yE#z27~jO47o`T{zLBB-r-DsOG;aa6JaS*-cwm5zmf(*lUvrX7@6t{Mdf< zY1AeK#PyB@DEY?3{3;UR{CRB#`VnWpd{<=z#53$10P<~9g_24U-@xGtEJzmG$pBM> z4!9WpKXT_iK)TExJmn6JSl+DsZ!@UyeFla0qQsNgP6^xbty1+=I+DUL2!PP6k*hp| zAzIw7XLH)gvGWrfh&=aT@?hCeRdl?2*j(^_!EK4fTZyoAu3;gdj709KN%3W_zQu&u z6I{o%?8ftjk|n=~O)2JBEA=R0BR**})+)T${wT)EcPhu{7qdL+;|t#GO09;AVKS^$ zY1{KTdK>~Z9X+>IE#ctAttN}L!?D)kBY|DHyj)(#!>t&wyXuUd4iq^~(OgkF6=U4O z2Ko1k8gxa?88{ykIQ4%;af@ppv7ELu(R|qcx + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::ConfV4 Member List
+
+
+ +

This is the complete list of members for digidoc::ConfV4, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
ConfV4()digidoc::ConfV4
digestUri() constdigidoc::Confvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::ConfV4static
libdigidocConf() constdigidoc::Confvirtual
logFile() constdigidoc::Confvirtual
logLevel() constdigidoc::Confvirtual
ocsp(const std::string &issuer) constdigidoc::Confvirtual
OCSPTMProfiles() constdigidoc::ConfV3virtual
PKCS11Driver() constdigidoc::Confvirtual
PKCS12Cert() constdigidoc::Confvirtual
PKCS12Disable() constdigidoc::Confvirtual
PKCS12Pass() constdigidoc::Confvirtual
proxyForceSSL() constdigidoc::Confvirtual
proxyHost() constdigidoc::Confvirtual
proxyPass() constdigidoc::Confvirtual
proxyPort() constdigidoc::Confvirtual
proxyTunnelSSL() constdigidoc::Confvirtual
proxyUser() constdigidoc::Confvirtual
signatureDigestUri() constdigidoc::Confvirtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() constdigidoc::Confvirtual
TSLCache() constdigidoc::Confvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() constdigidoc::Confvirtual
TSLTimeOut() constdigidoc::Confvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() constdigidoc::Confvirtual
verifyServiceCert() constdigidoc::ConfV2virtual
verifyServiceCerts() constdigidoc::ConfV4virtual
verifyServiceUri() constdigidoc::Confvirtual
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
~ConfV4() overridedigidoc::ConfV4
+
+ + + + diff --git a/classdigidoc_1_1ConfV4.html b/classdigidoc_1_1ConfV4.html new file mode 100644 index 000000000..8c3dff09f --- /dev/null +++ b/classdigidoc_1_1ConfV4.html @@ -0,0 +1,322 @@ + + + + + + + +libdigidocpp: digidoc::ConfV4 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::ConfV4 Class Reference
+
+
+ +

Verison 4 of configuration class to add additonial parameters. + More...

+ +

#include <Conf.h>

+
+Inheritance diagram for digidoc::ConfV4:
+
+
+ + +digidoc::ConfV3 +digidoc::ConfV2 +digidoc::Conf +digidoc::ConfV5 +digidoc::XmlConfV4 +digidoc::XmlConfV5 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfV4 ()
 
 ~ConfV4 () override
 
virtual std::vector< X509CertverifyServiceCerts () const
 
- Public Member Functions inherited from digidoc::ConfV3
 ConfV3 ()
 
 ~ConfV3 () override
 
virtual std::set< std::string > OCSPTMProfiles () const
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
virtual X509Cert verifyServiceCert () const
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual int logLevel () const
 
virtual std::string logFile () const
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual std::string PKCS11Driver () const
 
virtual std::string proxyHost () const
 
virtual std::string proxyPort () const
 
virtual std::string proxyUser () const
 
virtual std::string proxyPass () const
 
virtual bool proxyForceSSL () const
 
virtual bool proxyTunnelSSL () const
 
virtual std::string digestUri () const
 
virtual std::string signatureDigestUri () const
 
virtual std::string ocsp (const std::string &issuer) const
 
virtual std::string TSUrl () const
 
virtual std::string verifyServiceUri () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const
 
virtual DIGIDOCPP_DEPRECATED bool PKCS12Disable () const
 
virtual bool TSLAllowExpired () const
 
virtual bool TSLAutoUpdate () const
 
virtual std::string TSLCache () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual bool TSLOnlineDigest () const
 
virtual int TSLTimeOut () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static ConfV4instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV3
static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Verison 4 of configuration class to add additonial parameters.

+

Conf contains virtual members and is not leaf class we need create subclasses to keep binary compatibility https://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++#Adding_new_virtual_functions_to_leaf_classes

See also
digidoc::ConfV3
+
Deprecated:
Use digidoc::ConfV5
+
See also
Configuration parameters
+

Constructor & Destructor Documentation

+ +

◆ ConfV4()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV4::ConfV4 ()
+
+default
+
+

Version 4 config with new parameters

+ +
+
+ +

◆ ~ConfV4()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV4::~ConfV4 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV4 * ConfV4::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ verifyServiceCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > ConfV4::verifyServiceCerts () const
+
+virtual
+
+

Gets verify service Certs

+ +

Reimplemented in digidoc::XmlConfV5, and digidoc::XmlConfV4.

+ +

Referenced by digidoc::XmlConfV4::verifyServiceCerts(), and digidoc::XmlConfV5::verifyServiceCerts().

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Conf.h
  • +
  • Conf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1ConfV4.js b/classdigidoc_1_1ConfV4.js new file mode 100644 index 000000000..f613b42fa --- /dev/null +++ b/classdigidoc_1_1ConfV4.js @@ -0,0 +1,7 @@ +var classdigidoc_1_1ConfV4 = +[ + [ "ConfV4", "classdigidoc_1_1ConfV4.html#aef54f9ede54bf4aade5e2372822f50a7", null ], + [ "~ConfV4", "classdigidoc_1_1ConfV4.html#a98c3aa26cec109d4761bda20c5abf9be", null ], + [ "instance", "classdigidoc_1_1ConfV4.html#ad582da50a8e240609a97d83092e0df41", null ], + [ "verifyServiceCerts", "classdigidoc_1_1ConfV4.html#aa93eed3fa422a9f2b128d2cc8421683f", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1ConfV4.png b/classdigidoc_1_1ConfV4.png new file mode 100644 index 0000000000000000000000000000000000000000..df8d2fcafbbd2749e630e85bc2e7d2b30282605d GIT binary patch literal 1915 zcma)7c~leE9-bK!3`*{MNxc)*Z`Xn z5^28v0Jdo35w!D-k*zG?7OmLR>l5@{YU1>Pobbg)Vvi&IaK;bizQ(u*Q#k#WG_4v19V(h-J^?)obXCp=G#>@R8*^^V{@+sE77NYndeMkOa-aAX?x zpMzNs%wYrmUGqJ#f$`>-Z5Px5hTmZmU9iW_2niDsbv!1Ogv1{v=7*7UU>xBhq7F!} zzdw5HOm2tb5GR=9O#p${7XaAO5bM;x)546*Hd%vdofc`N@~*%PgE(vqUqwLQDCXSMKtvJGtbR z`4OM_fXb}&_^&cQ6**_~RklJCZ)4L~wwgW8E)6bQwh5^IeL47^b@Q5e*_SdiM#M)Z z`NJyN+z!#~emEwc4Zfn~^RxOMshlwnhUKbhksvJBGz8FM^*x)^(GIr}kS<-&@lQHx zYi}c^qtinxbr%qNBP1;nP?&;lir!=`j)OzsxAMSH{$jGh$;$%qOB$UtP zXaGDbi20-eiA#(|8<4Np8rABw)zcXSjPPRR_Xp2PwV8oQC8>E+DZq}6MxCd;AL+B7 zQd)W3%%Y+x57Y;rHVxa^Q6 zpDQy0I~D}=*os;A%d~OFrruiQi|E$R(;T_;HbXlr(K5tiVmSqPKIVxofp@0XRBgqO z51hNZ#O#>_Quw;KpVJ1OFSQ&U2|-&%@e9iKfne1wqSQ)Oiw7Fr-cbkquwiH2i>EB0 zk_304o2hMatxFAicS;1{8)!^j6~w5u`aeoSp2X?Tf)-=DR)`?rj;SUBJEsP=pa8Sp z#-^ARbu=L0C+zOrSBVhq@O1Z8liRYexdWH56yZW7%%tkjMv}yafz7m~{IMG(k!rsO zC%kk}kH@b3gKsX?rq4Hpc(8W+Ee<@`2o}wnB-3)!ggwM;{*HVsAjX1z7u|DOIPZAn zS_D{GIi7hiDo+tB))DLR^s4Rlr=|s=^Z%u=*b#~$=72V)zD|L}Ui6~6eVgEn#)v}{ zrTrcflJw9oH0eIfJniVBvX}KT(4lI|KmAalrQ&W8*fb-r>7d}OpZHrVs*%UCWL)Gv zs@~17BtBsVBy4(@F4RBvKeBz`i3~FYttd?M|&N zW0Ok)m3hUWAC4O_7DDvdqi x)t6j1tMcoW08V2oPk@lpc>g}xyIi+h2W#^3%BXweW3WFZ03Y&ot9E64^EdW#K`a0O literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1ConfV5-members.html b/classdigidoc_1_1ConfV5-members.html new file mode 100644 index 000000000..209863b1f --- /dev/null +++ b/classdigidoc_1_1ConfV5-members.html @@ -0,0 +1,123 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::ConfV5 Member List
+
+
+ +

This is the complete list of members for digidoc::ConfV5, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
ConfV4()digidoc::ConfV4
ConfV5()digidoc::ConfV5
digestUri() constdigidoc::Confvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::ConfV5static
libdigidocConf() constdigidoc::Confvirtual
logFile() constdigidoc::Confvirtual
logLevel() constdigidoc::Confvirtual
ocsp(const std::string &issuer) constdigidoc::Confvirtual
OCSPTMProfiles() constdigidoc::ConfV3virtual
PKCS11Driver() constdigidoc::Confvirtual
PKCS12Cert() constdigidoc::Confvirtual
PKCS12Disable() constdigidoc::Confvirtual
PKCS12Pass() constdigidoc::Confvirtual
proxyForceSSL() constdigidoc::Confvirtual
proxyHost() constdigidoc::Confvirtual
proxyPass() constdigidoc::Confvirtual
proxyPort() constdigidoc::Confvirtual
proxyTunnelSSL() constdigidoc::Confvirtual
proxyUser() constdigidoc::Confvirtual
signatureDigestUri() constdigidoc::Confvirtual
TSCerts() constdigidoc::ConfV5virtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() constdigidoc::Confvirtual
TSLCache() constdigidoc::Confvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() constdigidoc::Confvirtual
TSLTimeOut() constdigidoc::Confvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() constdigidoc::Confvirtual
verifyServiceCert() constdigidoc::ConfV2virtual
verifyServiceCerts() constdigidoc::ConfV4virtual
verifyServiceUri() constdigidoc::Confvirtual
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
~ConfV4() overridedigidoc::ConfV4
~ConfV5() overridedigidoc::ConfV5
+
+ + + + diff --git a/classdigidoc_1_1ConfV5.html b/classdigidoc_1_1ConfV5.html new file mode 100644 index 000000000..a5307b31a --- /dev/null +++ b/classdigidoc_1_1ConfV5.html @@ -0,0 +1,331 @@ + + + + + + + +libdigidocpp: digidoc::ConfV5 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::ConfV5 Class Reference
+
+
+ +

Verison 5 of configuration class to add additonial parameters. + More...

+ +

#include <Conf.h>

+
+Inheritance diagram for digidoc::ConfV5:
+
+
+ + +digidoc::ConfV4 +digidoc::ConfV3 +digidoc::ConfV2 +digidoc::Conf +digidoc::XmlConfV5 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfV5 ()
 
 ~ConfV5 () override
 
virtual std::vector< X509CertTSCerts () const
 
- Public Member Functions inherited from digidoc::ConfV4
 ConfV4 ()
 
 ~ConfV4 () override
 
virtual std::vector< X509CertverifyServiceCerts () const
 
- Public Member Functions inherited from digidoc::ConfV3
 ConfV3 ()
 
 ~ConfV3 () override
 
virtual std::set< std::string > OCSPTMProfiles () const
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
virtual X509Cert verifyServiceCert () const
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual int logLevel () const
 
virtual std::string logFile () const
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual std::string PKCS11Driver () const
 
virtual std::string proxyHost () const
 
virtual std::string proxyPort () const
 
virtual std::string proxyUser () const
 
virtual std::string proxyPass () const
 
virtual bool proxyForceSSL () const
 
virtual bool proxyTunnelSSL () const
 
virtual std::string digestUri () const
 
virtual std::string signatureDigestUri () const
 
virtual std::string ocsp (const std::string &issuer) const
 
virtual std::string TSUrl () const
 
virtual std::string verifyServiceUri () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const
 
virtual DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const
 
virtual DIGIDOCPP_DEPRECATED bool PKCS12Disable () const
 
virtual bool TSLAllowExpired () const
 
virtual bool TSLAutoUpdate () const
 
virtual std::string TSLCache () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual bool TSLOnlineDigest () const
 
virtual int TSLTimeOut () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static ConfV5instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV4
static ConfV4instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV3
static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Verison 5 of configuration class to add additonial parameters.

+

Conf contains virtual members and is not leaf class we need create subclasses to keep binary compatibility https://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++#Adding_new_virtual_functions_to_leaf_classes

See also
digidoc::ConfV4
+
+Configuration parameters
+

Constructor & Destructor Documentation

+ +

◆ ConfV5()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV5::ConfV5 ()
+
+default
+
+

Version 4 config with new parameters

+ +
+
+ +

◆ ~ConfV5()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV5::~ConfV5 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
ConfV5 * ConfV5::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ TSCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > ConfV5::TSCerts () const
+
+virtual
+
+

Gets verify service Certs

+ +

Reimplemented in digidoc::XmlConfV5.

+ +

Referenced by digidoc::XmlConfV5::TSCerts().

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Conf.h
  • +
  • Conf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1ConfV5.js b/classdigidoc_1_1ConfV5.js new file mode 100644 index 000000000..3131522d6 --- /dev/null +++ b/classdigidoc_1_1ConfV5.js @@ -0,0 +1,7 @@ +var classdigidoc_1_1ConfV5 = +[ + [ "ConfV5", "classdigidoc_1_1ConfV5.html#a23aecb1d22f1aa109af7db878ce8e9a5", null ], + [ "~ConfV5", "classdigidoc_1_1ConfV5.html#a495c7474ab914f29cce2489c5995daf1", null ], + [ "instance", "classdigidoc_1_1ConfV5.html#a79c32d8e93f3c7ee8ce2f7fac997222c", null ], + [ "TSCerts", "classdigidoc_1_1ConfV5.html#af891ae6f77289d620ff8ea2289a2e673", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1ConfV5.png b/classdigidoc_1_1ConfV5.png new file mode 100644 index 0000000000000000000000000000000000000000..64328fdd2a8337741ddaa88db5836e6ca41667cd GIT binary patch literal 1449 zcmeAS@N?(olHy`uVBq!ia0vp^)eH=b1{};l)`E}!!hn=SfKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+1FMCni(^Oy5 z+Om1;w2HEiS8CqQGpf5%`{t~wotCc0wHGD@^NQoXO|72!bI;qzd~da^YN3-nSB0*> z%ea}WA8lSNer!eHYoPYqziTa?-!Hgt_uT*R=b!f$$?v$jH+Id!Uwqr|yxbf5m+Skh zeO1mY_PPI;4PJYif44KoLSBaV#!M!Q7FNsLJ}JFRz0|nU`}_HMpWm^q@F{1$vUE4& zt4ntoN?+zR>?$#Lh}|WZ!n>lk>eXMc)ye&@{wv5=a#?@YDUs;K zpYK2FDBhlRXl8Y1y1009jJw_5CvnDcmwl_x|9Nb*=$_DAwsXaDfB*i{{ciMmX5O{# zQ#Yc5UfL-a-rxQFg1^(^vF8?`o!7tHuul4qEh3XEFchA;8>|E8$z>e3N zJ(bJfEcQJX{tPdwG@0Wd*ID1Fm_Wu9>A*<_7EZtqR zI%NN$(z{2am;Ms{^?pWHY~2l6Cyrc(iur;I1bOd1zTtQ8g6+!LC!=@Of16Wo?vM(J zsetLgi1bE{$mz&wuo)!{F1sPs`+rrnb@^(wIXkCUloj&1Tnj2w{XXlX(a#IBy=y|E zJTiOzn4eqr|C@Hp78rY#w>RIL=5u9|*LTVHI~S++@BN~2q*VNv%hvF6`&W0r$K8#V z{r)M?_eaWp{^xsU#7~+jwcQ^adoS4YO7oZJi(Eawqh$UZ!K?WNvE?6AS5odd$+pA{ z7G?)wkpF>6llA+L#pSb}6s0f03=GDyPw#$5sR+jXzS zEP1=9&pclO_u0hVd$gCAzkXp+^AzZ}Bc}Inz1QFM_-XXc)7Ae@*2$l%G~EAo#r3&2 zPk8T6-ZgX2(%A-N$@;Ew8%={%rbvZ + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::Container Member List
+
+
+ +

This is the complete list of members for digidoc::Container, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
addAdESSignature(const std::vector< unsigned char > &signature)digidoc::Container
addAdESSignature(std::istream &signature)=0digidoc::Containerpure virtual
addContainerImplementation()digidoc::Containerstatic
addDataFile(const std::string &path, const std::string &mediaType)=0digidoc::Containerpure virtual
addDataFile(std::istream *is, const std::string &fileName, const std::string &mediaType)digidoc::Containervirtual
addDataFile(std::unique_ptr< std::istream > is, const std::string &fileName, const std::string &mediaType)digidoc::Containervirtual
Container()digidoc::Containerprotected
create(const std::string &path)digidoc::Containerstatic
createPtr(const std::string &path)digidoc::Containerstatic
dataFiles() const =0digidoc::Containerpure virtual
mediaType() const =0digidoc::Containerpure virtual
newSignatureId() constdigidoc::Containerprotected
open(const std::string &path)digidoc::Containerstatic
openPtr(const std::string &path)digidoc::Containerstatic
openPtr(const std::string &path, digidoc::ContainerOpenCB *cb)digidoc::Containerstatic
prepareSignature(Signer *signer)=0digidoc::Containerpure virtual
removeDataFile(unsigned int index)=0digidoc::Containerpure virtual
removeSignature(unsigned int index)=0digidoc::Containerpure virtual
save(const std::string &path="")=0digidoc::Containerpure virtual
sign(Signer *signer)=0digidoc::Containerpure virtual
signatures() const =0digidoc::Containerpure virtual
~Container()digidoc::Containervirtual
+
+ + + + diff --git a/classdigidoc_1_1Container.html b/classdigidoc_1_1Container.html new file mode 100644 index 000000000..40c2c6304 --- /dev/null +++ b/classdigidoc_1_1Container.html @@ -0,0 +1,961 @@ + + + + + + + +libdigidocpp: digidoc::Container Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+ +

Offers functionality for handling data files and signatures in a container. + More...

+ +

#include <Container.h>

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

+Public Member Functions

virtual ~Container ()
 
virtual void save (const std::string &path="")=0
 
virtual std::string mediaType () const =0
 
virtual void addDataFile (const std::string &path, const std::string &mediaType)=0
 
virtual DIGIDOCPP_DEPRECATED void addDataFile (std::istream *is, const std::string &fileName, const std::string &mediaType)
 
virtual std::vector< DataFile * > dataFiles () const =0
 
virtual void removeDataFile (unsigned int index)=0
 
void addAdESSignature (const std::vector< unsigned char > &signature)
 
virtual void addAdESSignature (std::istream &signature)=0
 
virtual SignatureprepareSignature (Signer *signer)=0
 
virtual std::vector< Signature * > signatures () const =0
 
virtual void removeSignature (unsigned int index)=0
 
virtual Signaturesign (Signer *signer)=0
 
virtual void addDataFile (std::unique_ptr< std::istream > is, const std::string &fileName, const std::string &mediaType)
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static DIGIDOCPP_DEPRECATED Containercreate (const std::string &path)
 
static std::unique_ptr< ContainercreatePtr (const std::string &path)
 
static DIGIDOCPP_DEPRECATED Containeropen (const std::string &path)
 
static std::unique_ptr< ContaineropenPtr (const std::string &path)
 
static std::unique_ptr< ContaineropenPtr (const std::string &path, digidoc::ContainerOpenCB *cb)
 
template<class T >
static void addContainerImplementation ()
 
+ + + + + +

+Protected Member Functions

 Container ()
 
unsigned int newSignatureId () const
 
+

Detailed Description

+

Offers functionality for handling data files and signatures in a container.

+

Container can contain several files and all these files can be signed using signing certificates. Container can only be signed if it contains data files. data files can be added and removed from container only if the container is not signed. To add or remove data files from signed container remove all the signatures before modifying data files list in container.

+

Constructor & Destructor Documentation

+ +

◆ ~Container()

+ +
+
+ + + + + +
+ + + + + + + +
Container::~Container ()
+
+virtualdefault
+
+

Releases resources.

+ +
+
+ +

◆ Container()

+ +
+
+ + + + + +
+ + + + + + + +
Container::Container ()
+
+protecteddefault
+
+

Create a new container object and specify the DigiDoc container type

+ +
+
+

Member Function Documentation

+ +

◆ addAdESSignature() [1/2]

+ +
+
+ + + + + + + + +
void Container::addAdESSignature (const std::vector< unsigned char > & signature)
+
+

Adds signature to the container.

+
Parameters
+ + +
signaturesignature, which is added to the container.
+
+
+
Exceptions
+ + +
Exceptionthrows exception if there are no data files in container.
+
+
+ +
+
+ +

◆ addAdESSignature() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::addAdESSignature (std::istream & signature)
+
+pure virtual
+
+

Adds signature to the container.

+
Parameters
+ + +
signaturesignature, which is added to the container.
+
+
+
Exceptions
+ + +
Exceptionthrows exception if there are no data files in container.
+
+
+ +
+
+ +

◆ addContainerImplementation()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
void Container::addContainerImplementation
+
+static
+
+

Adds container implementation

+

It must contain static members:

    +
  • static Container* createInternal(const std::string &path);
  • +
  • static Container* openInternal(const std::string &path, digidoc::ContainerOpenCB *cb);
  • +
+
See also
Container::create, Container::open
+ +
+
+ +

◆ addDataFile() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
digidoc::Container::addDataFile (const std::string & path,
const std::string & mediaType 
)
+
+pure virtual
+
+

Adds data file from file system to the container.

+
Parameters
+ + + +
patha data file, which is added to the container.
mediaTypeMIME type of the data file, for example “text/plain” or “application/msword”
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if the data file path is incorrect or a data file with same file name already exists. Also, no data file can be added if the container already has one or more signatures.
+
+
+
Note
Data files can be removed from container only after all signatures are removed.
+ +
+
+ +

◆ addDataFile() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Container::addDataFile (std::istream * is,
const std::string & fileName,
const std::string & mediaType 
)
+
+virtual
+
+

Adds the data from an input stream (i.e. the data file contents can be read from internal memory buffer).

+

Takes ownership std::istream *is object.

Deprecated:
Use digidoc::Container::addDataFile(std::unique_ptr<std::istream> is, const std::string &fileName, const std::string &mediaType)
+
Parameters
+ + + + +
isinput stream from where data is read
fileNamedata file name in the container
mediaTypeMIME type of the data file, for example “text/plain” or “application/msword”
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if the data file path is incorrect or a data file with same file name already exists. Also, no data file can be added if the container already has one or more signatures.
+
+
+
Note
Data files can be removed from container only after all signatures are removed.
+ +
+
+ +

◆ addDataFile() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Container::addDataFile (std::unique_ptr< std::istream > is,
const std::string & fileName,
const std::string & mediaType 
)
+
+virtual
+
+

Adds the data from an input stream (i.e. the data file contents can be read from internal memory buffer).

+
Parameters
+ + + + +
isinput stream from where data is read
fileNamedata file name in the container
mediaTypeMIME type of the data file, for example “text/plain” or “application/msword”
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if the data file path is incorrect or a data file with same file name already exists. Also, no data file can be added if the container already has one or more signatures.
+
+
+
Note
Data files can be removed from container only after all signatures are removed.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
Container * Container::create (const std::string & path)
+
+static
+
+

Create a new container object and specify the DigiDoc container type

+
Deprecated:
Use Container::createPtr This method gives ownership of object to caller
+ +
+
+ +

◆ createPtr()

+ +
+
+ + + + + +
+ + + + + + + + +
unique_ptr< Container > Container::createPtr (const std::string & path)
+
+static
+
+

Create a new container object and specify the DigiDoc container type

+ +
+
+ +

◆ dataFiles()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Container::dataFiles () const
+
+pure virtual
+
+

List of all the data files in the container

+

Container holds ownership of data files objects

+ +
+
+ +

◆ mediaType()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Container::mediaType () const
+
+pure virtual
+
+

Returns current data file format

+ +
+
+ +

◆ newSignatureId()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int Container::newSignatureId () const
+
+protected
+
+

Returns unique signature id

+ +
+
+ +

◆ open()

+ +
+
+ + + + + +
+ + + + + + + + +
Container * Container::open (const std::string & path)
+
+static
+
+

Opens container from a file

+

This method gives ownership of object to caller

+
Deprecated:
Use Container::openPtr
+
Parameters
+ + +
path
+
+
+
Exceptions
+ + +
Exception
+
+
+ +
+
+ +

◆ openPtr() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
unique_ptr< Container > Container::openPtr (const std::string & path)
+
+static
+
+

Opens container from a file

+
Parameters
+ + +
path
+
+
+
Exceptions
+ + +
Exception
+
+
+ +
+
+ +

◆ openPtr() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unique_ptr< Container > Container::openPtr (const std::string & path,
digidoc::ContainerOpenCBcb 
)
+
+static
+
+

Opens container from a file

+
Parameters
+ + + +
path
cbCallback called when additional info is requested (digidoc::ContainerOpenCB::validateOnline)
+
+
+
Exceptions
+ + +
Exception
+
+
+ +
+
+ +

◆ prepareSignature()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::prepareSignature (Signersigner)
+
+pure virtual
+
+

Prepares Signature object that can later signed.

+

Container holds ownership of Signature object

+
See also
digidoc::Signature::dataToSign
+
+digidoc::Signature::setSignatureValue
+
+digidoc::Signature::extendSignatureProfile
+
Parameters
+ + +
signersigner implementation.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if signing the container failed.
+
+
+ +
+
+ +

◆ removeDataFile()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::removeDataFile (unsigned int index)
+
+pure virtual
+
+

Removes data file from container by data file index. Data files can be removed from container only after all signatures are removed.

+
Parameters
+ + +
indexdata file's index, which will be removed.
+
+
+
Exceptions
+ + +
Exceptionthrows exception if the data file id is incorrect or there are one or more signatures.
+
+
+
See also
digidoc::Container::dataFiles
+ +
+
+ +

◆ removeSignature()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::removeSignature (unsigned int index)
+
+pure virtual
+
+

Removes signature from container by signature index.

+
Parameters
+ + +
indexsignature's index, which will be removed.
+
+
+
Exceptions
+ + +
Exceptionthrows exception if the signature id is incorrect.
+
+
+
See also
digidoc::Container::signatures
+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::save (const std::string & path = "")
+
+pure virtual
+
+

Saves the container.

+
Exceptions
+ + +
Exceptionis thrown if there was a failure saving container. For example added data file does not exist.
+
+
+ +
+
+ +

◆ sign()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Container::sign (Signersigner)
+
+pure virtual
+
+

Signs all data files in container.

+

This method does not take ownership of signer object. Container holds ownership of Signature object.

+
Parameters
+ + +
signersigner implementation.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if signing the container failed.
+
+
+ +
+
+ +

◆ signatures()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Container::signatures () const
+
+pure virtual
+
+

Returns list of all container's signatures.

+

Container holds ownership of signature objects

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Container.h
  • +
  • Container.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Container.js b/classdigidoc_1_1Container.js new file mode 100644 index 000000000..b7d0227cb --- /dev/null +++ b/classdigidoc_1_1Container.js @@ -0,0 +1,25 @@ +var classdigidoc_1_1Container = +[ + [ "~Container", "classdigidoc_1_1Container.html#ae9f5d07bfc3defda274aa06091c19f56", null ], + [ "Container", "classdigidoc_1_1Container.html#a1b0c5515d6863c1bc98cc93b65952f42", null ], + [ "addAdESSignature", "classdigidoc_1_1Container.html#aa5c876f689e13ae055365a19da074484", null ], + [ "addAdESSignature", "classdigidoc_1_1Container.html#a3778d560687e5428d8b49f45534fd4a2", null ], + [ "addContainerImplementation", "classdigidoc_1_1Container.html#a59aefb3edb9f36f0b1e599a1d2951e00", null ], + [ "addDataFile", "classdigidoc_1_1Container.html#a0d48d9d10e34a8dbd4b987d510b8258c", null ], + [ "addDataFile", "classdigidoc_1_1Container.html#ad635fb5c44e73bc3335ddfdd463f8796", null ], + [ "addDataFile", "classdigidoc_1_1Container.html#abc7aed335efa41fc0b3c8dbc7ea105f4", null ], + [ "create", "classdigidoc_1_1Container.html#af52819cb6bb683057599b5b537e2f9d6", null ], + [ "createPtr", "classdigidoc_1_1Container.html#a1ad76d44979f8be4aba1d8c5540f84aa", null ], + [ "dataFiles", "classdigidoc_1_1Container.html#a43aab553405e4ebd2a33c13e8a372981", null ], + [ "mediaType", "classdigidoc_1_1Container.html#adc4ab4ee3df6264f80fce9cbdeefe053", null ], + [ "newSignatureId", "classdigidoc_1_1Container.html#a7c36c85e85ed9c8cccf00ca4795630ce", null ], + [ "open", "classdigidoc_1_1Container.html#a30efc4cd037d1bbb49fae579ff28e48b", null ], + [ "openPtr", "classdigidoc_1_1Container.html#a484e3d875a9bb7a9b64a5ded7bf59fe6", null ], + [ "openPtr", "classdigidoc_1_1Container.html#a1d5f67e23f7454f605c162df286432ce", null ], + [ "prepareSignature", "classdigidoc_1_1Container.html#ae4ff52e6d44803328bc437ce5afcc425", null ], + [ "removeDataFile", "classdigidoc_1_1Container.html#a3e4d73c8c9988c79b74e90d2d2315777", null ], + [ "removeSignature", "classdigidoc_1_1Container.html#acd0624f347e42029aa9f07da2eaf9293", null ], + [ "save", "classdigidoc_1_1Container.html#ab5ea778c845480142353dd47aa0dbd61", null ], + [ "sign", "classdigidoc_1_1Container.html#af9dfca6c05ee6aeb0461dcb6894b5a8c", null ], + [ "signatures", "classdigidoc_1_1Container.html#a3b31e14a4d2ce6a14f72c8eabd45c535", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1DataFile-members.html b/classdigidoc_1_1DataFile-members.html new file mode 100644 index 000000000..a01fe9666 --- /dev/null +++ b/classdigidoc_1_1DataFile-members.html @@ -0,0 +1,89 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::DataFile Member List
+
+
+ +

This is the complete list of members for digidoc::DataFile, including all inherited members.

+ + + + + + + + + + +
calcDigest(const std::string &method) const =0digidoc::DataFilepure virtual
DataFile()digidoc::DataFileprotected
fileName() const =0digidoc::DataFilepure virtual
fileSize() const =0digidoc::DataFilepure virtual
id() const =0digidoc::DataFilepure virtual
mediaType() const =0digidoc::DataFilepure virtual
saveAs(std::ostream &os) const =0digidoc::DataFilepure virtual
saveAs(const std::string &path) const =0digidoc::DataFilepure virtual
~DataFile()digidoc::DataFilevirtual
+
+ + + + diff --git a/classdigidoc_1_1DataFile.html b/classdigidoc_1_1DataFile.html new file mode 100644 index 000000000..e3a21414d --- /dev/null +++ b/classdigidoc_1_1DataFile.html @@ -0,0 +1,394 @@ + + + + + + + +libdigidocpp: digidoc::DataFile Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::DataFile Class Referenceabstract
+
+
+ +

Data file wrapper providing methods for handling signed files or files to be signed in Container. + More...

+ +

#include <DataFile.h>

+ +

Inherited by digidoc::DataFilePrivate.

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

+Public Member Functions

virtual ~DataFile ()
 
virtual std::string id () const =0
 
virtual std::string fileName () const =0
 
virtual unsigned long fileSize () const =0
 
virtual std::string mediaType () const =0
 
virtual std::vector< unsigned char > calcDigest (const std::string &method) const =0
 
virtual void saveAs (std::ostream &os) const =0
 
virtual void saveAs (const std::string &path) const =0
 
+ + + +

+Protected Member Functions

 DataFile ()
 
+

Detailed Description

+

Data file wrapper providing methods for handling signed files or files to be signed in Container.

+

Constructor & Destructor Documentation

+ +

◆ ~DataFile()

+ +
+
+ + + + + +
+ + + + + + + +
DataFile::~DataFile ()
+
+virtualdefault
+
+ +
+
+ +

◆ DataFile()

+ +
+
+ + + + + +
+ + + + + + + +
DataFile::DataFile ()
+
+protecteddefault
+
+ +
+
+

Member Function Documentation

+ +

◆ calcDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::DataFile::calcDigest (const std::string & method) const
+
+pure virtual
+
+

Calculates digest for data file. If digest is already calculated returns it, otherwise calculates the digest.

+

Supported uris:

+

In case of DDoc files, the parameter is ignored and SHA1 hash is always returned

+
Parameters
+ + +
methodmethod uri for calculating digest.
+
+
+
Returns
returns calculated digest value.
+
Exceptions
+ + +
Exceptionthrows exception if the file does not exist or digest calculation fails.
+
+
+ +
+
+ +

◆ fileName()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::DataFile::fileName () const
+
+pure virtual
+
+

Returns data file name

+ +
+
+ +

◆ fileSize()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::DataFile::fileSize () const
+
+pure virtual
+
+

Returns data file size

+ +
+
+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::DataFile::id () const
+
+pure virtual
+
+

Returns data file id

+ +
+
+ +

◆ mediaType()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::DataFile::mediaType () const
+
+pure virtual
+
+

Returns data file's media type

+ +
+
+ +

◆ saveAs() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::DataFile::saveAs (const std::string & path) const
+
+pure virtual
+
+

Saves a copy of the data file as file specified by path.

Parameters
+ + +
pathfull file path, where the data file should be saved to. If file exists, it is overwritten
+
+
+
Exceptions
+ + +
Exceptionif part of path does not exist or path is existing directory (without file name)
+
+
+ +
+
+ +

◆ saveAs() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::DataFile::saveAs (std::ostream & os) const
+
+pure virtual
+
+

Saves a copy of the data file as file specified by stream.

Parameters
+ + +
osstream where data is written
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • DataFile.h
  • +
  • DataFile.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1DataFile.js b/classdigidoc_1_1DataFile.js new file mode 100644 index 000000000..06c398d7f --- /dev/null +++ b/classdigidoc_1_1DataFile.js @@ -0,0 +1,12 @@ +var classdigidoc_1_1DataFile = +[ + [ "~DataFile", "classdigidoc_1_1DataFile.html#a8717582401bcbb28a57af9bcf0788fdb", null ], + [ "DataFile", "classdigidoc_1_1DataFile.html#a89f1d187ae88cd7f921793e7e672c7d4", null ], + [ "calcDigest", "classdigidoc_1_1DataFile.html#a6b5696a0f7c9f1ef9507889c1e34a348", null ], + [ "fileName", "classdigidoc_1_1DataFile.html#a65846794c66f0e07a91e2933d809355e", null ], + [ "fileSize", "classdigidoc_1_1DataFile.html#a2cd791213717bd74b594b84c5789dfd4", null ], + [ "id", "classdigidoc_1_1DataFile.html#a74ecdb44ac917ded6331b17a377b472d", null ], + [ "mediaType", "classdigidoc_1_1DataFile.html#aaa3ed6dfebfadd3e0bdc016039251184", null ], + [ "saveAs", "classdigidoc_1_1DataFile.html#aa6ece28115b28ce76af231cfc6c9b37d", null ], + [ "saveAs", "classdigidoc_1_1DataFile.html#a1a1499e6a88783152cceca8ff1b54ffc", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1Exception-members.html b/classdigidoc_1_1Exception-members.html new file mode 100644 index 000000000..75ba039fc --- /dev/null +++ b/classdigidoc_1_1Exception-members.html @@ -0,0 +1,124 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::Exception Member List
+
+
+ +

This is the complete list of members for digidoc::Exception, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addCause(const Exception &cause)digidoc::Exception
addWarningIgnore(ExceptionCode code)digidoc::Exceptionstatic
Causes typedefdigidoc::Exception
causes() constdigidoc::Exception
CertificateIssuerMissing enum valuedigidoc::Exception
CertificateRevoked enum valuedigidoc::Exception
CertificateUnknown enum valuedigidoc::Exception
code() constdigidoc::Exception
DataFileNameSpaceWarning enum valuedigidoc::Exception
DDocError enum valuedigidoc::Exception
Exception(const std::string &file, int line, const std::string &msg)digidoc::Exception
Exception(const std::string &file, int line, const std::string &msg, const Exception &cause)digidoc::Exception
Exception(const Exception &other)digidoc::Exception
Exception(Exception &&other) noexceptdigidoc::Exception
ExceptionCode enum namedigidoc::Exception
file() constdigidoc::Exception
General enum valuedigidoc::Exception
hasWarningIgnore(ExceptionCode code)digidoc::Exceptionstatic
HostNotFound enum valuedigidoc::Exception
InvalidUrl enum valuedigidoc::Exception
IssuerNameSpaceWarning enum valuedigidoc::Exception
line() constdigidoc::Exception
MimeTypeWarning enum valuedigidoc::Exception
msg() constdigidoc::Exception
NetworkError enum valuedigidoc::Exception
OCSPBeforeTimeStamp enum valuedigidoc::Exception
OCSPCertMissing enum valuedigidoc::Exception
OCSPRequestUnauthorized enum valuedigidoc::Exception
OCSPResponderMissing enum valuedigidoc::Exception
OCSPTimeSlot enum valuedigidoc::Exception
operator=(const Exception &other)digidoc::Exception
operator=(Exception &&other) noexceptdigidoc::Exception
PINCanceled enum valuedigidoc::Exception
PINFailed enum valuedigidoc::Exception
PINIncorrect enum valuedigidoc::Exception
PINLocked enum valuedigidoc::Exception
ProducedATLateWarning enum valuedigidoc::Exception
ReferenceDigestWeak enum valuedigidoc::Exception
setCode(ExceptionCode Code)digidoc::Exception
setWarningIgnoreList(const std::vector< ExceptionCode > &list)digidoc::Exceptionstatic
SignatureDigestWeak enum valuedigidoc::Exception
TSForbidden enum valuedigidoc::Exception
TSTooManyRequests enum valuedigidoc::Exception
~Exception()digidoc::Exceptionvirtual
+
+ + + + diff --git a/classdigidoc_1_1Exception.html b/classdigidoc_1_1Exception.html new file mode 100644 index 000000000..4877d5334 --- /dev/null +++ b/classdigidoc_1_1Exception.html @@ -0,0 +1,718 @@ + + + + + + + +libdigidocpp: digidoc::Exception Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::Exception Class Reference
+
+
+ +

Base exception class of the digidoc implementation. + More...

+ +

#include <Exception.h>

+ + + + + + +

+Public Types

enum  ExceptionCode {
+  General = 0 +, NetworkError = 20 +, HostNotFound = 101 +, InvalidUrl = 102 +,
+  CertificateIssuerMissing = 10 +, CertificateRevoked = 5 +, CertificateUnknown = 6 +, OCSPBeforeTimeStamp = 19 +,
+  OCSPResponderMissing = 8 +, OCSPCertMissing = 9 +, OCSPTimeSlot = 7 +, OCSPRequestUnauthorized = 11 +,
+  TSForbidden = 21 +, TSTooManyRequests = 18 +, PINCanceled = 2 +, PINFailed = 4 +,
+  PINIncorrect = 1 +, PINLocked = 3 +, ReferenceDigestWeak = 12 +, SignatureDigestWeak = 13 +,
+  DataFileNameSpaceWarning = 14 +, IssuerNameSpaceWarning = 15 +, ProducedATLateWarning = 16 +, MimeTypeWarning = 17 +,
+  DDocError = 512 +
+ }
 
using Causes = std::vector< Exception >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Exception (const std::string &file, int line, const std::string &msg)
 
 Exception (const std::string &file, int line, const std::string &msg, const Exception &cause)
 
 Exception (const Exception &other)
 
 Exception (Exception &&other) noexcept
 
virtual ~Exception ()
 
Exceptionoperator= (const Exception &other)
 
Exceptionoperator= (Exception &&other) noexcept
 
std::string file () const
 
int line () const
 
ExceptionCode code () const
 
std::string msg () const
 
Causes causes () const
 
void addCause (const Exception &cause)
 
void setCode (ExceptionCode Code)
 
+ + + + + + + +

+Static Public Member Functions

static void addWarningIgnore (ExceptionCode code)
 
static void setWarningIgnoreList (const std::vector< ExceptionCode > &list)
 
static bool hasWarningIgnore (ExceptionCode code)
 
+

Detailed Description

+

Base exception class of the digidoc implementation.

+

Member Typedef Documentation

+ +

◆ Causes

+ +
+
+ + + + +
using digidoc::Exception::Causes = std::vector<Exception>
+
+ +
+
+

Member Enumeration Documentation

+ +

◆ ExceptionCode

+ +
+
+

Exception code

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
General 

General error, no specific code

+
NetworkError 

Network error, network connection errors

+
HostNotFound 
InvalidUrl 
CertificateIssuerMissing 

Signer's certificate's issuer certificate is missing

+
CertificateRevoked 

Certificate status is revoked in OCSP response

+
CertificateUnknown 

Certificate status is unknown in OCSP response

+
OCSPBeforeTimeStamp 

OCSP producedAt time is before TimeStamp time

+
OCSPResponderMissing 

OCSP Responder is missing

+
OCSPCertMissing 

OCSP Responder certificate is missing

+
OCSPTimeSlot 

OCSP Response is not in valid time slot

+
OCSPRequestUnauthorized 

OCSP Responder requires the OCSP request to be signed

+
TSForbidden 

TSA service responds forbidden

+
TSTooManyRequests 

TSA service requests have reached limit

+
PINCanceled 

PIN cancelled exception

+
PINFailed 

PIN verification error

+
PINIncorrect 

PIN incorrect error

+
PINLocked 

PIN locked error

+
ReferenceDigestWeak 

One or more referenced objects in container are calculated by using weaker digest method that recommended

+
SignatureDigestWeak 

The digest that is signed in container has been calculated by using weaker digest method than recommended

+
DataFileNameSpaceWarning 

DDoc warning: <DataFile> XML element is missing xmlns attribute

+
IssuerNameSpaceWarning 

DDoc warning: <X509IssuerName> and/or <X509IssuerSerial> XML element is missing xmlns attribute

+
ProducedATLateWarning 

TimeStamp and OCSP time difference is more than 15 minutes

+
MimeTypeWarning 

Mime type is not conformant mime-type strings

+
DDocError 

DDoc libdigidoc error codes bit masked

Deprecated:
Unused
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Exception() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Exception::Exception (const std::string & file,
int line,
const std::string & msg 
)
+
+
Parameters
+ + + + +
filesource file name, where the exception was thrown.
lineline of the file, where the exception was thrown.
msgerror message.
+
+
+ +
+
+ +

◆ Exception() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Exception::Exception (const std::string & file,
int line,
const std::string & msg,
const Exceptioncause 
)
+
+

Convenience constructor when there is just one cause for this Exception.

+
Parameters
+ + + + + +
filesource file name, where the exception was thrown.
lineline of the file, where the exception was thrown.
msgerror message.
causecause of the exception.
+
+
+
See also
causes()
+ +

References addCause().

+ +
+
+ +

◆ Exception() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
Exception::Exception (const Exceptionother)
+
+default
+
+

Copy constructor

+ +
+
+ +

◆ Exception() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
Exception::Exception (Exception && other)
+
+defaultnoexcept
+
+

Move constructor

+ +
+
+ +

◆ ~Exception()

+ +
+
+ + + + + +
+ + + + + + + +
Exception::~Exception ()
+
+virtualdefault
+
+

Releases memory

+ +
+
+

Member Function Documentation

+ +

◆ addCause()

+ +
+
+ + + + + + + + +
void Exception::addCause (const Exceptioncause)
+
+
+ +

◆ addWarningIgnore()

+ +
+
+ + + + + +
+ + + + + + + + +
void Exception::addWarningIgnore (ExceptionCode code)
+
+static
+
+

Ignore Warning exceptions globaly

Parameters
+ + +
codePush additional exception to list
+
+
+ +

References code().

+ +
+
+ +

◆ causes()

+ +
+
+ + + + + + + +
Exception::Causes Exception::causes () const
+
+

Returns exception causes (other exceptions that caused this exception).

+ +
+
+ +

◆ code()

+ +
+
+ + + + + + + +
Exception::ExceptionCode Exception::code () const
+
+

Returns exception code

+ +

Referenced by addWarningIgnore(), hasWarningIgnore(), and setCode().

+ +
+
+ +

◆ file()

+ +
+
+ + + + + + + +
string Exception::file () const
+
+

Returns exception file

+ +
+
+ +

◆ hasWarningIgnore()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Exception::hasWarningIgnore (ExceptionCode code)
+
+static
+
+

Verifies if Warning exception is in igonre list

+ +

References code().

+ +
+
+ +

◆ line()

+ +
+
+ + + + + + + +
int Exception::line () const
+
+

Returns exception line

+ +
+
+ +

◆ msg()

+ +
+
+ + + + + + + +
string Exception::msg () const
+
+

Returns error message.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Exception & Exception::operator= (const Exceptionother)
+
+default
+
+

Copy operator

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Exception & Exception::operator= (Exception && other)
+
+defaultnoexcept
+
+

Move operator

+ +
+
+ +

◆ setCode()

+ +
+
+ + + + + + + + +
void Exception::setCode (ExceptionCode code)
+
+

Sets exception code

+ +

References code().

+ +

Referenced by digidoc::PKCS11Signer::sign().

+ +
+
+ +

◆ setWarningIgnoreList()

+ +
+
+ + + + + +
+ + + + + + + + +
void Exception::setWarningIgnoreList (const std::vector< ExceptionCode > & list)
+
+static
+
+

Ignore Warning exceptions globaly

Parameters
+ + +
listSet new exception list
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Exception.h
  • +
  • Exception.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Exception.js b/classdigidoc_1_1Exception.js new file mode 100644 index 000000000..acb72ddfa --- /dev/null +++ b/classdigidoc_1_1Exception.js @@ -0,0 +1,48 @@ +var classdigidoc_1_1Exception = +[ + [ "Causes", "classdigidoc_1_1Exception.html#a182d610ce2d743e3d46099de19a55916", null ], + [ "ExceptionCode", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754", [ + [ "General", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754adf2945bf57405a9a47321fc4e9161c3b", null ], + [ "NetworkError", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a04ddaadfea2c0c057a63b1f39c998249", null ], + [ "HostNotFound", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754ac8be9c97df3e7ae588f00b205156733f", null ], + [ "InvalidUrl", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a386ce1c202f4354a4136d2625467de12", null ], + [ "CertificateIssuerMissing", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754aa2e0674312b757d97de9ddf7ec9958df", null ], + [ "CertificateRevoked", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754aa002663681adbd5fcaf8e64bbdb8b180", null ], + [ "CertificateUnknown", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a589efc1424b0b4acc1e2e4baa69c89d4", null ], + [ "OCSPBeforeTimeStamp", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a7db90a4b6787414dc1b75b45da11835b", null ], + [ "OCSPResponderMissing", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a4e301776318ce50c32806ab3e3817a53", null ], + [ "OCSPCertMissing", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a59ace00dc141a735c549161bf5beb2bf", null ], + [ "OCSPTimeSlot", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a17fdc54dbbaa1383ff8500272ab98f96", null ], + [ "OCSPRequestUnauthorized", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754abb5b382789057e10d622185dd8f28467", null ], + [ "TSForbidden", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754ad4fb5a2bb7abcf899350079ca0ba67fc", null ], + [ "TSTooManyRequests", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a7e9e3a468cd2ea384bcaf9990f186ddb", null ], + [ "PINCanceled", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a92cd1057fb81ecc685e4501e7dc111a2", null ], + [ "PINFailed", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a9902ee19ff2c58439acca31c793bcb2b", null ], + [ "PINIncorrect", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a453ad7eef181fe2673fbb8272c58d7e8", null ], + [ "PINLocked", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a9f001d60c651a8e441c64e620ab55a19", null ], + [ "ReferenceDigestWeak", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754ac66d3ff482df38b0d3fae350bb69fded", null ], + [ "SignatureDigestWeak", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a23656be0743e419b2aa12910f22bc82d", null ], + [ "DataFileNameSpaceWarning", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754adb9d178d18df5b2f2148e411cd157ec9", null ], + [ "IssuerNameSpaceWarning", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a219949393ee702f74205f9f676a21ef0", null ], + [ "ProducedATLateWarning", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a83adc4b59601ba09b0db3511730511eb", null ], + [ "MimeTypeWarning", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a6e93320355b09a3c0fda8d91a3dee8a3", null ], + [ "DDocError", "classdigidoc_1_1Exception.html#a7a400013d0a2fb36b1978bc427d0b754a672aa83e8378bf85e03e79d165d1fdb5", null ] + ] ], + [ "Exception", "classdigidoc_1_1Exception.html#a36adf124d57528e7ca151c5c66e54343", null ], + [ "Exception", "classdigidoc_1_1Exception.html#a95d9f9bfb01ff5ec53ae99820c90bfeb", null ], + [ "Exception", "classdigidoc_1_1Exception.html#ae0fd52e62283ee92c085d767d0aab736", null ], + [ "Exception", "classdigidoc_1_1Exception.html#aa743de1d64299a9bc453aa897818a557", null ], + [ "~Exception", "classdigidoc_1_1Exception.html#a6b214cd8627d0968bdeebc1fbb9556b8", null ], + [ "addCause", "classdigidoc_1_1Exception.html#a733f4839af4612e307f2fc6cebd1d08b", null ], + [ "addWarningIgnore", "classdigidoc_1_1Exception.html#affa18639079cbcaa93b32698da69e173", null ], + [ "causes", "classdigidoc_1_1Exception.html#a3f3251fd0a61ed3dbb07235535fb09cc", null ], + [ "code", "classdigidoc_1_1Exception.html#ab3bea7ae7c8769cd4939937762876cd5", null ], + [ "file", "classdigidoc_1_1Exception.html#ae87df780e3b642aa8d5a816a4ecefbf2", null ], + [ "hasWarningIgnore", "classdigidoc_1_1Exception.html#a735ba92654f5169dc6e1f4eb7bb73aa7", null ], + [ "line", "classdigidoc_1_1Exception.html#a488c8f90a8e9d9e241d1577c77be93cb", null ], + [ "msg", "classdigidoc_1_1Exception.html#a15b204bdfbebb71719ad8f40c37c819b", null ], + [ "operator=", "classdigidoc_1_1Exception.html#a55b0cd5ce82cdddd1b94d482e5ee618f", null ], + [ "operator=", "classdigidoc_1_1Exception.html#a470f0a707ea50d992d941e4190946fa3", null ], + [ "setCode", "classdigidoc_1_1Exception.html#a4d4ff85ccb274ead0eee6074c7e7a6f1", null ], + [ "setWarningIgnoreList", "classdigidoc_1_1Exception.html#a6d5d18d0bac4ab852e04ed50f03b4fc0", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1PKCS11Signer-members.html b/classdigidoc_1_1PKCS11Signer-members.html new file mode 100644 index 000000000..fc054eec7 --- /dev/null +++ b/classdigidoc_1_1PKCS11Signer-members.html @@ -0,0 +1,104 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::PKCS11Signer Member List
+
+
+ +

This is the complete list of members for digidoc::PKCS11Signer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
cert() const overridedigidoc::PKCS11Signervirtual
city() constdigidoc::Signer
countryName() constdigidoc::Signer
method() const overridedigidoc::PKCS11Signervirtual
pin(const X509Cert &certificate) constdigidoc::PKCS11Signerprotectedvirtual
PKCS11Signer(const std::string &driver="")digidoc::PKCS11Signer
postalCode() constdigidoc::Signer
profile() constdigidoc::Signer
selectSigningCertificate(const std::vector< X509Cert > &certificates) constdigidoc::PKCS11Signerprotectedvirtual
setENProfile(bool enable)digidoc::Signer
setMethod(const std::string &method)digidoc::Signer
setPin(const std::string &pin)digidoc::PKCS11Signer
setProfile(const std::string &profile)digidoc::Signer
setSignatureProductionPlace(const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignatureProductionPlaceV2(const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignerRoles(const std::vector< std::string > &signerRoles)digidoc::Signer
sign(const std::string &method, const std::vector< unsigned char > &digest) const overridedigidoc::PKCS11Signervirtual
Signer()digidoc::Signerprotected
signerRoles() constdigidoc::Signer
stateOrProvince() constdigidoc::Signer
streetAddress() constdigidoc::Signer
usingENProfile() constdigidoc::Signer
~PKCS11Signer() overridedigidoc::PKCS11Signer
~Signer()digidoc::Signervirtual
+
+ + + + diff --git a/classdigidoc_1_1PKCS11Signer.html b/classdigidoc_1_1PKCS11Signer.html new file mode 100644 index 000000000..7eb5734aa --- /dev/null +++ b/classdigidoc_1_1PKCS11Signer.html @@ -0,0 +1,465 @@ + + + + + + + +libdigidocpp: digidoc::PKCS11Signer Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::PKCS11Signer Class Reference
+
+
+ +

Implements Signer interface for ID-Cards, which support PKCS#11 protocol. + More...

+ +

#include <PKCS11Signer.h>

+
+Inheritance diagram for digidoc::PKCS11Signer:
+
+
+ + +digidoc::Signer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PKCS11Signer (const std::string &driver="")
 
 ~PKCS11Signer () override
 
X509Cert cert () const override
 Reimplemented parent class method digidoc::Signer::cert More...
 
std::string method () const override
 
std::vector< unsigned char > sign (const std::string &method, const std::vector< unsigned char > &digest) const override
 Reimplemented parent class method digidoc::Signer::sign More...
 
void setPin (const std::string &pin)
 
- Public Member Functions inherited from digidoc::Signer
virtual ~Signer ()
 
std::string profile () const
 
bool usingENProfile () const
 
std::string city () const
 
std::string streetAddress () const
 
std::string stateOrProvince () const
 
std::string postalCode () const
 
std::string countryName () const
 
std::vector< std::string > signerRoles () const
 
void setMethod (const std::string &method)
 
void setProfile (const std::string &profile)
 
void setENProfile (bool enable)
 
void setSignatureProductionPlace (const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignatureProductionPlaceV2 (const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignerRoles (const std::vector< std::string > &signerRoles)
 
+ + + + + + + + +

+Protected Member Functions

virtual std::string pin (const X509Cert &certificate) const
 
virtual X509Cert selectSigningCertificate (const std::vector< X509Cert > &certificates) const
 
- Protected Member Functions inherited from digidoc::Signer
 Signer ()
 
+

Detailed Description

+

Implements Signer interface for ID-Cards, which support PKCS#11 protocol.

+

Abstract method selectSigningCertificate is called if the signer needs to choose the correct signing certificate. It is called also if there is only one certificate found on ID-Card. Parameter certificates provides list of all certificates found in the ID-Card.

+

Abstract method pin is called if the selected certificate needs PIN to log in.

+
See also
selectSigningCertificate
+
+pin
+

Constructor & Destructor Documentation

+ +

◆ PKCS11Signer()

+ +
+
+ + + + + + + + +
PKCS11Signer::PKCS11Signer (const std::string & driver = "")
+
+

Loads PKCS#11 driver.

+
Parameters
+ + +
driverfull path to the PKCS#11 driver (e.g. /usr/lib/opensc-pkcs11.so)
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if the provided PKCS#11 driver loading failed.
+
+
+ +

References digidoc::Conf::instance(), and digidoc::Conf::PKCS11Driver().

+ +
+
+ +

◆ ~PKCS11Signer()

+ +
+
+ + + + + +
+ + + + + + + +
PKCS11Signer::~PKCS11Signer ()
+
+override
+
+

Unload PKCS#11 module and releases acquired memory.

+ +
+
+

Member Function Documentation

+ +

◆ cert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert PKCS11Signer::cert () const
+
+overridevirtual
+
+ +

Reimplemented parent class method digidoc::Signer::cert

+

Finds all slots connected with the computer, if the slots have tokens, lists all certificates found in token. If there is more that 1 certificate lets the user application select (by calling the selectSignCertificate callback function) the certificate used for signing.

+
Exceptions
+ + +
Exceptionthrows exception if failed to select the signing certificate. For example no cards found or card has no certificate.
+
+
+ +

Implements digidoc::Signer.

+ +

References digidoc::X509Cert::isCA(), digidoc::X509Cert::isValid(), digidoc::X509Cert::keyUsage(), digidoc::X509Cert::NonRepudiation, and selectSigningCertificate().

+ +
+
+ +

◆ method()

+ +
+
+ + + + + +
+ + + + + + + +
string PKCS11Signer::method () const
+
+overridevirtual
+
+

Gets signature method

+ +

Reimplemented from digidoc::Signer.

+ +

References digidoc::Signer::method().

+ +

Referenced by sign().

+ +
+
+ +

◆ pin()

+ +
+
+ + + + + +
+ + + + + + + + +
string PKCS11Signer::pin (const X509Certcertificate) const
+
+protectedvirtual
+
+

Abstract method that returns PIN code for the selected signing certificate. If PIN code is not needed this method is never called. To cancel the login this method should throw an exception.

+
Parameters
+ + +
certificatecertificate that is used for signing and needs a PIN for login.
+
+
+
Returns
returns the PIN code to login.
+
Exceptions
+ + +
Exceptionshould throw an exception if the login operation should be canceled.
+
+
+ +

Referenced by setPin(), and sign().

+ +
+
+ +

◆ selectSigningCertificate()

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert PKCS11Signer::selectSigningCertificate (const std::vector< X509Cert > & certificates) const
+
+protectedvirtual
+
+

Abstract method for selecting the correct signing certificate. If none of the certificates suit for signing, this method should throw an Exception. This method is always called, when there is at least 1 certificate available.

+
Parameters
+ + +
certificatesavailable certificates to choose from.
+
+
+
Returns
returns the certificate used for signing.
+
Exceptions
+ + +
Exceptionshould throw an exception if no suitable certificate is in the list or the operation should be cancelled.
+
+
+ +

Referenced by cert().

+ +
+
+ +

◆ setPin()

+ +
+
+ + + + + + + + +
void PKCS11Signer::setPin (const std::string & pin)
+
+

If sub class does not want reimplement pin method then it is possible set default pin

+
Parameters
+ + +
pin
+
+
+ +

References pin().

+ +
+
+ +

◆ sign()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
vector< unsigned char > PKCS11Signer::sign (const std::string & method,
const std::vector< unsigned char > & digest 
) const
+
+overridevirtual
+
+ +

Reimplemented parent class method digidoc::Signer::sign

+

Signs the digest provided using the selected certificate. If the certificate needs PIN, the PIN is acquired by calling the callback function pin.

+
Parameters
+ + + +
methoddigest method to be used
digestdigest to sign
+
+
+
Returns
signature signed result
+
Exceptions
+ + +
Exceptionthrows exception if the signing operation failed.
+
+
+ +

Implements digidoc::Signer.

+ +

References method(), pin(), digidoc::Exception::PINCanceled, digidoc::Exception::PINFailed, digidoc::Exception::PINIncorrect, digidoc::Exception::PINLocked, and digidoc::Exception::setCode().

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • PKCS11Signer.h
  • +
  • PKCS11Signer.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1PKCS11Signer.js b/classdigidoc_1_1PKCS11Signer.js new file mode 100644 index 000000000..3036e0449 --- /dev/null +++ b/classdigidoc_1_1PKCS11Signer.js @@ -0,0 +1,11 @@ +var classdigidoc_1_1PKCS11Signer = +[ + [ "PKCS11Signer", "classdigidoc_1_1PKCS11Signer.html#a135e22209cf3874e9398be704c56eba8", null ], + [ "~PKCS11Signer", "classdigidoc_1_1PKCS11Signer.html#a2f2fc7aac3a01a637da0b9e6f4198dec", null ], + [ "cert", "classdigidoc_1_1PKCS11Signer.html#a6ecbf0e36594d5f8a073080a7f1ab3ca", null ], + [ "method", "classdigidoc_1_1PKCS11Signer.html#a67763564693fd121fd475c644685642a", null ], + [ "pin", "classdigidoc_1_1PKCS11Signer.html#a99d922f4fd3def7c3c385a46f406a279", null ], + [ "selectSigningCertificate", "classdigidoc_1_1PKCS11Signer.html#a1481fcce312f45751b4c8a2253c52201", null ], + [ "setPin", "classdigidoc_1_1PKCS11Signer.html#ab51b4c5707f29989c85b9fb883336e82", null ], + [ "sign", "classdigidoc_1_1PKCS11Signer.html#afc1bf7b043313a947072b8af7cba5891", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1PKCS11Signer.png b/classdigidoc_1_1PKCS11Signer.png new file mode 100644 index 0000000000000000000000000000000000000000..674bd7e061b116daecc82356aab43cbcbe4d353c GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^{XiVR!3-qDuU?A=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;-oaYx)Ram~ELzw)G6cfF3hvFv*N>)yYwm~T8~5M0aOp!~`3-?5W1<<{2R1zukx`~O+j z8D}MJx2s!U*Yw@j=ZD*m$ya`Dyng0emb;p0+@fPE{WpC-@Y?tf%i2P-lg<4%SIPdo zwCU^P?xi z*`v#xRUahn;+M_K-WvDPUajV`z@vYE`e&EP?0al{#htP4u}zJ>{kHdvcg|$~_*2Uc g_B1ERQ*!?pie%)@`_J!@111dyPgg&ebxsLQ0Nq_MuK)l5 literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1PKCS12Signer-members.html b/classdigidoc_1_1PKCS12Signer-members.html new file mode 100644 index 000000000..fe3ca6afc --- /dev/null +++ b/classdigidoc_1_1PKCS12Signer-members.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::PKCS12Signer Member List
+
+
+ +

This is the complete list of members for digidoc::PKCS12Signer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
cert() const overridedigidoc::PKCS12Signervirtual
city() constdigidoc::Signer
countryName() constdigidoc::Signer
method() constdigidoc::Signervirtual
PKCS12Signer(const std::string &path, const std::string &pass)digidoc::PKCS12Signer
postalCode() constdigidoc::Signer
profile() constdigidoc::Signer
setENProfile(bool enable)digidoc::Signer
setMethod(const std::string &method)digidoc::Signer
setProfile(const std::string &profile)digidoc::Signer
setSignatureProductionPlace(const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignatureProductionPlaceV2(const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignerRoles(const std::vector< std::string > &signerRoles)digidoc::Signer
sign(const std::string &method, const std::vector< unsigned char > &digest) const overridedigidoc::PKCS12Signervirtual
Signer()digidoc::Signerprotected
signerRoles() constdigidoc::Signer
stateOrProvince() constdigidoc::Signer
streetAddress() constdigidoc::Signer
usingENProfile() constdigidoc::Signer
~PKCS12Signer() overridedigidoc::PKCS12Signer
~Signer()digidoc::Signervirtual
+
+ + + + diff --git a/classdigidoc_1_1PKCS12Signer.html b/classdigidoc_1_1PKCS12Signer.html new file mode 100644 index 000000000..e148e9d0c --- /dev/null +++ b/classdigidoc_1_1PKCS12Signer.html @@ -0,0 +1,303 @@ + + + + + + + +libdigidocpp: digidoc::PKCS12Signer Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::PKCS12Signer Class Reference
+
+
+ +

Implements Signer interface for PKCS#12 files. + More...

+ +

#include <PKCS12Signer.h>

+
+Inheritance diagram for digidoc::PKCS12Signer:
+
+
+ + +digidoc::Signer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PKCS12Signer (const std::string &path, const std::string &pass)
 
 ~PKCS12Signer () override
 
X509Cert cert () const override
 
std::vector< unsigned char > sign (const std::string &method, const std::vector< unsigned char > &digest) const override
 
- Public Member Functions inherited from digidoc::Signer
virtual ~Signer ()
 
virtual std::string method () const
 
std::string profile () const
 
bool usingENProfile () const
 
std::string city () const
 
std::string streetAddress () const
 
std::string stateOrProvince () const
 
std::string postalCode () const
 
std::string countryName () const
 
std::vector< std::string > signerRoles () const
 
void setMethod (const std::string &method)
 
void setProfile (const std::string &profile)
 
void setENProfile (bool enable)
 
void setSignatureProductionPlace (const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignatureProductionPlaceV2 (const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignerRoles (const std::vector< std::string > &signerRoles)
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from digidoc::Signer
 Signer ()
 
+

Detailed Description

+

Implements Signer interface for PKCS#12 files.

+

Constructor & Destructor Documentation

+ +

◆ PKCS12Signer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
PKCS12Signer::PKCS12Signer (const std::string & path,
const std::string & pass 
)
+
+

Initializes the PKCS12 signer with PKCS#12 file and password.

+
Parameters
+ + + +
pathPKCS#12 file path
passPKCS#12 file password
+
+
+
Exceptions
+ + +
Exceptionthrows exception if the file is not found or wrong password
+
+
+ +
+
+ +

◆ ~PKCS12Signer()

+ +
+
+ + + + + +
+ + + + + + + +
PKCS12Signer::~PKCS12Signer ()
+
+override
+
+ +
+
+

Member Function Documentation

+ +

◆ cert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert PKCS12Signer::cert () const
+
+overridevirtual
+
+

Returns signer certificate. Must be reimplemented when subclassing

+ +

Implements digidoc::Signer.

+ +
+
+ +

◆ sign()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
vector< unsigned char > PKCS12Signer::sign (const std::string & method,
const std::vector< unsigned char > & digest 
) const
+
+overridevirtual
+
+

Signs message digest. Must be reimplemented when subclassing

Parameters
+ + + +
methoddigest method to be used
digestdigest to sign
+
+
+
Returns
signature signed result
+
Exceptions
+ + +
Exceptionthrows exception on error
+
+
+ +

Implements digidoc::Signer.

+ +

References digidoc::Signer::method().

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • PKCS12Signer.h
  • +
  • PKCS12Signer.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1PKCS12Signer.js b/classdigidoc_1_1PKCS12Signer.js new file mode 100644 index 000000000..0af9c12f1 --- /dev/null +++ b/classdigidoc_1_1PKCS12Signer.js @@ -0,0 +1,7 @@ +var classdigidoc_1_1PKCS12Signer = +[ + [ "PKCS12Signer", "classdigidoc_1_1PKCS12Signer.html#aeb4abb31b32d014282eb5a8287102f86", null ], + [ "~PKCS12Signer", "classdigidoc_1_1PKCS12Signer.html#afe4aad2952fc6d0e4a141728e0e699c4", null ], + [ "cert", "classdigidoc_1_1PKCS12Signer.html#aacf603cce1716e6f9c3743e74013d514", null ], + [ "sign", "classdigidoc_1_1PKCS12Signer.html#a0c411343b661743255c011424deeca49", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1PKCS12Signer.png b/classdigidoc_1_1PKCS12Signer.png new file mode 100644 index 0000000000000000000000000000000000000000..11077ceba751b0e4a350ce9f023e167e247d8979 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^{XiVR!3-qDuU?A=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;fAbUW-z1((=4K!ETbsWFR(v6g+MJ7ha>sbN-RD1f{T9hRtEAdmmcGlhxI}`Kv%1&3ynEb;0$ByrxPrem@sgrR&U8lb4Pm pyZZZ#Ntf6a(wyc8dChFEpO_|hC3y1U-@p{Y;OXk;vd$@?2>@^4Fhu|W literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1Signature-members.html b/classdigidoc_1_1Signature-members.html new file mode 100644 index 000000000..78185b0c5 --- /dev/null +++ b/classdigidoc_1_1Signature-members.html @@ -0,0 +1,112 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::Signature Member List
+
+
+ +

This is the complete list of members for digidoc::Signature, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArchiveTimeStampCertificate() constdigidoc::Signaturevirtual
ArchiveTimeStampTime() constdigidoc::Signaturevirtual
city() constdigidoc::Signaturevirtual
claimedSigningTime() const =0digidoc::Signaturepure virtual
countryName() constdigidoc::Signaturevirtual
dataToSign() const =0digidoc::Signaturepure virtual
extendSignatureProfile(const std::string &profile)digidoc::Signaturevirtual
id() const =0digidoc::Signaturepure virtual
messageImprint() constdigidoc::Signaturevirtual
OCSPCertificate() constdigidoc::Signaturevirtual
OCSPNonce() constdigidoc::Signaturevirtual
OCSPProducedAt() constdigidoc::Signaturevirtual
policy() constdigidoc::Signaturevirtual
POLv1digidoc::Signaturestatic
POLv2digidoc::Signaturestatic
postalCode() constdigidoc::Signaturevirtual
profile() const =0digidoc::Signaturepure virtual
setSignatureValue(const std::vector< unsigned char > &signatureValue)=0digidoc::Signaturepure virtual
Signature()digidoc::Signatureprotected
signatureMethod() const =0digidoc::Signaturepure virtual
signedBy() constdigidoc::Signaturevirtual
signerRoles() constdigidoc::Signaturevirtual
signingCertificate() const =0digidoc::Signaturepure virtual
SPUri() constdigidoc::Signaturevirtual
stateOrProvince() constdigidoc::Signaturevirtual
streetAddress() constdigidoc::Signaturevirtual
TimeStampCertificate() constdigidoc::Signaturevirtual
TimeStampTime() constdigidoc::Signaturevirtual
trustedSigningTime() const =0digidoc::Signaturepure virtual
validate() const =0digidoc::Signaturepure virtual
validate(const std::string &policy) constdigidoc::Signaturevirtual
~Signature()digidoc::Signaturevirtual
+
+ + + + diff --git a/classdigidoc_1_1Signature.html b/classdigidoc_1_1Signature.html new file mode 100644 index 000000000..3f61bfbcc --- /dev/null +++ b/classdigidoc_1_1Signature.html @@ -0,0 +1,1020 @@ + + + + + + + +libdigidocpp: digidoc::Signature Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::Signature Class Referenceabstract
+
+
+ +

Signature interface. Provides interface for handling a signature and the corresponding OCSP response properties. + More...

+ +

#include <Signature.h>

+ + + + +

+Classes

class  Validator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~Signature ()
 
virtual std::string id () const =0
 
virtual std::string claimedSigningTime () const =0
 
virtual std::string trustedSigningTime () const =0
 
virtual X509Cert signingCertificate () const =0
 
virtual std::string signatureMethod () const =0
 
virtual void validate () const =0
 
virtual std::vector< unsigned char > dataToSign () const =0
 
virtual void setSignatureValue (const std::vector< unsigned char > &signatureValue)=0
 
virtual void extendSignatureProfile (const std::string &profile)
 
virtual std::string policy () const
 
virtual std::string SPUri () const
 
virtual std::string profile () const =0
 
virtual std::string city () const
 
virtual std::string stateOrProvince () const
 
virtual std::string postalCode () const
 
virtual std::string countryName () const
 
virtual std::vector< std::string > signerRoles () const
 
virtual std::string OCSPProducedAt () const
 
virtual X509Cert OCSPCertificate () const
 
virtual DIGIDOCPP_DEPRECATED std::vector< unsigned char > OCSPNonce () const
 
virtual X509Cert TimeStampCertificate () const
 
virtual std::string TimeStampTime () const
 
virtual X509Cert ArchiveTimeStampCertificate () const
 
virtual std::string ArchiveTimeStampTime () const
 
virtual std::string streetAddress () const
 
virtual std::string signedBy () const
 
virtual void validate (const std::string &policy) const
 
virtual std::vector< unsigned char > messageImprint () const
 
+ + + + + +

+Static Public Attributes

static const std::string POLv1 = "POLv1"
 
static const std::string POLv2 = "POLv2"
 
+ + + +

+Protected Member Functions

 Signature ()
 
+

Detailed Description

+

Signature interface. Provides interface for handling a signature and the corresponding OCSP response properties.

+

Constructor & Destructor Documentation

+ +

◆ ~Signature()

+ +
+
+ + + + + +
+ + + + + + + +
Signature::~Signature ()
+
+virtualdefault
+
+

Releases signature.

+ +
+
+ +

◆ Signature()

+ +
+
+ + + + + +
+ + + + + + + +
Signature::Signature ()
+
+protecteddefault
+
+

Creates an new empty signature.

+ +
+
+

Member Function Documentation

+ +

◆ ArchiveTimeStampCertificate()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert Signature::ArchiveTimeStampCertificate () const
+
+virtual
+
+

Returns signature Archive TimeStampToken certificate.

+ +
+
+ +

◆ ArchiveTimeStampTime()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::ArchiveTimeStampTime () const
+
+virtual
+
+

Returns signature Archive TimeStampToken time.

+ +
+
+ +

◆ city()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::city () const
+
+virtual
+
+

Returns signature production city.

+ +
+
+ +

◆ claimedSigningTime()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::claimedSigningTime () const
+
+pure virtual
+
+

Returns signature computer time that was used for signing.

+ +
+
+ +

◆ countryName()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::countryName () const
+
+virtual
+
+

Returns signature production country.

+ +
+
+ +

◆ dataToSign()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::dataToSign () const
+
+pure virtual
+
+

Digest to sign with token

+ +
+
+ +

◆ extendSignatureProfile()

+ +
+
+ + + + + +
+ + + + + + + + +
void Signature::extendSignatureProfile (const std::string & profile)
+
+virtual
+
+

Extends signature to selected profile

+
Parameters
+ + +
profileTarget profile
+
+
+ +
+
+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::id () const
+
+pure virtual
+
+

Returns signature id.

+ +
+
+ +

◆ messageImprint()

+ +
+
+ + + + + +
+ + + + + + + +
vector< unsigned char > Signature::messageImprint () const
+
+virtual
+
+

Returns signed signature hash message imprint value (TM - OCSP Nonce, TS - TimeStamp value)

+ +
+
+ +

◆ OCSPCertificate()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert Signature::OCSPCertificate () const
+
+virtual
+
+

Returns signature OCSP responder certificate.

+ +
+
+ +

◆ OCSPNonce()

+ +
+
+ + + + + +
+ + + + + + + +
vector< unsigned char > Signature::OCSPNonce () const
+
+virtual
+
+

Returns signed signature message imprint in OCSP response nonce.

Deprecated:
Use messageImprint()
+ +
+
+ +

◆ OCSPProducedAt()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::OCSPProducedAt () const
+
+virtual
+
+

Returns signature OCSP producedAt timestamp.

+ +
+
+ +

◆ policy()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::policy () const
+
+virtual
+
+

Returns signature policy when it is available or empty string.

+ +
+
+ +

◆ postalCode()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::postalCode () const
+
+virtual
+
+

Returns signature production postal code.

+ +
+
+ +

◆ profile()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::profile () const
+
+pure virtual
+
+

Returns signature profile.

+ +
+
+ +

◆ setSignatureValue()

+ +
+
+ + + + + +
+ + + + + + + + +
digidoc::Signature::setSignatureValue (const std::vector< unsigned char > & signatureValue)
+
+pure virtual
+
+

Signed digest will be added to SignatureValue element

See also
dataToSign
+ +
+
+ +

◆ signatureMethod()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::signatureMethod () const
+
+pure virtual
+
+

Returns signature method that was used for signing.

+ +
+
+ +

◆ signedBy()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::signedBy () const
+
+virtual
+
+

Return signer's certificate common name

+ +
+
+ +

◆ signerRoles()

+ +
+
+ + + + + +
+ + + + + + + +
vector< string > Signature::signerRoles () const
+
+virtual
+
+

Returns signer's roles.

+ +
+
+ +

◆ signingCertificate()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::signingCertificate () const
+
+pure virtual
+
+

Returns signature certificate that was used for signing.

+ +
+
+ +

◆ SPUri()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::SPUri () const
+
+virtual
+
+

Returns signature policy uri when it is available or empty string.

+ +
+
+ +

◆ stateOrProvince()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::stateOrProvince () const
+
+virtual
+
+

Returns signature production state or province.

+ +
+
+ +

◆ streetAddress()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::streetAddress () const
+
+virtual
+
+

Returns signature production street address.

+ +
+
+ +

◆ TimeStampCertificate()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert Signature::TimeStampCertificate () const
+
+virtual
+
+

Returns signature TimeStampToken certificate.

+ +
+
+ +

◆ TimeStampTime()

+ +
+
+ + + + + +
+ + + + + + + +
string Signature::TimeStampTime () const
+
+virtual
+
+

Returns signature TimeStampToken time.

+ +
+
+ +

◆ trustedSigningTime()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::trustedSigningTime () const
+
+pure virtual
+
+

Time value that is regarded as trusted signing time, denoting the earliest time when it can be trusted by the validation application (because proven by some Proof-of-Existence present in the signature) that a signature has existed.

+ +
+
+ +

◆ validate() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signature::validate () const
+
+pure virtual
+
+

Validates signature

+ +

Referenced by digidoc::Signature::Validator::Validator().

+ +
+
+ +

◆ validate() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void Signature::validate (const std::string & policy) const
+
+virtual
+
+

Validates signature

See also
POLv1
+
+POLv2
+ +
+
+

Member Data Documentation

+ +

◆ POLv1

+ +
+
+ + + + + +
+ + + + +
const string Signature::POLv1 = "POLv1"
+
+static
+
+
+ +

◆ POLv2

+ +
+
+ + + + + +
+ + + + +
const string Signature::POLv2 = "POLv2"
+
+static
+
+
+
The documentation for this class was generated from the following files:
    +
  • Signature.h
  • +
  • Signature.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Signature.js b/classdigidoc_1_1Signature.js new file mode 100644 index 000000000..627bbc3c4 --- /dev/null +++ b/classdigidoc_1_1Signature.js @@ -0,0 +1,36 @@ +var classdigidoc_1_1Signature = +[ + [ "Validator", "classdigidoc_1_1Signature_1_1Validator.html", "classdigidoc_1_1Signature_1_1Validator" ], + [ "~Signature", "classdigidoc_1_1Signature.html#ad0bb12039b385e4600dddc7d703f52fb", null ], + [ "Signature", "classdigidoc_1_1Signature.html#aacfc092d01d1efd7008c027caaa9203c", null ], + [ "ArchiveTimeStampCertificate", "classdigidoc_1_1Signature.html#ad9c592c740a269f8e439ec8bc6fbbb43", null ], + [ "ArchiveTimeStampTime", "classdigidoc_1_1Signature.html#a013ca2f974e70ac37cb25cabe7d6dcde", null ], + [ "city", "classdigidoc_1_1Signature.html#aee327c62721404edf03f7eac4453a1a9", null ], + [ "claimedSigningTime", "classdigidoc_1_1Signature.html#ade29203b56e1b6a773b5bdea3b3837d3", null ], + [ "countryName", "classdigidoc_1_1Signature.html#afc61a610ac4030aa2d06cfabf0d55230", null ], + [ "dataToSign", "classdigidoc_1_1Signature.html#ae2319a1fcb9d2f9c8dc8411e90d54bd3", null ], + [ "extendSignatureProfile", "classdigidoc_1_1Signature.html#ac5b39c269968721b7bdee7edd2cb0c18", null ], + [ "id", "classdigidoc_1_1Signature.html#abad33f8a0701475ba6a76f292e466b6a", null ], + [ "messageImprint", "classdigidoc_1_1Signature.html#a4509171005ff82a4f32e5dea7695db31", null ], + [ "OCSPCertificate", "classdigidoc_1_1Signature.html#aadc0faa2fe729e5eb60a19a19f26e427", null ], + [ "OCSPNonce", "classdigidoc_1_1Signature.html#acf57d90b9de5c034d41a06c00c132179", null ], + [ "OCSPProducedAt", "classdigidoc_1_1Signature.html#a2bdfddb692387d8fa7219b1c0035f1cd", null ], + [ "policy", "classdigidoc_1_1Signature.html#a73fdf37cab3e4e3dba87c5c2eb5d2e6a", null ], + [ "postalCode", "classdigidoc_1_1Signature.html#a736d12cb6719ae60b728c8921e240a3e", null ], + [ "profile", "classdigidoc_1_1Signature.html#aef316c2b2eff55cefe181909bea15698", null ], + [ "setSignatureValue", "classdigidoc_1_1Signature.html#a40e8a2b40d72195265f52900b4d8f52d", null ], + [ "signatureMethod", "classdigidoc_1_1Signature.html#af19845be81efad6392b47f8584a7e7ef", null ], + [ "signedBy", "classdigidoc_1_1Signature.html#a3a6a8e3479d104bbfc5269ded6b0f62f", null ], + [ "signerRoles", "classdigidoc_1_1Signature.html#a5d41bbecfd7b48016c6861d8f3ac3635", null ], + [ "signingCertificate", "classdigidoc_1_1Signature.html#ab80dc18db5558f5a7bf91a26abb79dc8", null ], + [ "SPUri", "classdigidoc_1_1Signature.html#a52e28b30bfd92b66fb5d8c869cc8cb23", null ], + [ "stateOrProvince", "classdigidoc_1_1Signature.html#a25d5ec28bd803acd47b918ce7ab33ef7", null ], + [ "streetAddress", "classdigidoc_1_1Signature.html#a24103afb8d8749e25d7cae9eb87682f5", null ], + [ "TimeStampCertificate", "classdigidoc_1_1Signature.html#a9c44bb18a386eb8016a6af5b6e04e3f0", null ], + [ "TimeStampTime", "classdigidoc_1_1Signature.html#af03c3df30f3588342516121955c721c8", null ], + [ "trustedSigningTime", "classdigidoc_1_1Signature.html#a0a49d62450477d234436a284e481e169", null ], + [ "validate", "classdigidoc_1_1Signature.html#ae7025a0a13b01f4949f600774c720a2d", null ], + [ "validate", "classdigidoc_1_1Signature.html#a5d05972d65d5e0188b7e9c5f96aa16cc", null ], + [ "POLv1", "classdigidoc_1_1Signature.html#a9ba7618f67d8c77c8c02b7b1b568f56b", null ], + [ "POLv2", "classdigidoc_1_1Signature.html#a84cbedf31bfa0962bc7eab5664464020", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1Signature_1_1Validator-members.html b/classdigidoc_1_1Signature_1_1Validator-members.html new file mode 100644 index 000000000..c078bf961 --- /dev/null +++ b/classdigidoc_1_1Signature_1_1Validator-members.html @@ -0,0 +1,92 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/classdigidoc_1_1Signature_1_1Validator.html b/classdigidoc_1_1Signature_1_1Validator.html new file mode 100644 index 000000000..b7ea2f65f --- /dev/null +++ b/classdigidoc_1_1Signature_1_1Validator.html @@ -0,0 +1,229 @@ + + + + + + + +libdigidocpp: digidoc::Signature::Validator Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::Signature::Validator Class Reference
+
+
+ +

#include <Signature.h>

+ + + + +

+Public Types

enum  Status {
+  Valid +, Warning +, NonQSCD +, Test +,
+  Invalid +, Unknown +
+ }
 
+ + + + + + + + + + + +

+Public Member Functions

 Validator (const Signature *s)
 
 ~Validator ()
 
std::string diagnostics () const
 
Status status () const
 
std::vector< Exception::ExceptionCodewarnings () const
 
+

Member Enumeration Documentation

+ +

◆ Status

+ +
+
+ + + + + + + +
Enumerator
Valid 
Warning 
NonQSCD 
Test 
Invalid 
Unknown 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Validator()

+ +
+
+ + + + + + + + +
Signature::Validator::Validator (const Signatures)
+
+
+ +

◆ ~Validator()

+ +
+
+ + + + + + + +
Signature::Validator::~Validator ()
+
+ +
+
+

Member Function Documentation

+ +

◆ diagnostics()

+ +
+
+ + + + + + + +
std::string Signature::Validator::diagnostics () const
+
+ +
+
+ +

◆ status()

+ +
+
+ + + + + + + +
Signature::Validator::Status Signature::Validator::status () const
+
+ +
+
+ +

◆ warnings()

+ +
+
+ + + + + + + +
std::vector< Exception::ExceptionCode > Signature::Validator::warnings () const
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Signature.h
  • +
  • Signature.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Signature_1_1Validator.js b/classdigidoc_1_1Signature_1_1Validator.js new file mode 100644 index 000000000..0745f8524 --- /dev/null +++ b/classdigidoc_1_1Signature_1_1Validator.js @@ -0,0 +1,16 @@ +var classdigidoc_1_1Signature_1_1Validator = +[ + [ "Status", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402", [ + [ "Valid", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402a83a51ea772d12219b45720b49d44ea8a", null ], + [ "Warning", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402acb32d923ab5a7a2910e4a2056c288ec4", null ], + [ "NonQSCD", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402ad28366ef0c98352dea6de00fb4f12a92", null ], + [ "Test", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402a61d3158fb0aa8d356ef5f04c8a3f55c8", null ], + [ "Invalid", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402afd6ba0fab010ab1cc06a2fd621699636", null ], + [ "Unknown", "classdigidoc_1_1Signature_1_1Validator.html#af08d26ad92c6fbb6b000bceb1a417402a69c6cbc92eb8b6b986adbe7863971afc", null ] + ] ], + [ "Validator", "classdigidoc_1_1Signature_1_1Validator.html#a89d09c978b0e0e45728a6b32b4b3976e", null ], + [ "~Validator", "classdigidoc_1_1Signature_1_1Validator.html#a8982cf7f244ebe484f2230ae176e5e87", null ], + [ "diagnostics", "classdigidoc_1_1Signature_1_1Validator.html#a47f833a287de645688792b0e3c573e3e", null ], + [ "status", "classdigidoc_1_1Signature_1_1Validator.html#a8e7b5091a9d51763e582e74d7b8cde0e", null ], + [ "warnings", "classdigidoc_1_1Signature_1_1Validator.html#a66166d43cb461861d22354d2af135d17", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1Signer-members.html b/classdigidoc_1_1Signer-members.html new file mode 100644 index 000000000..7647b604c --- /dev/null +++ b/classdigidoc_1_1Signer-members.html @@ -0,0 +1,99 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::Signer Member List
+
+
+ +

This is the complete list of members for digidoc::Signer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
cert() const =0digidoc::Signerpure virtual
city() constdigidoc::Signer
countryName() constdigidoc::Signer
method() constdigidoc::Signervirtual
postalCode() constdigidoc::Signer
profile() constdigidoc::Signer
setENProfile(bool enable)digidoc::Signer
setMethod(const std::string &method)digidoc::Signer
setProfile(const std::string &profile)digidoc::Signer
setSignatureProductionPlace(const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignatureProductionPlaceV2(const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignerRoles(const std::vector< std::string > &signerRoles)digidoc::Signer
sign(const std::string &method, const std::vector< unsigned char > &digest) const =0digidoc::Signerpure virtual
Signer()digidoc::Signerprotected
signerRoles() constdigidoc::Signer
stateOrProvince() constdigidoc::Signer
streetAddress() constdigidoc::Signer
usingENProfile() constdigidoc::Signer
~Signer()digidoc::Signervirtual
+
+ + + + diff --git a/classdigidoc_1_1Signer.html b/classdigidoc_1_1Signer.html new file mode 100644 index 000000000..e22692efa --- /dev/null +++ b/classdigidoc_1_1Signer.html @@ -0,0 +1,673 @@ + + + + + + + +libdigidocpp: digidoc::Signer Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::Signer Class Referenceabstract
+
+
+ +

Signer interface. Provides interface for signing documents. + More...

+ +

#include <Signer.h>

+
+Inheritance diagram for digidoc::Signer:
+
+
+ + +digidoc::PKCS11Signer +digidoc::PKCS12Signer +digidoc::WinSigner + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~Signer ()
 
virtual X509Cert cert () const =0
 
virtual std::vector< unsigned char > sign (const std::string &method, const std::vector< unsigned char > &digest) const =0
 
virtual std::string method () const
 
std::string profile () const
 
bool usingENProfile () const
 
std::string city () const
 
std::string streetAddress () const
 
std::string stateOrProvince () const
 
std::string postalCode () const
 
std::string countryName () const
 
std::vector< std::string > signerRoles () const
 
void setMethod (const std::string &method)
 
void setProfile (const std::string &profile)
 
void setENProfile (bool enable)
 
void setSignatureProductionPlace (const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignatureProductionPlaceV2 (const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignerRoles (const std::vector< std::string > &signerRoles)
 
+ + + +

+Protected Member Functions

 Signer ()
 
+

Detailed Description

+

Signer interface. Provides interface for signing documents.

+

Digidoc LIB implements PKCS11, PKCS12, Windows Crypto signer class that allows signing with various tokens. Other implementations may provide signing implementation with other public-key cryptography systems.

+

Constructor & Destructor Documentation

+ +

◆ ~Signer()

+ +
+
+ + + + + +
+ + + + + + + +
Signer::~Signer ()
+
+virtualdefault
+
+

Destructor

+ +
+
+ +

◆ Signer()

+ +
+
+ + + + + +
+ + + + + + + +
Signer::Signer ()
+
+protected
+
+

Constructor

+ +
+
+

Member Function Documentation

+ +

◆ cert()

+ +
+
+ + + + + +
+ + + + + + + +
digidoc::Signer::cert () const
+
+pure virtual
+
+

Returns signer certificate. Must be reimplemented when subclassing

+ +

Implemented in digidoc::PKCS12Signer, and digidoc::PKCS11Signer.

+ +

Referenced by method().

+ +
+
+ +

◆ city()

+ +
+
+ + + + + + + +
string Signer::city () const
+
+

Returns city from signature production place

+ +

Referenced by setSignatureProductionPlace(), and setSignatureProductionPlaceV2().

+ +
+
+ +

◆ countryName()

+ +
+
+ + + + + + + +
string Signer::countryName () const
+
+

Returns country from signature production place

+ +

Referenced by setSignatureProductionPlace(), and setSignatureProductionPlaceV2().

+ +
+
+ +

◆ method()

+ +
+
+ + + + + +
+ + + + + + + +
string Signer::method () const
+
+virtual
+
+

Gets signature method

+ +

Reimplemented in digidoc::PKCS11Signer.

+ +

References cert(), and digidoc::X509Cert::handle().

+ +

Referenced by digidoc::PKCS11Signer::method(), setMethod(), and digidoc::PKCS12Signer::sign().

+ +
+
+ +

◆ postalCode()

+ +
+
+ + + + + + + +
string Signer::postalCode () const
+
+

Returns postal code from signature production place

+ +

Referenced by setSignatureProductionPlace(), and setSignatureProductionPlaceV2().

+ +
+
+ +

◆ profile()

+ +
+
+ + + + + + + +
string Signer::profile () const
+
+

Returns signing profile

+ +

Referenced by setProfile().

+ +
+
+ +

◆ setENProfile()

+ +
+
+ + + + + + + + +
void Signer::setENProfile (bool enable)
+
+

Toggle XAdES EN profile usage on signing

+ +

Referenced by setSignatureProductionPlaceV2().

+ +
+
+ +

◆ setMethod()

+ +
+
+ + + + + + + + +
void Signer::setMethod (const std::string & method)
+
+

Sets signature method

+ +

References method().

+ +
+
+ +

◆ setProfile()

+ +
+
+ + + + + + + + +
void Signer::setProfile (const std::string & profile)
+
+

Set signing profile

+
    +
  • time-stamp
  • +
  • time-stamp-archive
  • +
+ +

References profile().

+ +
+
+ +

◆ setSignatureProductionPlace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Signer::setSignatureProductionPlace (const std::string & city,
const std::string & stateOrProvince,
const std::string & postalCode,
const std::string & countryName 
)
+
+

Sets signature production place according XAdES standard. Note that setting the signature production place is optional.

Parameters
+ + + + + +
city
stateOrProvince
postalCode
countryName
+
+
+ +

References city(), countryName(), postalCode(), and stateOrProvince().

+ +
+
+ +

◆ setSignatureProductionPlaceV2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Signer::setSignatureProductionPlaceV2 (const std::string & city,
const std::string & streetAddress,
const std::string & stateOrProvince,
const std::string & postalCode,
const std::string & countryName 
)
+
+

Sets signature production place according XAdES EN standard. Note that setting the signature production place is optional.

Parameters
+ + + + + + +
city
streetAddress
stateOrProvince
postalCode
countryName
+
+
+ +

References city(), countryName(), postalCode(), setENProfile(), stateOrProvince(), and streetAddress().

+ +
+
+ +

◆ setSignerRoles()

+ +
+
+ + + + + + + + +
void Signer::setSignerRoles (const std::vector< std::string > & signerRoles)
+
+

Sets signature roles according XAdES standard. The parameter may contain the signer’s role and optionally the signer’s resolution. Note that only one signer role value (i.e. one <ClaimedRole> XML element) should be used. If the signer role contains both role and resolution then they must be separated with a slash mark, e.g. “role / resolution”.

+ +

References signerRoles().

+ +
+
+ +

◆ sign()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< unsigned char > digidoc::Signer::sign (const std::string & method,
const std::vector< unsigned char > & digest 
) const
+
+pure virtual
+
+

Signs message digest. Must be reimplemented when subclassing

Parameters
+ + + +
methoddigest method to be used
digestdigest to sign
+
+
+
Returns
signature signed result
+
Exceptions
+ + +
Exceptionthrows exception on error
+
+
+ +

Implemented in digidoc::PKCS12Signer, and digidoc::PKCS11Signer.

+ +
+
+ +

◆ signerRoles()

+ +
+
+ + + + + + + +
vector< string > Signer::signerRoles () const
+
+

Returns signer roles

+ +

Referenced by setSignerRoles().

+ +
+
+ +

◆ stateOrProvince()

+ +
+
+ + + + + + + +
string Signer::stateOrProvince () const
+
+

Returns state from signature production place

+ +

Referenced by setSignatureProductionPlace(), and setSignatureProductionPlaceV2().

+ +
+
+ +

◆ streetAddress()

+ +
+
+ + + + + + + +
string Signer::streetAddress () const
+
+

Returns streetAddress from signature production place

+ +

Referenced by setSignatureProductionPlaceV2().

+ +
+
+ +

◆ usingENProfile()

+ +
+
+ + + + + + + +
bool Signer::usingENProfile () const
+
+

Use XAdES EN profile

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • Signer.h
  • +
  • Signer.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1Signer.js b/classdigidoc_1_1Signer.js new file mode 100644 index 000000000..278478605 --- /dev/null +++ b/classdigidoc_1_1Signer.js @@ -0,0 +1,22 @@ +var classdigidoc_1_1Signer = +[ + [ "~Signer", "classdigidoc_1_1Signer.html#a41490533b37bc54ee53c6f90e7c96712", null ], + [ "Signer", "classdigidoc_1_1Signer.html#a7f8267b0af0ce05e01e2b21e8f3d974a", null ], + [ "cert", "classdigidoc_1_1Signer.html#a7eb1b63bddc7376f25c8e50c053c7eb1", null ], + [ "city", "classdigidoc_1_1Signer.html#aadd394c830c7d1d007886eeb1e6c6a26", null ], + [ "countryName", "classdigidoc_1_1Signer.html#a74285b177fb4a8b4296c3e3ee003490c", null ], + [ "method", "classdigidoc_1_1Signer.html#aae6c966060bf8855d855f3a4784f7c2e", null ], + [ "postalCode", "classdigidoc_1_1Signer.html#a416bed411b532862dec816830c96e7b8", null ], + [ "profile", "classdigidoc_1_1Signer.html#a5c3b7a4ec3db2b586916ee63a33b624a", null ], + [ "setENProfile", "classdigidoc_1_1Signer.html#a89c257ecbd64fdfd58de75fdaec99234", null ], + [ "setMethod", "classdigidoc_1_1Signer.html#a062d17798a9b1ebbbd524f9b0527061c", null ], + [ "setProfile", "classdigidoc_1_1Signer.html#acb96096d6b5ea03dbc5026a7aabc41c4", null ], + [ "setSignatureProductionPlace", "classdigidoc_1_1Signer.html#a811829fbc4a70a487301e194c1a09f76", null ], + [ "setSignatureProductionPlaceV2", "classdigidoc_1_1Signer.html#a191b4533763c268acfed17d656ba790a", null ], + [ "setSignerRoles", "classdigidoc_1_1Signer.html#a9c34490317e1eafd25661acb22b0d981", null ], + [ "sign", "classdigidoc_1_1Signer.html#a76c3e0f0510c696f8de8abb70359ce43", null ], + [ "signerRoles", "classdigidoc_1_1Signer.html#a53bf835b8b0b104d2f324e124f61814c", null ], + [ "stateOrProvince", "classdigidoc_1_1Signer.html#af4bf4477570a92305aa876ffce914b3b", null ], + [ "streetAddress", "classdigidoc_1_1Signer.html#aaae5230f4453e7cb3f50b3c0b69c408d", null ], + [ "usingENProfile", "classdigidoc_1_1Signer.html#a93f4f21e7800cba9d94fa5652dff8d42", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1Signer.png b/classdigidoc_1_1Signer.png new file mode 100644 index 0000000000000000000000000000000000000000..49ef63204561ad3a1eb7a5ab15fcb4b9c6102375 GIT binary patch literal 1136 zcmeAS@N?(olHy`uVBq!ia0y~yU_1z92XHV0$uJGO4j?5F;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|!2I9S#WAFU@$KBVn^x@+Vw>$J`n~?7 z`}8EHPZKrXO`ju`U3I!mVxB4Q$@qqBBc8(riVRE*S?jKDHsHA6Cc*MzCXhBx6j+dc zNWtN}%=b5DO8ixFxqq{E)b0}$WMjOw!id8l`Ehvt^8FhHfLx0gH{VXJ+Shz~@$cW? zYTn*c(>{LQ&9;tngP#OT#^Vi(zhAS@uKW@-t6%Q2=;E&IpH>I7fQI)zE>C)v;43>J z`xblnem>q-#|E==W;+aD{o`zASYEv9;Pbfcwpu()b548yelY9c)WAf62QhqAWt$B+ zBV_J|A3NT0DJV{-`{U7s23epxrFCty-{$Y`2YDg)eAcxC`N!HF8~j(iyICyDvSLwb zjReb&hU~98JWN}FUZ_&zVfx|&^Xg#(9&siGh9B2^7#JOvw>UQRNgfa2xS$VoWpW;q zv!cUxpx8dndInozbgi&Z0xFmXbT>$Wmc;Qwo@0eFs~L9)Os~D7EaAXQp0gfhI3tA000vuVGS13raUT~6NS)tIx7$VTil%dGO6e4htL94@! zaSJezwK@_QL|qm$L~%4Ti2nJ{?yb30SR&Z#C5uvom*!T7puIe)i$nAew>G;j4&mo) zUM1S%cvbAsf-Kg=fUQjiD{dV+^Wa1HPy3_OtyVw$H&f64U*(*N+Vkof?W^-P-dhpR zGJF1CgBi0{tEMiK2%PPDcB{z>t7P> zx{P#9|GFrDvx?t`m)X}8ZrQLg=gOaBul*mEY@1WJ@P}c_(!l*(X4TAgoXehN`Oloc z@VV~l%`0}svHhQS?)sF|iyy6=SDrp=3r9Gc=Cw78((5NbtDM(qF7Gk7m;@lUF?%#^rXZ14a`@ee$xf>oGNX9+IeDs|?jm~z&p6+3TzKe%;o%EV_U9-LaTo2_0j=W0SQ*d<)e){$3Y^qarO zKjAGcGkL4IKK$p~jTL;e+}7rpAGHebi9fUV?uz>?+TTw516_41Xr0uWbBmsxV!Il% zIyv-wV)d`XZY%%wod?SKc}7~E>^gY%d+68dZ_DpzUjcc;&-13i$y?SIYt2^KCzSuX z>lSM^W7g{_Q@&2lS+i)>e@@@-sjv1wI&^SR;Hq|D#Bu>6mKzeWQH~NJxewC}mQGpc kd~wB;pj~{^dB553D~^7ja&2)xuy|nbboFyt=akR{0F?g)UH||9 literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1WinSigner-members.html b/classdigidoc_1_1WinSigner-members.html new file mode 100644 index 000000000..eb65d590f --- /dev/null +++ b/classdigidoc_1_1WinSigner-members.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::WinSigner Member List
+
+
+ +

This is the complete list of members for digidoc::WinSigner, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
city() constdigidoc::Signer
countryName() constdigidoc::Signer
postalCode() constdigidoc::Signer
profile() constdigidoc::Signer
setENProfile(bool enable)digidoc::Signer
setMethod(const std::string &method)digidoc::Signer
setPin(const std::string &pin)digidoc::WinSigner
setProfile(const std::string &profile)digidoc::Signer
setSelectFirst(bool first)digidoc::WinSigner
setSignatureProductionPlace(const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignatureProductionPlaceV2(const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)digidoc::Signer
setSignerRoles(const std::vector< std::string > &signerRoles)digidoc::Signer
setThumbprint(const std::vector< unsigned char > &thumbprint)digidoc::WinSigner
Signer()digidoc::Signerprotected
signerRoles() constdigidoc::Signer
stateOrProvince() constdigidoc::Signer
streetAddress() constdigidoc::Signer
usingENProfile() constdigidoc::Signer
WinSigner(const std::string &pin={}, bool selectFirst=false)digidoc::WinSigner
~Signer()digidoc::Signervirtual
~WinSigner() finaldigidoc::WinSigner
+
+ + + + diff --git a/classdigidoc_1_1WinSigner.html b/classdigidoc_1_1WinSigner.html new file mode 100644 index 000000000..972a4b162 --- /dev/null +++ b/classdigidoc_1_1WinSigner.html @@ -0,0 +1,284 @@ + + + + + + + +libdigidocpp: digidoc::WinSigner Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::WinSigner Class Reference
+
+
+ +

Implements Signer interface for Windows Crypto backends. + More...

+ +

#include <WinSigner.h>

+
+Inheritance diagram for digidoc::WinSigner:
+
+
+ + +digidoc::Signer + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 WinSigner (const std::string &pin={}, bool selectFirst=false)
 
 ~WinSigner () final
 
void setPin (const std::string &pin)
 
void setSelectFirst (bool first)
 
void setThumbprint (const std::vector< unsigned char > &thumbprint)
 
- Public Member Functions inherited from digidoc::Signer
virtual ~Signer ()
 
std::string profile () const
 
bool usingENProfile () const
 
std::string city () const
 
std::string streetAddress () const
 
std::string stateOrProvince () const
 
std::string postalCode () const
 
std::string countryName () const
 
std::vector< std::string > signerRoles () const
 
void setMethod (const std::string &method)
 
void setProfile (const std::string &profile)
 
void setENProfile (bool enable)
 
void setSignatureProductionPlace (const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignatureProductionPlaceV2 (const std::string &city, const std::string &streetAddress, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
 
void setSignerRoles (const std::vector< std::string > &signerRoles)
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from digidoc::Signer
 Signer ()
 
+

Detailed Description

+

Implements Signer interface for Windows Crypto backends.

+

Constructor & Destructor Documentation

+ +

◆ WinSigner()

+ +
+
+ + + + + + + + + + + + + + + + + + +
WinSigner::WinSigner (const std::string & pin = {},
bool selectFirst = false 
)
+
+

Initializes WinSigner class

+
Parameters
+ + + +
pinOptional parameter to skip PIN dialog
selectFirstOptional parameter to skip certificate selection dialog when there is more than one token sertificate available
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if the loading failed.
+
+
+ +

References setPin(), and setSelectFirst().

+ +
+
+ +

◆ ~WinSigner()

+ +
+
+ + + + + +
+ + + + + + + +
WinSigner::~WinSigner ()
+
+final
+
+ +
+
+

Member Function Documentation

+ +

◆ setPin()

+ +
+
+ + + + + + + + +
void WinSigner::setPin (const std::string & pin)
+
+

Sets property PIN

See also
WinSigner::WinSigner
+ +

Referenced by WinSigner().

+ +
+
+ +

◆ setSelectFirst()

+ +
+
+ + + + + + + + +
void WinSigner::setSelectFirst (bool first)
+
+

Sets property select first certificate

See also
WinSigner::WinSigner
+ +

Referenced by WinSigner().

+ +
+
+ +

◆ setThumbprint()

+ +
+
+ + + + + + + + +
void WinSigner::setThumbprint (const std::vector< unsigned char > & thumbprint)
+
+

Sets property select certificate with specified thumbprint

See also
WinSigner::WinSigner
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • WinSigner.h
  • +
  • WinSigner.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1WinSigner.js b/classdigidoc_1_1WinSigner.js new file mode 100644 index 000000000..cad8cc6d3 --- /dev/null +++ b/classdigidoc_1_1WinSigner.js @@ -0,0 +1,8 @@ +var classdigidoc_1_1WinSigner = +[ + [ "WinSigner", "classdigidoc_1_1WinSigner.html#ac2c83b9af07a37bff88d175ae9273d8e", null ], + [ "~WinSigner", "classdigidoc_1_1WinSigner.html#a7247d0b14a1262ae7cc6e9b3718d8f9a", null ], + [ "setPin", "classdigidoc_1_1WinSigner.html#ab52be1e7ae19db47dd89a271fe492b4d", null ], + [ "setSelectFirst", "classdigidoc_1_1WinSigner.html#ad89fcd87b9426c30587183203ff3c6ab", null ], + [ "setThumbprint", "classdigidoc_1_1WinSigner.html#a39fa755eb67560a8f7295b9f4cf5fa97", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1WinSigner.png b/classdigidoc_1_1WinSigner.png new file mode 100644 index 0000000000000000000000000000000000000000..b0965e55414f6c4fb1c43e02b0ff984207f1ea18 GIT binary patch literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^r9d3O!3-n?cAw$~QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;n1YsP3vWUiw%r*mDzy%OCF^!#KS~DzR%Er!JZIEBMNXJ(uK*Col0y{1w`!`ch-Q zmgmelTh1SUuOR!%G^7Z^m-HDSfg)TT($h|t{?PZT^lde?E+-Oqg zx7CtAY~R!0k1XQOwbi%2s`#1v?f;dvvt!n$W!>I4Z3XLkv#etN_s+kar0Q=Uo;2m< zmz=84zB!-Q2i>J}y=G%-fg8 zeuOmmJipSMfBKf{t4~6<#3f&5hkAvi_PK?{TlqKGt7r zX6(#;EP3_p&rS8&4|WNat=&GW+kCUc{iRk5+s%H@nB~FVAC=L0Yuoy>SDapOZ{6AM z`%U@kzV&LIZy&z8`DH5eY5$-FW^?rzOs`I!lC^a?;{o?oYLf9*4fB2(W^pLStgYX+ XRWkf? + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::X509Cert Member List
+
+
+ +

This is the complete list of members for digidoc::X509Cert, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certificatePolicies() constdigidoc::X509Cert
CRLSign enum valuedigidoc::X509Cert
DataEncipherment enum valuedigidoc::X509Cert
DecipherOnly enum valuedigidoc::X509Cert
Der enum valuedigidoc::X509Cert
DigitalSignature enum valuedigidoc::X509Cert
EncipherOnly enum valuedigidoc::X509Cert
Format enum namedigidoc::X509Cert
handle() constdigidoc::X509Cert
isCA() constdigidoc::X509Cert
issuerName(const std::string &obj=std::string()) constdigidoc::X509Cert
isValid(time_t *t=nullptr) constdigidoc::X509Cert
KeyAgreement enum valuedigidoc::X509Cert
KeyCertificateSign enum valuedigidoc::X509Cert
KeyEncipherment enum valuedigidoc::X509Cert
KeyUsage enum namedigidoc::X509Cert
keyUsage() constdigidoc::X509Cert
NonRepudiation enum valuedigidoc::X509Cert
operator bool() constdigidoc::X509Cert
operator std::vector< unsigned char >() constdigidoc::X509Cert
operator!() constdigidoc::X509Cert
operator!=(const X509Cert &other) constdigidoc::X509Cert
operator=(const X509Cert &other)digidoc::X509Cert
operator=(X509Cert &&other) noexceptdigidoc::X509Cert
operator==(X509 *other) constdigidoc::X509Cert
operator==(const X509Cert &other) constdigidoc::X509Cert
Pem enum valuedigidoc::X509Cert
QC_COMPLIANTdigidoc::X509Certstatic
QC_QCPdigidoc::X509Certstatic
QC_QCTdigidoc::X509Certstatic
QC_SSCDdigidoc::X509Certstatic
QC_SYNTAX1digidoc::X509Certstatic
QC_SYNTAX2digidoc::X509Certstatic
QCP_LEGALdigidoc::X509Certstatic
QCP_LEGAL_QSCDdigidoc::X509Certstatic
QCP_NATURALdigidoc::X509Certstatic
QCP_NATURAL_QSCDdigidoc::X509Certstatic
QCP_PUBLICdigidoc::X509Certstatic
QCP_PUBLIC_WITH_SSCDdigidoc::X509Certstatic
QCP_WEBdigidoc::X509Certstatic
QCS_LEGALdigidoc::X509Certstatic
QCS_NATURALdigidoc::X509Certstatic
qcStatements() constdigidoc::X509Cert
QCT_ESEALdigidoc::X509Certstatic
QCT_ESIGNdigidoc::X509Certstatic
QCT_WEBdigidoc::X509Certstatic
serial() constdigidoc::X509Cert
subjectName(const std::string &obj=std::string()) constdigidoc::X509Cert
toString(Func func, const string &obj) constdigidoc::X509Cert
X509Cert(X509 *cert=nullptr)digidoc::X509Certexplicit
X509Cert(const unsigned char *bytes, size_t size, Format format=Der)digidoc::X509Certexplicit
X509Cert(const std::vector< unsigned char > &bytes, Format format=Der)digidoc::X509Certexplicit
X509Cert(std::initializer_list< unsigned char > bytes, Format format=Der)digidoc::X509Certinlineexplicit
X509Cert(const std::string &path, Format format=Pem)digidoc::X509Certexplicit
X509Cert(X509Cert &&other) noexceptdigidoc::X509Cert
X509Cert(const X509Cert &other)digidoc::X509Cert
~X509Cert()digidoc::X509Cert
+
+ + + + diff --git a/classdigidoc_1_1X509Cert.html b/classdigidoc_1_1X509Cert.html new file mode 100644 index 000000000..d852bea2a --- /dev/null +++ b/classdigidoc_1_1X509Cert.html @@ -0,0 +1,1421 @@ + + + + + + + +libdigidocpp: digidoc::X509Cert Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::X509Cert Class Reference
+
+
+ +

Wrapper for OpenSSL X509 certificate structure. + More...

+ +

#include <X509Cert.h>

+ + + + + + +

+Public Types

enum  Format { Der +, Pem + }
 
enum  KeyUsage {
+  DigitalSignature = 0 +, NonRepudiation +, KeyEncipherment +, DataEncipherment +,
+  KeyAgreement +, KeyCertificateSign +, CRLSign +, EncipherOnly +,
+  DecipherOnly +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 X509Cert (X509 *cert=nullptr)
 
 X509Cert (const unsigned char *bytes, size_t size, Format format=Der)
 
 X509Cert (const std::vector< unsigned char > &bytes, Format format=Der)
 
 X509Cert (std::initializer_list< unsigned char > bytes, Format format=Der)
 
 X509Cert (const std::string &path, Format format=Pem)
 
 X509Cert (X509Cert &&other) noexcept
 
 X509Cert (const X509Cert &other)
 
 ~X509Cert ()
 
std::string serial () const
 
std::string issuerName (const std::string &obj=std::string()) const
 
std::string subjectName (const std::string &obj=std::string()) const
 
std::vector< KeyUsagekeyUsage () const
 
std::vector< std::string > certificatePolicies () const
 
std::vector< std::string > qcStatements () const
 
bool isCA () const
 
bool isValid (time_t *t=nullptr) const
 
X509 * handle () const
 
 operator std::vector< unsigned char > () const
 
X509Certoperator= (const X509Cert &other)
 
X509Certoperator= (X509Cert &&other) noexcept
 
 operator bool () const
 
bool operator! () const
 
bool operator== (X509 *other) const
 
bool operator== (const X509Cert &other) const
 
bool operator!= (const X509Cert &other) const
 
template<typename Func >
string toString (Func func, const string &obj) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static const std::string QC_COMPLIANT = "0.4.0.1862.1.1"
 
static const std::string QC_SSCD = "0.4.0.1862.1.4"
 
static const std::string QC_QCP = "0.4.0.1862.1.5"
 
static const std::string QC_QCT = "0.4.0.1862.1.6"
 
static const std::string QC_SYNTAX1 = "1.3.6.1.5.5.7.11.1"
 
static const std::string QC_SYNTAX2 = "1.3.6.1.5.5.7.11.2"
 
static const std::string QCS_NATURAL = "0.4.0.194121.1.1"
 
static const std::string QCS_LEGAL = "0.4.0.194121.1.2"
 
static const std::string QCT_ESIGN = "0.4.0.1862.1.6.1"
 
static const std::string QCT_ESEAL = "0.4.0.1862.1.6.2"
 
static const std::string QCT_WEB = "0.4.0.1862.1.6.3"
 
static const std::string QCP_PUBLIC_WITH_SSCD = "0.4.0.1456.1.1"
 
static const std::string QCP_PUBLIC = "0.4.0.1456.1.2"
 
static const std::string QCP_NATURAL = "0.4.0.194112.1.0"
 
static const std::string QCP_LEGAL = "0.4.0.194112.1.1"
 
static const std::string QCP_NATURAL_QSCD = "0.4.0.194112.1.2"
 
static const std::string QCP_LEGAL_QSCD = "0.4.0.194112.1.3"
 
static const std::string QCP_WEB = "0.4.0.194112.1.4"
 
+

Detailed Description

+

Wrapper for OpenSSL X509 certificate structure.

+

Member Enumeration Documentation

+ +

◆ Format

+ +
+
+ + + + +
enum digidoc::X509Cert::Format
+
+

Binary encoding format

+ + + +
Enumerator
Der 

ASN.1 syntax

+
Pem 

Base64 encoded ASN.1 syntax

+
+ +
+
+ +

◆ KeyUsage

+ +
+
+ + + + +
enum digidoc::X509Cert::KeyUsage
+
+

Key usage bits defined in certificate

+ + + + + + + + + + +
Enumerator
DigitalSignature 
NonRepudiation 

Used for signing certificate selection in the current library

+
KeyEncipherment 
DataEncipherment 
KeyAgreement 
KeyCertificateSign 
CRLSign 
EncipherOnly 
DecipherOnly 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ X509Cert() [1/7]

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert::X509Cert (X509 * cert = nullptr)
+
+explicit
+
+

Creates copy of the OpenSSL X509 certificate.

+
Parameters
+ + +
certX509 certificate structure to be wrapped.
+
+
+ +

Referenced by operator==().

+ +
+
+ +

◆ X509Cert() [2/7]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
X509Cert::X509Cert (const unsigned char * bytes,
size_t size,
Format format = Der 
)
+
+explicit
+
+

Creates X509 certificate from bytes.

+
Parameters
+ + + + +
bytesX509 certificate in bytes.
sizeof X509 certificate in bytes.
formatFormat input bytes format
+
+
+
Exceptions
+ + +
Exceptionthrows exception if X509 certificate parsing failed.
+
+
+ +

References Der.

+ +
+
+ +

◆ X509Cert() [3/7]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
X509Cert::X509Cert (const std::vector< unsigned char > & bytes,
Format format = Der 
)
+
+explicit
+
+

Creates X509 certificate from bytes.

+
Parameters
+ + + +
bytesX509 certificate in bytes.
formatFormat input bytes format
+
+
+
Exceptions
+ + +
Exceptionthrows exception if X509 certificate parsing failed.
+
+
+ +
+
+ +

◆ X509Cert() [4/7]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
digidoc::X509Cert::X509Cert (std::initializer_list< unsigned char > bytes,
Format format = Der 
)
+
+inlineexplicit
+
+ +
+
+ +

◆ X509Cert() [5/7]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
X509Cert::X509Cert (const std::string & path,
Format format = Pem 
)
+
+explicit
+
+

Creates X509 certificate from path.

+
Parameters
+ + + +
pathX509 certificate path.
formatFormat input bytes format
+
+
+
Exceptions
+ + +
Exceptionthrows exception if X509 certificate parsing failed.
+
+
+ +

References Der.

+ +
+
+ +

◆ X509Cert() [6/7]

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert::X509Cert (X509Cert && other)
+
+defaultnoexcept
+
+

Move constructor.

+ +
+
+ +

◆ X509Cert() [7/7]

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert::X509Cert (const X509Certother)
+
+default
+
+

Copy constructor.

+ +
+
+ +

◆ ~X509Cert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert::~X509Cert ()
+
+default
+
+

Clean up underlying X509 data.

+ +
+
+

Member Function Documentation

+ +

◆ certificatePolicies()

+ +
+
+ + + + + + + +
vector< string > X509Cert::certificatePolicies () const
+
+

Returns current certificate policies

+ +
+
+ +

◆ handle()

+ +
+
+ + + + + + + +
X509 * X509Cert::handle () const
+
+

Returns certificate internal handle (OpenSSL X509 struct)

+ +

Referenced by digidoc::Signer::method().

+ +
+
+ +

◆ isCA()

+ +
+
+ + + + + + + +
bool X509Cert::isCA () const
+
+

Rerturns true if certificate is CA

+ +

Referenced by digidoc::PKCS11Signer::cert().

+ +
+
+ +

◆ issuerName()

+ +
+
+ + + + + + + + +
string X509Cert::issuerName (const std::string & obj = std::string()) const
+
+

Returns issuer name as string.

+
Parameters
+ + +
objif set to empty string then returns whole issuer name. Otherwise, for example, if set to CN then returns Common name part from issuer name.
+
+
+
Exceptions
+ + +
Exceptionexception is throws if the conversion failed.
+
+
+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + + + + +
bool X509Cert::isValid (time_t * t = nullptr) const
+
+

Validates if certificate is in valid time slot

+
Parameters
+ + +
tIf param is 0 then current time is used, else defined time
+
+
+ +

Referenced by digidoc::PKCS11Signer::cert().

+ +
+
+ +

◆ keyUsage()

+ +
+
+ + + + + + + +
vector< X509Cert::KeyUsage > X509Cert::keyUsage () const
+
+

Returns current certificate key usage bits

+ +

Referenced by digidoc::PKCS11Signer::cert().

+ +
+
+ +

◆ operator bool()

+ +
+
+ + + + + + + +
X509Cert::operator bool () const
+
+

Returns true if handle is valid

+ +
+
+ +

◆ operator std::vector< unsigned char >()

+ +
+
+ + + + + + + +
X509Cert::operator std::vector< unsigned char > () const
+
+

Encodes the X509 certificate using DER encoding.

+ +
+
+ +

◆ operator!()

+ +
+
+ + + + + + + +
bool X509Cert::operator! () const
+
+

Negative operator to check if object is valid

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + + + + +
bool X509Cert::operator!= (const X509Certother) const
+
+

Not equal operator to compare two objects

+ +

References operator==().

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert & X509Cert::operator= (const X509Certother)
+
+default
+
+

Assign operator

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
X509Cert & X509Cert::operator= (X509Cert && other)
+
+defaultnoexcept
+
+

Move operator

+ +
+
+ +

◆ operator==() [1/2]

+ +
+
+ + + + + + + + +
bool X509Cert::operator== (const X509Certother) const
+
+

Equal operator to compare two objects

+ +
+
+ +

◆ operator==() [2/2]

+ +
+
+ + + + + + + + +
bool X509Cert::operator== (X509 * other) const
+
+

Equal operator to compare two objects

+ +

References X509Cert().

+ +

Referenced by operator!=().

+ +
+
+ +

◆ qcStatements()

+ +
+
+ + + + + + + +
vector< string > X509Cert::qcStatements () const
+
+

Return QCStatements info https://www.ietf.org/rfc/rfc3739.txt

+ +

References QC_QCT, and QC_SYNTAX2.

+ +
+
+ +

◆ serial()

+ +
+
+ + + + + + + +
string X509Cert::serial () const
+
+

Returns X.509 certificate serial number.

+
Exceptions
+ + +
Exceptionexception is thrown if the serial is incorrect.
+
+
+ +
+
+ +

◆ subjectName()

+ +
+
+ + + + + + + + +
string X509Cert::subjectName (const std::string & obj = std::string()) const
+
+

Return subject name as string.

+
Parameters
+ + +
objempty string then returns whole issuer name. Otherwise, for example, if set to CN then returns Common name part from issuer name.
+
+
+
Exceptions
+ + +
Exceptionexception is throws if the conversion failed.
+
+
+ +
+
+ +

◆ toString()

+ +
+
+
+template<typename Func >
+ + + + + + + + + + + + + + + + + + +
string digidoc::X509Cert::toString (Func func,
const string & obj 
) const
+
+

Converts X509_NAME struct to string.

+
Parameters
+ + + +
funcX509_NAME struct that is converted to string.
objOptional parameter to get from X509_NAME (default CN).
+
+
+
Returns
converted value of X509_NAME.
+
Exceptions
+ + +
Exceptionthrows exception if conversion failed.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ QC_COMPLIANT

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_COMPLIANT = "0.4.0.1862.1.1"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-etsi-qcs-QcCompliance

+ +
+
+ +

◆ QC_QCP

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_QCP = "0.4.0.1862.1.5"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-etsi-qcs-QcPDS

+ +
+
+ +

◆ QC_QCT

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_QCT = "0.4.0.1862.1.6"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-etsi-qcs-QcType

+ +

Referenced by qcStatements().

+ +
+
+ +

◆ QC_SSCD

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_SSCD = "0.4.0.1862.1.4"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-etsi-qcs-QcSSCD

+ +
+
+ +

◆ QC_SYNTAX1

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_SYNTAX1 = "1.3.6.1.5.5.7.11.1"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-qcs-pkixQCSyntax-v1

+ +
+
+ +

◆ QC_SYNTAX2

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QC_SYNTAX2 = "1.3.6.1.5.5.7.11.2"
+
+static
+
+

https://www.ietf.org/rfc/rfc3739.txt - id-qcs-pkixQCSyntax-v2

+ +

Referenced by qcStatements().

+ +
+
+ +

◆ QCP_LEGAL

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_LEGAL = "0.4.0.194112.1.1"
+
+static
+
+
+ +

◆ QCP_LEGAL_QSCD

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_LEGAL_QSCD = "0.4.0.194112.1.3"
+
+static
+
+
+ +

◆ QCP_NATURAL

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_NATURAL = "0.4.0.194112.1.0"
+
+static
+
+
+ +

◆ QCP_NATURAL_QSCD

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_NATURAL_QSCD = "0.4.0.194112.1.2"
+
+static
+
+
+ +

◆ QCP_PUBLIC

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_PUBLIC = "0.4.0.1456.1.2"
+
+static
+
+
+ +

◆ QCP_PUBLIC_WITH_SSCD

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_PUBLIC_WITH_SSCD = "0.4.0.1456.1.1"
+
+static
+
+
+ +

◆ QCP_WEB

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCP_WEB = "0.4.0.194112.1.4"
+
+static
+
+
+ +

◆ QCS_LEGAL

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCS_LEGAL = "0.4.0.194121.1.2"
+
+static
+
+
+ +

◆ QCS_NATURAL

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCS_NATURAL = "0.4.0.194121.1.1"
+
+static
+
+
+ +

◆ QCT_ESEAL

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCT_ESEAL = "0.4.0.1862.1.6.2"
+
+static
+
+
+ +

◆ QCT_ESIGN

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCT_ESIGN = "0.4.0.1862.1.6.1"
+
+static
+
+
+ +

◆ QCT_WEB

+ +
+
+ + + + + +
+ + + + +
const string X509Cert::QCT_WEB = "0.4.0.1862.1.6.3"
+
+static
+
+
+
The documentation for this class was generated from the following files:
    +
  • X509Cert.h
  • +
  • X509Cert.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1X509Cert.js b/classdigidoc_1_1X509Cert.js new file mode 100644 index 000000000..0961f20ef --- /dev/null +++ b/classdigidoc_1_1X509Cert.js @@ -0,0 +1,62 @@ +var classdigidoc_1_1X509Cert = +[ + [ "Format", "classdigidoc_1_1X509Cert.html#a6562b7151f1372b8c30a1d380c4b6d3b", [ + [ "Der", "classdigidoc_1_1X509Cert.html#a6562b7151f1372b8c30a1d380c4b6d3ba3b326d2573243c501348eabce1cc1365", null ], + [ "Pem", "classdigidoc_1_1X509Cert.html#a6562b7151f1372b8c30a1d380c4b6d3ba43f4b3beaa97eefdfcde62d883719876", null ] + ] ], + [ "KeyUsage", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257b", [ + [ "DigitalSignature", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba6790ea923e9b6f3485503c41d4f739f5", null ], + [ "NonRepudiation", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba8b2e9e23b97b2da8fc0e7c345ae949e6", null ], + [ "KeyEncipherment", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257bacd0b186209021c217f5df1a9cf221331", null ], + [ "DataEncipherment", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba9247c4a01afb01537c2b7bf11af2b610", null ], + [ "KeyAgreement", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba4bca74f62c668d0cbdd76f3973a4e0a5", null ], + [ "KeyCertificateSign", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba39b7bb1ab651e3133effc74808c59d12", null ], + [ "CRLSign", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257bac1fb92a7d8a51290225c304ca0b4e3d3", null ], + [ "EncipherOnly", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257bab5e6ba62b80305aed9866b47c49f9e09", null ], + [ "DecipherOnly", "classdigidoc_1_1X509Cert.html#ae043d5889073a6ccd4168e0a5329257ba929b7dc9996512a875c80f9ed8e38992", null ] + ] ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#aab611738de2a304a92a1bfe82ff787b2", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#a61112d9fe5a556661284e92f2d6b3e48", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#ac46507558400d317f60b4df15cc0ff08", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#a938bb2211c92fbc8bbf335a4d6561644", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#a19caf13e300e3ccfe25eb3f0bdfb51c6", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#a42a00c8c310dc8cdef11a5fd89641a25", null ], + [ "X509Cert", "classdigidoc_1_1X509Cert.html#a609677655ad0f8ddad689eab09b9d783", null ], + [ "~X509Cert", "classdigidoc_1_1X509Cert.html#a5380ee6e53e8c3d68bb4e3322cb045dc", null ], + [ "certificatePolicies", "classdigidoc_1_1X509Cert.html#a8715c3d436b4f8af9fb3d059df147d2b", null ], + [ "handle", "classdigidoc_1_1X509Cert.html#a5c6cdf0c64e7f1a32b34c19c3af077d5", null ], + [ "isCA", "classdigidoc_1_1X509Cert.html#a7e36034647c55cffbf31100e706e7be7", null ], + [ "issuerName", "classdigidoc_1_1X509Cert.html#a3e5f09543f5e371366a47da2771769d8", null ], + [ "isValid", "classdigidoc_1_1X509Cert.html#ae735eeb4ec92243579eec708224518b6", null ], + [ "keyUsage", "classdigidoc_1_1X509Cert.html#adfdb312098c7691ad166a392dadf9d46", null ], + [ "operator bool", "classdigidoc_1_1X509Cert.html#af747df058f5bd3ebb3e57b28119cde7b", null ], + [ "operator std::vector< unsigned char >", "classdigidoc_1_1X509Cert.html#a4f681e31cefc2ab29c7b7537be6c170f", null ], + [ "operator!", "classdigidoc_1_1X509Cert.html#addda7bf08f062c792fa1f4f8ebb8840f", null ], + [ "operator!=", "classdigidoc_1_1X509Cert.html#add1eec69c0e38358e2245d34d5ce23a1", null ], + [ "operator=", "classdigidoc_1_1X509Cert.html#a896d0c271aad18a11c443fa82f21ca99", null ], + [ "operator=", "classdigidoc_1_1X509Cert.html#aa2cb4b55cf8e817ef6653677c06a8310", null ], + [ "operator==", "classdigidoc_1_1X509Cert.html#a960f326fc2e684ff84a64c62b3be2ad8", null ], + [ "operator==", "classdigidoc_1_1X509Cert.html#a19d3ac1ecab3c23626d286d84490781b", null ], + [ "qcStatements", "classdigidoc_1_1X509Cert.html#ad906e49321136c2631beb39525d4c664", null ], + [ "serial", "classdigidoc_1_1X509Cert.html#a29c492a4384e2c15fbee63db067dfef4", null ], + [ "subjectName", "classdigidoc_1_1X509Cert.html#a5df413fcbe1ac8a7c72aaa397d363ae9", null ], + [ "toString", "classdigidoc_1_1X509Cert.html#ade28e779df7000420f12e43c593401f2", null ], + [ "QC_COMPLIANT", "classdigidoc_1_1X509Cert.html#ae8a28965e50c5ed98b9b4f85f0b701f3", null ], + [ "QC_QCP", "classdigidoc_1_1X509Cert.html#a8fafdd3f032dcef52b35e1918a70a0a0", null ], + [ "QC_QCT", "classdigidoc_1_1X509Cert.html#a8ff3356264f6aa9548d583d88de9fca9", null ], + [ "QC_SSCD", "classdigidoc_1_1X509Cert.html#a0ad7414dd90b380f6b808c397b05e7cb", null ], + [ "QC_SYNTAX1", "classdigidoc_1_1X509Cert.html#a2e46589362e1de5abff408a66ffb186c", null ], + [ "QC_SYNTAX2", "classdigidoc_1_1X509Cert.html#a0c4e516a37011ce0fef1840f342959eb", null ], + [ "QCP_LEGAL", "classdigidoc_1_1X509Cert.html#aa3ec943f5e03326af8613be623da1aef", null ], + [ "QCP_LEGAL_QSCD", "classdigidoc_1_1X509Cert.html#a779348a27f0849b776cbbce513b0a2c4", null ], + [ "QCP_NATURAL", "classdigidoc_1_1X509Cert.html#acccd5cdd736359be8425537690d29074", null ], + [ "QCP_NATURAL_QSCD", "classdigidoc_1_1X509Cert.html#ab0f95abbd612616ebec1cef3dd8ca255", null ], + [ "QCP_PUBLIC", "classdigidoc_1_1X509Cert.html#abd0beb9cc5c4acdc131ce4af39bb8ad4", null ], + [ "QCP_PUBLIC_WITH_SSCD", "classdigidoc_1_1X509Cert.html#ada2ba2b1273e3ae76e3fcc408d9f0a1b", null ], + [ "QCP_WEB", "classdigidoc_1_1X509Cert.html#accd436a2ac508d7808a8815180dad8fe", null ], + [ "QCS_LEGAL", "classdigidoc_1_1X509Cert.html#abf12abbecbb87113a1ebf2b04e847e25", null ], + [ "QCS_NATURAL", "classdigidoc_1_1X509Cert.html#a5e8c72e18d1f8d90d736ef5770dffc34", null ], + [ "QCT_ESEAL", "classdigidoc_1_1X509Cert.html#a405a853195f59978736cb37e35fefa1a", null ], + [ "QCT_ESIGN", "classdigidoc_1_1X509Cert.html#a94d7fbe830c670cf90e8f5db6220a441", null ], + [ "QCT_WEB", "classdigidoc_1_1X509Cert.html#a9010b5ff851347df5d7b4d8ddd539267", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConf-members.html b/classdigidoc_1_1XmlConf-members.html new file mode 100644 index 000000000..4177b7662 --- /dev/null +++ b/classdigidoc_1_1XmlConf-members.html @@ -0,0 +1,125 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::XmlConf Member List
+
+
+ +

This is the complete list of members for digidoc::XmlConf, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
digestUri() const overridedigidoc::XmlConfvirtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::XmlConfstatic
libdigidocConf() constdigidoc::Confvirtual
logFile() const overridedigidoc::XmlConfvirtual
logLevel() const overridedigidoc::XmlConfvirtual
ocsp(const std::string &issuer) const overridedigidoc::XmlConfvirtual
PKCS11Driver() const overridedigidoc::XmlConfvirtual
PKCS12Cert() const overridedigidoc::XmlConfvirtual
PKCS12Disable() const overridedigidoc::XmlConfvirtual
PKCS12Pass() const overridedigidoc::XmlConfvirtual
proxyForceSSL() const overridedigidoc::XmlConfvirtual
proxyHost() const overridedigidoc::XmlConfvirtual
proxyPass() const overridedigidoc::XmlConfvirtual
proxyPort() const overridedigidoc::XmlConfvirtual
proxyTunnelSSL() const overridedigidoc::XmlConfvirtual
proxyUser() const overridedigidoc::XmlConfvirtual
setPKCS12Cert(const std::string &cert)digidoc::XmlConfvirtual
setPKCS12Disable(bool disable)digidoc::XmlConfvirtual
setPKCS12Pass(const std::string &pass)digidoc::XmlConfvirtual
setProxyHost(const std::string &host)digidoc::XmlConfvirtual
setProxyPass(const std::string &pass)digidoc::XmlConfvirtual
setProxyPort(const std::string &port)digidoc::XmlConfvirtual
setProxyTunnelSSL(bool enable)digidoc::XmlConfvirtual
setProxyUser(const std::string &user)digidoc::XmlConfvirtual
setTSLOnlineDigest(bool enable)digidoc::XmlConfvirtual
setTSLTimeOut(int timeOut)digidoc::XmlConfvirtual
setTSUrl(const std::string &url)digidoc::XmlConfvirtual
setVerifyServiceUri(const std::string &url)digidoc::XmlConfvirtual
signatureDigestUri() const overridedigidoc::XmlConfvirtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() const overridedigidoc::XmlConfvirtual
TSLCache() const overridedigidoc::XmlConfvirtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() const overridedigidoc::XmlConfvirtual
TSLTimeOut() const overridedigidoc::XmlConfvirtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() const overridedigidoc::XmlConfvirtual
verifyServiceUri() const overridedigidoc::XmlConfvirtual
XmlConf(const std::string &path="", const std::string &schema="")digidoc::XmlConfexplicit
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~XmlConf() overridedigidoc::XmlConf
+
+ + + + diff --git a/classdigidoc_1_1XmlConf.html b/classdigidoc_1_1XmlConf.html new file mode 100644 index 000000000..a771b665c --- /dev/null +++ b/classdigidoc_1_1XmlConf.html @@ -0,0 +1,1350 @@ + + + + + + + +libdigidocpp: digidoc::XmlConf Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::XmlConf Class Reference
+
+
+ +

XML Configuration class. + More...

+ +

#include <XmlConf.h>

+
+Inheritance diagram for digidoc::XmlConf:
+
+
+ + +digidoc::Conf + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 XmlConf (const std::string &path="", const std::string &schema="")
 
 ~XmlConf () override
 
int logLevel () const override
 
std::string logFile () const override
 
std::string PKCS11Driver () const override
 
std::string proxyHost () const override
 
std::string proxyPort () const override
 
std::string proxyUser () const override
 
std::string proxyPass () const override
 
bool proxyForceSSL () const override
 
bool proxyTunnelSSL () const override
 
std::string digestUri () const override
 
std::string signatureDigestUri () const override
 
std::string ocsp (const std::string &issuer) const override
 
std::string TSUrl () const override
 
std::string verifyServiceUri () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const override
 
DIGIDOCPP_DEPRECATED bool PKCS12Disable () const override
 
bool TSLAutoUpdate () const override
 
std::string TSLCache () const override
 
bool TSLOnlineDigest () const override
 
int TSLTimeOut () const override
 
virtual void setProxyHost (const std::string &host)
 
virtual void setProxyPort (const std::string &port)
 
virtual void setProxyUser (const std::string &user)
 
virtual void setProxyPass (const std::string &pass)
 
virtual void setProxyTunnelSSL (bool enable)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Cert (const std::string &cert)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Pass (const std::string &pass)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Disable (bool disable)
 
virtual void setTSLOnlineDigest (bool enable)
 
virtual void setTSLTimeOut (int timeOut)
 
virtual void setTSUrl (const std::string &url)
 
virtual void setVerifyServiceUri (const std::string &url)
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual bool TSLAllowExpired () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + +

+Static Public Member Functions

static XmlConfinstance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

XML Configuration class.

+
Deprecated:
Use digidoc::XmlConfV5
+
See also
digidoc::Conf
+

Constructor & Destructor Documentation

+ +

◆ XmlConf()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
XmlConf::XmlConf (const std::string & path = "",
const std::string & schema = "" 
)
+
+explicit
+
+ +
+
+ +

◆ ~XmlConf()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConf::~XmlConf ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::digestUri () const
+
+overridevirtual
+
+

Return default digest type as URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConf * XmlConf::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::logFile () const
+
+overridevirtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConf::logLevel () const
+
+overridevirtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string XmlConf::ocsp (const std::string & issuer) const
+
+overridevirtual
+
+

Return OCSP request URL

Parameters
+ + +
issuerOCSP issuer.
+
+
+ +

Reimplemented from digidoc::Conf.

+ +

References digidoc::Conf::ocsp(), and ocsp().

+ +

Referenced by ocsp().

+ +
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::PKCS11Driver () const
+
+overridevirtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConf::PKCS12Cert () const
+
+overridevirtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED bool digidoc::XmlConf::PKCS12Disable () const
+
+overridevirtual
+
+

Gets PKCS12 usage.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConf::PKCS12Pass () const
+
+overridevirtual
+
+

Gets PKCS12 password.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConf::proxyForceSSL () const
+
+overridevirtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::proxyHost () const
+
+overridevirtual
+
+

Gets proxy host address.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::proxyPass () const
+
+overridevirtual
+
+

Gets proxy login password.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::proxyPort () const
+
+overridevirtual
+
+

Gets proxy port number.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConf::proxyTunnelSSL () const
+
+overridevirtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::proxyUser () const
+
+overridevirtual
+
+

Gets proxy user name.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ setPKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setPKCS12Cert (const std::string & cert)
+
+virtual
+
+

Sets a PKCS#12 certficate path. Also adds or replaces PKCS#12 certificate path in the user configuration file. By default the PKCS#12 certificate file should be located at default path, given by getUserConfDir() function.

+
Parameters
+ + +
certPKCS#12 certificate location path.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate path into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setPKCS12Disable (bool disable)
+
+virtual
+
+

Sets a PKCS#12 certificate usage. Also adds or replaces PKCS#12 certificate usage in the user configuration file.

+
Parameters
+ + +
disablePKCS#12 certificate usage.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate usage into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setPKCS12Pass (const std::string & pass)
+
+virtual
+
+

Sets a PKCS#12 certificate password. Also adds or replaces PKCS#12 certificate password in the user configuration file.

+
Parameters
+ + +
passPKCS#12 certificate password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyHost()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setProxyHost (const std::string & host)
+
+virtual
+
+

Sets a Proxy host address. Also adds or replaces proxy host data in the user configuration file.

+
Parameters
+ + +
hostproxy host address.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy host address into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setProxyPass (const std::string & pass)
+
+virtual
+
+

Sets a Proxy password. Also adds or replaces proxy password in the user configuration file.

+
Parameters
+ + +
passproxy password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPort()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setProxyPort (const std::string & port)
+
+virtual
+
+

Sets a Proxy port number. Also adds or replaces proxy port data in the user configuration file.

+
Parameters
+ + +
portproxy port number.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy port number into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setProxyTunnelSSL (bool enable)
+
+virtual
+
+

Enables SSL proxy connections

Exceptions
+ + +
Exceptionexception is thrown if saving into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyUser()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setProxyUser (const std::string & user)
+
+virtual
+
+

Sets a Proxy user name. Also adds or replaces proxy user name in the user configuration file.

+
Parameters
+ + +
userproxy user name.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy user name into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setTSLOnlineDigest (bool enable)
+
+virtual
+
+

Enables/Disables online digest check

Exceptions
+ + +
Exceptionexception is thrown if saving a TSL online digest into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setTSLTimeOut (int timeOut)
+
+virtual
+
+

Sets TSL connection timeout

Parameters
+ + +
timeOutTime out in seconds
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TSL timeout into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSUrl()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setTSUrl (const std::string & url)
+
+virtual
+
+

Sets a TSA service URL. Also adds or replaces TSA service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect TSA service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TS service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ setVerifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConf::setVerifyServiceUri (const std::string & url)
+
+virtual
+
+

Sets a Verify service URL. Also adds or replaces Verify service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect Verify service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a Verify service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::signatureDigestUri () const
+
+overridevirtual
+
+

Gets signature digest URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConf::TSLAutoUpdate () const
+
+overridevirtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::TSLCache () const
+
+overridevirtual
+
+

TSL cache path in local file system

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConf::TSLOnlineDigest () const
+
+overridevirtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConf::TSLTimeOut () const
+
+overridevirtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::TSUrl () const
+
+overridevirtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConf::verifyServiceUri () const
+
+overridevirtual
+
+

Gets verify service URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • XmlConf.h
  • +
  • XmlConf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1XmlConf.js b/classdigidoc_1_1XmlConf.js new file mode 100644 index 000000000..1105b9762 --- /dev/null +++ b/classdigidoc_1_1XmlConf.js @@ -0,0 +1,43 @@ +var classdigidoc_1_1XmlConf = +[ + [ "XmlConf", "classdigidoc_1_1XmlConf.html#a995e086d0fe0ea606c940c77ac5644df", null ], + [ "~XmlConf", "classdigidoc_1_1XmlConf.html#aec146dc685cc3b86c7d5ad8913827180", null ], + [ "digestUri", "classdigidoc_1_1XmlConf.html#a8903ec0ea9fead55b3783eee8108842f", null ], + [ "instance", "classdigidoc_1_1XmlConf.html#aca1900e0f1a9c62431347e6b7182377f", null ], + [ "logFile", "classdigidoc_1_1XmlConf.html#ab36cb86dce43c7634453fe0f132d2cfe", null ], + [ "logLevel", "classdigidoc_1_1XmlConf.html#ad7a02a4867aced3af7ba44ebe3814ae7", null ], + [ "ocsp", "classdigidoc_1_1XmlConf.html#a9a77c4b7944f7f4cd0d88b785cdf653b", null ], + [ "PKCS11Driver", "classdigidoc_1_1XmlConf.html#a94657af3f86b0145187eff4e1b54fd71", null ], + [ "PKCS12Cert", "classdigidoc_1_1XmlConf.html#aeeff9e7665524e0ec66debfbe5a525aa", null ], + [ "PKCS12Disable", "classdigidoc_1_1XmlConf.html#a6e1b648b759b036ac9689c00f5782c7b", null ], + [ "PKCS12Pass", "classdigidoc_1_1XmlConf.html#a07aa6b4c64bf6c787fe07a64e9faa3d3", null ], + [ "proxyForceSSL", "classdigidoc_1_1XmlConf.html#a55ef4e3d1cad53292650548a5f89f7a0", null ], + [ "proxyHost", "classdigidoc_1_1XmlConf.html#ae4dcbaf37043021c62602e0371ceeb16", null ], + [ "proxyPass", "classdigidoc_1_1XmlConf.html#ae33715b05fe63d6a65aad3ba88c09ad5", null ], + [ "proxyPort", "classdigidoc_1_1XmlConf.html#a1752090ad53e5385ef6527f1a502f8b4", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1XmlConf.html#a5fea54f8bd5d375b42245b0046457fdc", null ], + [ "proxyUser", "classdigidoc_1_1XmlConf.html#a7db1da55cfd9eaaacc7dec568846e590", null ], + [ "setPKCS12Cert", "classdigidoc_1_1XmlConf.html#a782bfa39091c7319adc5f8dc08405de9", null ], + [ "setPKCS12Disable", "classdigidoc_1_1XmlConf.html#a349e3a0fb35efbff120a4a2cbfcc5253", null ], + [ "setPKCS12Pass", "classdigidoc_1_1XmlConf.html#a79de64748fea3cf6e22fcc91ac12cc83", null ], + [ "setProxyHost", "classdigidoc_1_1XmlConf.html#a9c722242497e4c6c30a6ea9f9149f112", null ], + [ "setProxyPass", "classdigidoc_1_1XmlConf.html#a71712f3f8f1856caadc73ef0b96a29a9", null ], + [ "setProxyPort", "classdigidoc_1_1XmlConf.html#a736bffb3f90d8ac152c28faf438d7a22", null ], + [ "setProxyTunnelSSL", "classdigidoc_1_1XmlConf.html#aae8b9b474bafe0f072bb7a2827d03b98", null ], + [ "setProxyUser", "classdigidoc_1_1XmlConf.html#a0ad00ec96f7d0cef237c8ba1db2d3847", null ], + [ "setTSLOnlineDigest", "classdigidoc_1_1XmlConf.html#aac3fcb66d858c9a6cb8a7f2f96498a6b", null ], + [ "setTSLTimeOut", "classdigidoc_1_1XmlConf.html#a05ba4d47390a1fd9293d039c7dbe1566", null ], + [ "setTSUrl", "classdigidoc_1_1XmlConf.html#a371f2859ad736d03f57b0225f33ff71b", null ], + [ "setVerifyServiceUri", "classdigidoc_1_1XmlConf.html#aae1ab37aee36e873d8a252db2d1841a8", null ], + [ "signatureDigestUri", "classdigidoc_1_1XmlConf.html#a282989868551c57dd9ac4ee2f6346bd0", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1XmlConf.html#afc250ee0612e3fb631b74306d6011f97", null ], + [ "TSLCache", "classdigidoc_1_1XmlConf.html#af9cb2f920365f7b2ed8d303aece898a5", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1XmlConf.html#af3321b72a035eb0528b5b4f4e86feba2", null ], + [ "TSLTimeOut", "classdigidoc_1_1XmlConf.html#aa6b12887e01a828c568c28d0d7468ddf", null ], + [ "TSUrl", "classdigidoc_1_1XmlConf.html#a681ec72e3639e916c7ba311648faf08d", null ], + [ "verifyServiceUri", "classdigidoc_1_1XmlConf.html#a07ce36ca6f3ead92f7ea0d1dc6adf1c9", null ], + [ "XmlConfV2", "classdigidoc_1_1XmlConf.html#a2bd7b2d81cb89c25452ef363c4acd2ae", null ], + [ "XmlConfV3", "classdigidoc_1_1XmlConf.html#a16c5a603d42e8c93647ccceb41a07ad2", null ], + [ "XmlConfV4", "classdigidoc_1_1XmlConf.html#a50115bccf2377a7e48469b4adea066c4", null ], + [ "XmlConfV5", "classdigidoc_1_1XmlConf.html#a2b6889a308a4cb9175a233aa1aa25aea", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConf.png b/classdigidoc_1_1XmlConf.png new file mode 100644 index 0000000000000000000000000000000000000000..17602661c6980f7e2a1f815f9ee29cd59ae09b92 GIT binary patch literal 516 zcmV+f0{i`mP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004#NklLuTqgu9a~yvi&@S&H%0)@YXKOffvja22OG#*QNv&(Szmh&CkvoclLgSH z$pYxpWC8SPvHSEPy^u77)$MY>+U3A(||JKK&YNb>r3Uos{wjr-R=2rwt&} z9xGV@naU2q~_t2mCPu;yy{}hQY#mG4=eNqme@yFalbI4-DTa|uM1Y%=@sktIZRtHNG(2J zM{1h|MEl6gq`|75Qh;};)mQU91JJ4YO#$fB7qiUF#^?u~jTcTcpfr{M0000 + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::XmlConfV2 Member List
+
+
+ +

This is the complete list of members for digidoc::XmlConfV2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
digestUri() const overridedigidoc::XmlConfV2virtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::XmlConfV2static
libdigidocConf() constdigidoc::Confvirtual
logFile() const overridedigidoc::XmlConfV2virtual
logLevel() const overridedigidoc::XmlConfV2virtual
ocsp(const std::string &issuer) const overridedigidoc::XmlConfV2virtual
PKCS11Driver() const overridedigidoc::XmlConfV2virtual
PKCS12Cert() const overridedigidoc::XmlConfV2virtual
PKCS12Disable() const overridedigidoc::XmlConfV2virtual
PKCS12Pass() const overridedigidoc::XmlConfV2virtual
proxyForceSSL() const overridedigidoc::XmlConfV2virtual
proxyHost() const overridedigidoc::XmlConfV2virtual
proxyPass() const overridedigidoc::XmlConfV2virtual
proxyPort() const overridedigidoc::XmlConfV2virtual
proxyTunnelSSL() const overridedigidoc::XmlConfV2virtual
proxyUser() const overridedigidoc::XmlConfV2virtual
setPKCS12Cert(const std::string &cert)digidoc::XmlConfV2virtual
setPKCS12Disable(bool disable)digidoc::XmlConfV2virtual
setPKCS12Pass(const std::string &pass)digidoc::XmlConfV2virtual
setProxyHost(const std::string &host)digidoc::XmlConfV2virtual
setProxyPass(const std::string &pass)digidoc::XmlConfV2virtual
setProxyPort(const std::string &port)digidoc::XmlConfV2virtual
setProxyTunnelSSL(bool enable)digidoc::XmlConfV2virtual
setProxyUser(const std::string &user)digidoc::XmlConfV2virtual
setTSLOnlineDigest(bool enable)digidoc::XmlConfV2virtual
setTSLTimeOut(int timeOut)digidoc::XmlConfV2virtual
setTSUrl(const std::string &url)digidoc::XmlConfV2virtual
setVerifyServiceUri(const std::string &url)digidoc::XmlConfV2virtual
signatureDigestUri() const overridedigidoc::XmlConfV2virtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() const overridedigidoc::XmlConfV2virtual
TSLCache() const overridedigidoc::XmlConfV2virtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() const overridedigidoc::XmlConfV2virtual
TSLTimeOut() const overridedigidoc::XmlConfV2virtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() const overridedigidoc::XmlConfV2virtual
verifyServiceCert() const overridedigidoc::XmlConfV2virtual
verifyServiceUri() const overridedigidoc::XmlConfV2virtual
XmlConfV2(const std::string &path="", const std::string &schema="")digidoc::XmlConfV2explicit
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~XmlConfV2() overridedigidoc::XmlConfV2
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV2.html b/classdigidoc_1_1XmlConfV2.html new file mode 100644 index 000000000..56edbf3ed --- /dev/null +++ b/classdigidoc_1_1XmlConfV2.html @@ -0,0 +1,1413 @@ + + + + + + + +libdigidocpp: digidoc::XmlConfV2 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::XmlConfV2 Class Reference
+
+
+ +

Version 2 of XML Configuration class. + More...

+ +

#include <XmlConf.h>

+
+Inheritance diagram for digidoc::XmlConfV2:
+
+
+ + +digidoc::ConfV2 +digidoc::Conf + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 XmlConfV2 (const std::string &path="", const std::string &schema="")
 
 ~XmlConfV2 () override
 
int logLevel () const override
 
std::string logFile () const override
 
std::string PKCS11Driver () const override
 
std::string proxyHost () const override
 
std::string proxyPort () const override
 
std::string proxyUser () const override
 
std::string proxyPass () const override
 
bool proxyForceSSL () const override
 
bool proxyTunnelSSL () const override
 
std::string digestUri () const override
 
std::string signatureDigestUri () const override
 
std::string ocsp (const std::string &issuer) const override
 
std::string TSUrl () const override
 
X509Cert verifyServiceCert () const override
 
std::string verifyServiceUri () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const override
 
DIGIDOCPP_DEPRECATED bool PKCS12Disable () const override
 
bool TSLAutoUpdate () const override
 
std::string TSLCache () const override
 
bool TSLOnlineDigest () const override
 
int TSLTimeOut () const override
 
virtual void setProxyHost (const std::string &host)
 
virtual void setProxyPort (const std::string &port)
 
virtual void setProxyUser (const std::string &user)
 
virtual void setProxyPass (const std::string &pass)
 
virtual void setProxyTunnelSSL (bool enable)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Cert (const std::string &cert)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Pass (const std::string &pass)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Disable (bool disable)
 
virtual void setTSLOnlineDigest (bool enable)
 
virtual void setTSLTimeOut (int timeOut)
 
virtual void setTSUrl (const std::string &url)
 
virtual void setVerifyServiceUri (const std::string &url)
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual bool TSLAllowExpired () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + +

+Static Public Member Functions

static XmlConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Version 2 of XML Configuration class.

+
Deprecated:
Use digidoc::XmlConfV5
+
See also
digidoc::ConfV2
+

Constructor & Destructor Documentation

+ +

◆ XmlConfV2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
XmlConfV2::XmlConfV2 (const std::string & path = "",
const std::string & schema = "" 
)
+
+explicit
+
+ +
+
+ +

◆ ~XmlConfV2()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV2::~XmlConfV2 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::digestUri () const
+
+overridevirtual
+
+

Return default digest type as URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV2 * XmlConfV2::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::logFile () const
+
+overridevirtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV2::logLevel () const
+
+overridevirtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string XmlConfV2::ocsp (const std::string & issuer) const
+
+overridevirtual
+
+

Return OCSP request URL

Parameters
+ + +
issuerOCSP issuer.
+
+
+ +

Reimplemented from digidoc::Conf.

+ +

References digidoc::Conf::ocsp().

+ +
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::PKCS11Driver () const
+
+overridevirtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV2::PKCS12Cert () const
+
+overridevirtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED bool digidoc::XmlConfV2::PKCS12Disable () const
+
+overridevirtual
+
+

Gets PKCS12 usage.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV2::PKCS12Pass () const
+
+overridevirtual
+
+

Gets PKCS12 password.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV2::proxyForceSSL () const
+
+overridevirtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::proxyHost () const
+
+overridevirtual
+
+

Gets proxy host address.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::proxyPass () const
+
+overridevirtual
+
+

Gets proxy login password.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::proxyPort () const
+
+overridevirtual
+
+

Gets proxy port number.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV2::proxyTunnelSSL () const
+
+overridevirtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::proxyUser () const
+
+overridevirtual
+
+

Gets proxy user name.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ setPKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setPKCS12Cert (const std::string & cert)
+
+virtual
+
+ +

+

Sets a PKCS#12 certficate path. Also adds or replaces PKCS#12 certificate path in the user configuration file. By default the PKCS#12 certificate file should be located at default path, given by getUserConfDir() function.

+
Parameters
+ + +
certPKCS#12 certificate location path.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate path into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setPKCS12Disable (bool disable)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate usage. Also adds or replaces PKCS#12 certificate usage in the user configuration file.

+
Parameters
+ + +
disablePKCS#12 certificate usage.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate usage into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setPKCS12Pass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate password. Also adds or replaces PKCS#12 certificate password in the user configuration file.

+
Parameters
+ + +
passPKCS#12 certificate password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyHost()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setProxyHost (const std::string & host)
+
+virtual
+
+ +

+

Sets a Proxy host address. Also adds or replaces proxy host data in the user configuration file.

+
Parameters
+ + +
hostproxy host address.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy host address into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setProxyPass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a Proxy password. Also adds or replaces proxy password in the user configuration file.

+
Parameters
+ + +
passproxy password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPort()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setProxyPort (const std::string & port)
+
+virtual
+
+ +

+

Sets a Proxy port number. Also adds or replaces proxy port data in the user configuration file.

+
Parameters
+ + +
portproxy port number.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy port number into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setProxyTunnelSSL (bool enable)
+
+virtual
+
+ +

+

Enables SSL proxy connections

Exceptions
+ + +
Exceptionexception is thrown if saving into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyUser()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setProxyUser (const std::string & user)
+
+virtual
+
+ +

+

Sets a Proxy user name. Also adds or replaces proxy user name in the user configuration file.

+
Parameters
+ + +
userproxy user name.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy user name into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setTSLOnlineDigest (bool enable)
+
+virtual
+
+ +

+

Enables/Disables online digest check

Exceptions
+ + +
Exceptionexception is thrown if saving a TSL online digest into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setTSLTimeOut (int timeOut)
+
+virtual
+
+ +

+

Sets TSL connection timeout

Parameters
+ + +
timeOutTime out in seconds
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TSL timeout into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSUrl()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setTSUrl (const std::string & url)
+
+virtual
+
+ +

+

Sets a TSA service URL. Also adds or replaces TSA service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect TSA service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TS service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ setVerifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV2::setVerifyServiceUri (const std::string & url)
+
+virtual
+
+ +

+

Sets a Verify service URL. Also adds or replaces Verify service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect Verify service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a Verify service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::signatureDigestUri () const
+
+overridevirtual
+
+

Gets signature digest URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV2::TSLAutoUpdate () const
+
+overridevirtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::TSLCache () const
+
+overridevirtual
+
+

TSL cache path in local file system

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV2::TSLOnlineDigest () const
+
+overridevirtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV2::TSLTimeOut () const
+
+overridevirtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::TSUrl () const
+
+overridevirtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ verifyServiceCert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert XmlConfV2::verifyServiceCert () const
+
+overridevirtual
+
+

Gets verify service Cert

+ +

Reimplemented from digidoc::ConfV2.

+ +

References digidoc::ConfV2::verifyServiceCert().

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV2::verifyServiceUri () const
+
+overridevirtual
+
+

Gets verify service URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • XmlConf.h
  • +
  • XmlConf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV2.js b/classdigidoc_1_1XmlConfV2.js new file mode 100644 index 000000000..e1f5baee3 --- /dev/null +++ b/classdigidoc_1_1XmlConfV2.js @@ -0,0 +1,40 @@ +var classdigidoc_1_1XmlConfV2 = +[ + [ "XmlConfV2", "classdigidoc_1_1XmlConfV2.html#accb318d512b64f0b6a8feb0dcc5fca9c", null ], + [ "~XmlConfV2", "classdigidoc_1_1XmlConfV2.html#a9055fc7c4eded5e8afb1966d0f1422ab", null ], + [ "digestUri", "classdigidoc_1_1XmlConfV2.html#aec63a442c716644f32f3a85fc0ae444b", null ], + [ "instance", "classdigidoc_1_1XmlConfV2.html#a4e796e4bedb189b219e2668aae5f364f", null ], + [ "logFile", "classdigidoc_1_1XmlConfV2.html#a472612c6b01ad8b01c40fd9285181c25", null ], + [ "logLevel", "classdigidoc_1_1XmlConfV2.html#a118b02f4e385c7d57863df96dc3a63ad", null ], + [ "ocsp", "classdigidoc_1_1XmlConfV2.html#a0cd03c9ec60ee4fd04dd7b6bfa98ac36", null ], + [ "PKCS11Driver", "classdigidoc_1_1XmlConfV2.html#a21fa393149cea985ba5c18721a865996", null ], + [ "PKCS12Cert", "classdigidoc_1_1XmlConfV2.html#aa7515a38b977b4bdaadce9b1ebd56ff0", null ], + [ "PKCS12Disable", "classdigidoc_1_1XmlConfV2.html#aa64811f7e87b582cde22dcd1ed52f6b8", null ], + [ "PKCS12Pass", "classdigidoc_1_1XmlConfV2.html#ab2a4dab4cf3146a12798b86eda156aa4", null ], + [ "proxyForceSSL", "classdigidoc_1_1XmlConfV2.html#aa7bfacaea9bb22aba5e79fe1c17398a3", null ], + [ "proxyHost", "classdigidoc_1_1XmlConfV2.html#abe542024e28833fc6868d6c771ec7450", null ], + [ "proxyPass", "classdigidoc_1_1XmlConfV2.html#abf3c067401219448ebbf7c77c81bb654", null ], + [ "proxyPort", "classdigidoc_1_1XmlConfV2.html#adea9c9ca6a1172743453a8949e7d666a", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1XmlConfV2.html#a2be1b665a7c1c0645af5160a43c348ca", null ], + [ "proxyUser", "classdigidoc_1_1XmlConfV2.html#a85fc5da0d9a2c0cd115743d6e9081cf5", null ], + [ "setPKCS12Cert", "classdigidoc_1_1XmlConfV2.html#a17f86b6aea2d1543b8364269b814834a", null ], + [ "setPKCS12Disable", "classdigidoc_1_1XmlConfV2.html#a967dcd43623ecabbd3dd36c740f13cad", null ], + [ "setPKCS12Pass", "classdigidoc_1_1XmlConfV2.html#a4e0fdb18db6bb65951c8fac4940756db", null ], + [ "setProxyHost", "classdigidoc_1_1XmlConfV2.html#aadca28870f77ca71de706dd2ed322dcd", null ], + [ "setProxyPass", "classdigidoc_1_1XmlConfV2.html#ac19bda9674e00ccc769bca4ec6bd05c4", null ], + [ "setProxyPort", "classdigidoc_1_1XmlConfV2.html#aa72272b2ada1db1981435515eed1120f", null ], + [ "setProxyTunnelSSL", "classdigidoc_1_1XmlConfV2.html#a28267335c64ff7a80e256979d36fb6d0", null ], + [ "setProxyUser", "classdigidoc_1_1XmlConfV2.html#a4502b90eea87b0ea1027d5d362c74484", null ], + [ "setTSLOnlineDigest", "classdigidoc_1_1XmlConfV2.html#ae0fa9f615d01114fe25811e3cd9fc6ca", null ], + [ "setTSLTimeOut", "classdigidoc_1_1XmlConfV2.html#a891c6284ecc5f80ef8b0cb9a0767afa5", null ], + [ "setTSUrl", "classdigidoc_1_1XmlConfV2.html#ab2b5d9a376005c47c7be1032a2a04dea", null ], + [ "setVerifyServiceUri", "classdigidoc_1_1XmlConfV2.html#a0c0be8be42f6a5562d1cdddc3967ddad", null ], + [ "signatureDigestUri", "classdigidoc_1_1XmlConfV2.html#a44edf011968f2138246590ca3d9252f8", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1XmlConfV2.html#a57c624717e254eccf67668137cecd3ff", null ], + [ "TSLCache", "classdigidoc_1_1XmlConfV2.html#ae99c6173bbe16463419984b608c110a7", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1XmlConfV2.html#ad28050f1e122047dc04f1cd4ba3f53a1", null ], + [ "TSLTimeOut", "classdigidoc_1_1XmlConfV2.html#a55d70c20948afe4e96de30cf0922efc2", null ], + [ "TSUrl", "classdigidoc_1_1XmlConfV2.html#a96d93bab8362315fed3ca7efd4ff92ed", null ], + [ "verifyServiceCert", "classdigidoc_1_1XmlConfV2.html#a557044461941e9282120be4c999c5cb2", null ], + [ "verifyServiceUri", "classdigidoc_1_1XmlConfV2.html#aa2b63652b8ac1b0d111c0f89e1045907", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConfV2.png b/classdigidoc_1_1XmlConfV2.png new file mode 100644 index 0000000000000000000000000000000000000000..28b57dc62a2b503970c81a92191d11d811f7b3e9 GIT binary patch literal 777 zcmeAS@N?(olHy`uVBq!ia0vp^)j-_A!3-on$fx`QQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;QrwQp&GyWdB^rW=dVqAG%b^H)3wJaZEgdNmNQ~ZPNE8M^JykmQR^50D>`J9GhQaKIV zaNy}r_kN$-GJT1jRE}rXYW>#h8&KMPkqzc(j#57WQu^`ZG9o>l(S z-+Y>?;3l5{yY73 z%?3uP>b9vq>*lyRXf5_Q(5ap-$1eFCR>3f5mEGrB(H_PcGf8 zAuu=kkkQe;9Ji9YldLaUE#i14HFN8?0AIh~QWvl1L>0_EKJDJwzQ^fh1-HUa=y2b- zbepMbquiUjS9hczpRsAO=(%ZUUzI$`wAK$xP>=J!S$*%pq_9-^C0l06Z<=ge)0yk_ z?CR%z3Cpb~vd^`hw*GqMtVPXRjy}JAWn1cT?FB{aO?STGdh_NQ!w>GMpY-l^Gss`7 m=x5w=m4EZx;&uK17{8t|mXZtmaTJ(t89ZJ6T-G@yGywoY#f4V@ literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1XmlConfV3-members.html b/classdigidoc_1_1XmlConfV3-members.html new file mode 100644 index 000000000..65c557673 --- /dev/null +++ b/classdigidoc_1_1XmlConfV3-members.html @@ -0,0 +1,131 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::XmlConfV3 Member List
+
+
+ +

This is the complete list of members for digidoc::XmlConfV3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
digestUri() const overridedigidoc::XmlConfV3virtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::XmlConfV3static
libdigidocConf() constdigidoc::Confvirtual
logFile() const overridedigidoc::XmlConfV3virtual
logLevel() const overridedigidoc::XmlConfV3virtual
ocsp(const std::string &issuer) const overridedigidoc::XmlConfV3virtual
OCSPTMProfiles() const overridedigidoc::XmlConfV3virtual
PKCS11Driver() const overridedigidoc::XmlConfV3virtual
PKCS12Cert() const overridedigidoc::XmlConfV3virtual
PKCS12Disable() const overridedigidoc::XmlConfV3virtual
PKCS12Pass() const overridedigidoc::XmlConfV3virtual
proxyForceSSL() const overridedigidoc::XmlConfV3virtual
proxyHost() const overridedigidoc::XmlConfV3virtual
proxyPass() const overridedigidoc::XmlConfV3virtual
proxyPort() const overridedigidoc::XmlConfV3virtual
proxyTunnelSSL() const overridedigidoc::XmlConfV3virtual
proxyUser() const overridedigidoc::XmlConfV3virtual
setPKCS12Cert(const std::string &cert)digidoc::XmlConfV3virtual
setPKCS12Disable(bool disable)digidoc::XmlConfV3virtual
setPKCS12Pass(const std::string &pass)digidoc::XmlConfV3virtual
setProxyHost(const std::string &host)digidoc::XmlConfV3virtual
setProxyPass(const std::string &pass)digidoc::XmlConfV3virtual
setProxyPort(const std::string &port)digidoc::XmlConfV3virtual
setProxyTunnelSSL(bool enable)digidoc::XmlConfV3virtual
setProxyUser(const std::string &user)digidoc::XmlConfV3virtual
setTSLOnlineDigest(bool enable)digidoc::XmlConfV3virtual
setTSLTimeOut(int timeOut)digidoc::XmlConfV3virtual
setTSUrl(const std::string &url)digidoc::XmlConfV3virtual
setVerifyServiceUri(const std::string &url)digidoc::XmlConfV3virtual
signatureDigestUri() const overridedigidoc::XmlConfV3virtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() const overridedigidoc::XmlConfV3virtual
TSLCache() const overridedigidoc::XmlConfV3virtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() const overridedigidoc::XmlConfV3virtual
TSLTimeOut() const overridedigidoc::XmlConfV3virtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() const overridedigidoc::XmlConfV3virtual
verifyServiceCert() const overridedigidoc::XmlConfV3virtual
verifyServiceUri() const overridedigidoc::XmlConfV3virtual
XmlConfV3(const std::string &path={}, const std::string &schema={})digidoc::XmlConfV3explicit
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
~XmlConfV3() overridedigidoc::XmlConfV3
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV3.html b/classdigidoc_1_1XmlConfV3.html new file mode 100644 index 000000000..b68e28005 --- /dev/null +++ b/classdigidoc_1_1XmlConfV3.html @@ -0,0 +1,1455 @@ + + + + + + + +libdigidocpp: digidoc::XmlConfV3 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::XmlConfV3 Class Reference
+
+
+ +

Version 3 of XML Configuration class. + More...

+ +

#include <XmlConf.h>

+
+Inheritance diagram for digidoc::XmlConfV3:
+
+
+ + +digidoc::ConfV3 +digidoc::ConfV2 +digidoc::Conf + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 XmlConfV3 (const std::string &path={}, const std::string &schema={})
 
 ~XmlConfV3 () override
 
int logLevel () const override
 
std::string logFile () const override
 
std::string PKCS11Driver () const override
 
std::string proxyHost () const override
 
std::string proxyPort () const override
 
std::string proxyUser () const override
 
std::string proxyPass () const override
 
bool proxyForceSSL () const override
 
bool proxyTunnelSSL () const override
 
std::string digestUri () const override
 
std::string signatureDigestUri () const override
 
std::string ocsp (const std::string &issuer) const override
 
std::set< std::string > OCSPTMProfiles () const override
 
std::string TSUrl () const override
 
X509Cert verifyServiceCert () const override
 
std::string verifyServiceUri () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const override
 
DIGIDOCPP_DEPRECATED bool PKCS12Disable () const override
 
bool TSLAutoUpdate () const override
 
std::string TSLCache () const override
 
bool TSLOnlineDigest () const override
 
int TSLTimeOut () const override
 
virtual void setProxyHost (const std::string &host)
 
virtual void setProxyPort (const std::string &port)
 
virtual void setProxyUser (const std::string &user)
 
virtual void setProxyPass (const std::string &pass)
 
virtual void setProxyTunnelSSL (bool enable)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Cert (const std::string &cert)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Pass (const std::string &pass)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Disable (bool disable)
 
virtual void setTSLOnlineDigest (bool enable)
 
virtual void setTSLTimeOut (int timeOut)
 
virtual void setTSUrl (const std::string &url)
 
virtual void setVerifyServiceUri (const std::string &url)
 
- Public Member Functions inherited from digidoc::ConfV3
 ConfV3 ()
 
 ~ConfV3 () override
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual bool TSLAllowExpired () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static XmlConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV3
static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Version 3 of XML Configuration class.

+
Deprecated:
Use digidoc::XmlConfV5
+
See also
digidoc::ConfV3
+

Constructor & Destructor Documentation

+ +

◆ XmlConfV3()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
XmlConfV3::XmlConfV3 (const std::string & path = {},
const std::string & schema = {} 
)
+
+explicit
+
+ +
+
+ +

◆ ~XmlConfV3()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV3::~XmlConfV3 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::digestUri () const
+
+overridevirtual
+
+

Return default digest type as URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV3 * XmlConfV3::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::logFile () const
+
+overridevirtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV3::logLevel () const
+
+overridevirtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string XmlConfV3::ocsp (const std::string & issuer) const
+
+overridevirtual
+
+

Return OCSP request URL

Parameters
+ + +
issuerOCSP issuer.
+
+
+ +

Reimplemented from digidoc::Conf.

+ +

References digidoc::Conf::ocsp().

+ +
+
+ +

◆ OCSPTMProfiles()

+ +
+
+ + + + + +
+ + + + + + + +
set< string > XmlConfV3::OCSPTMProfiles () const
+
+overridevirtual
+
+

Gets OCSP TM Profile OID-s

+

OCSP responder certificate policies that are used to identify if OCSP response is given with TM profile

+ +

Reimplemented from digidoc::ConfV3.

+ +

References digidoc::ConfV3::OCSPTMProfiles().

+ +
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::PKCS11Driver () const
+
+overridevirtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV3::PKCS12Cert () const
+
+overridevirtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED bool digidoc::XmlConfV3::PKCS12Disable () const
+
+overridevirtual
+
+

Gets PKCS12 usage.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV3::PKCS12Pass () const
+
+overridevirtual
+
+

Gets PKCS12 password.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV3::proxyForceSSL () const
+
+overridevirtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::proxyHost () const
+
+overridevirtual
+
+

Gets proxy host address.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::proxyPass () const
+
+overridevirtual
+
+

Gets proxy login password.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::proxyPort () const
+
+overridevirtual
+
+

Gets proxy port number.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV3::proxyTunnelSSL () const
+
+overridevirtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::proxyUser () const
+
+overridevirtual
+
+

Gets proxy user name.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ setPKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setPKCS12Cert (const std::string & cert)
+
+virtual
+
+ +

+

Sets a PKCS#12 certficate path. Also adds or replaces PKCS#12 certificate path in the user configuration file. By default the PKCS#12 certificate file should be located at default path, given by getUserConfDir() function.

+
Parameters
+ + +
certPKCS#12 certificate location path.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate path into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setPKCS12Disable (bool disable)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate usage. Also adds or replaces PKCS#12 certificate usage in the user configuration file.

+
Parameters
+ + +
disablePKCS#12 certificate usage.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate usage into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setPKCS12Pass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate password. Also adds or replaces PKCS#12 certificate password in the user configuration file.

+
Parameters
+ + +
passPKCS#12 certificate password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyHost()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setProxyHost (const std::string & host)
+
+virtual
+
+ +

+

Sets a Proxy host address. Also adds or replaces proxy host data in the user configuration file.

+
Parameters
+ + +
hostproxy host address.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy host address into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setProxyPass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a Proxy password. Also adds or replaces proxy password in the user configuration file.

+
Parameters
+ + +
passproxy password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPort()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setProxyPort (const std::string & port)
+
+virtual
+
+ +

+

Sets a Proxy port number. Also adds or replaces proxy port data in the user configuration file.

+
Parameters
+ + +
portproxy port number.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy port number into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setProxyTunnelSSL (bool enable)
+
+virtual
+
+ +

+

Enables SSL proxy connections

Exceptions
+ + +
Exceptionexception is thrown if saving into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyUser()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setProxyUser (const std::string & user)
+
+virtual
+
+ +

+

Sets a Proxy user name. Also adds or replaces proxy user name in the user configuration file.

+
Parameters
+ + +
userproxy user name.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy user name into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setTSLOnlineDigest (bool enable)
+
+virtual
+
+ +

+

Enables/Disables online digest check

Exceptions
+ + +
Exceptionexception is thrown if saving a TSL online digest into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setTSLTimeOut (int timeOut)
+
+virtual
+
+ +

+

Sets TSL connection timeout

Parameters
+ + +
timeOutTime out in seconds
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TSL timeout into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSUrl()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setTSUrl (const std::string & url)
+
+virtual
+
+ +

+

Sets a TSA service URL. Also adds or replaces TSA service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect TSA service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TS service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ setVerifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV3::setVerifyServiceUri (const std::string & url)
+
+virtual
+
+ +

+

Sets a Verify service URL. Also adds or replaces Verify service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect Verify service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a Verify service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::signatureDigestUri () const
+
+overridevirtual
+
+

Gets signature digest URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV3::TSLAutoUpdate () const
+
+overridevirtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::TSLCache () const
+
+overridevirtual
+
+

TSL cache path in local file system

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV3::TSLOnlineDigest () const
+
+overridevirtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV3::TSLTimeOut () const
+
+overridevirtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::TSUrl () const
+
+overridevirtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ verifyServiceCert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert XmlConfV3::verifyServiceCert () const
+
+overridevirtual
+
+

Gets verify service Cert

+ +

Reimplemented from digidoc::ConfV2.

+ +

References digidoc::ConfV2::verifyServiceCert().

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV3::verifyServiceUri () const
+
+overridevirtual
+
+

Gets verify service URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • XmlConf.h
  • +
  • XmlConf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV3.js b/classdigidoc_1_1XmlConfV3.js new file mode 100644 index 000000000..850780c4a --- /dev/null +++ b/classdigidoc_1_1XmlConfV3.js @@ -0,0 +1,41 @@ +var classdigidoc_1_1XmlConfV3 = +[ + [ "XmlConfV3", "classdigidoc_1_1XmlConfV3.html#abed91f70d811e307a8b899d905ee0359", null ], + [ "~XmlConfV3", "classdigidoc_1_1XmlConfV3.html#aa0c009bbafdb0a526ec2c84ec1790bf8", null ], + [ "digestUri", "classdigidoc_1_1XmlConfV3.html#abdb5279d46c14f1d7a2bd8032d1a8461", null ], + [ "instance", "classdigidoc_1_1XmlConfV3.html#a514fd3e4ce3239e78f5bf9b53e64fef3", null ], + [ "logFile", "classdigidoc_1_1XmlConfV3.html#a9b717c094195fe499a07498c8d3b554d", null ], + [ "logLevel", "classdigidoc_1_1XmlConfV3.html#a473fe78f6ec7ce6c79ca0a587909d4ee", null ], + [ "ocsp", "classdigidoc_1_1XmlConfV3.html#ad2e07d524de7048d0af9551a86a07d50", null ], + [ "OCSPTMProfiles", "classdigidoc_1_1XmlConfV3.html#a82dd643fef090f08939cecca537f7e5f", null ], + [ "PKCS11Driver", "classdigidoc_1_1XmlConfV3.html#a3e844423d22ba6aac024d8c25758f58a", null ], + [ "PKCS12Cert", "classdigidoc_1_1XmlConfV3.html#ad54b8576d76f2d2e41984bb0dd215ae8", null ], + [ "PKCS12Disable", "classdigidoc_1_1XmlConfV3.html#a211a9bda1751654f3d638c3755e8d677", null ], + [ "PKCS12Pass", "classdigidoc_1_1XmlConfV3.html#a2b13a881bc030a4ae5de63b630cacc1f", null ], + [ "proxyForceSSL", "classdigidoc_1_1XmlConfV3.html#a7207afe8cd9610edc696630151221389", null ], + [ "proxyHost", "classdigidoc_1_1XmlConfV3.html#a8b28f76bd4c98670573ac15ff6615d47", null ], + [ "proxyPass", "classdigidoc_1_1XmlConfV3.html#a05ae4c367ae4895afc8a4765b164031d", null ], + [ "proxyPort", "classdigidoc_1_1XmlConfV3.html#aff7ce4ab3da98f9c9593044e729af6c2", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1XmlConfV3.html#a2bf9e65c5676fa38272615e08f42eea1", null ], + [ "proxyUser", "classdigidoc_1_1XmlConfV3.html#aacbc74cedd141a7005c2f0f41d23ca44", null ], + [ "setPKCS12Cert", "classdigidoc_1_1XmlConfV3.html#af5d24e9d6b33e912d2f13e85a914c6f3", null ], + [ "setPKCS12Disable", "classdigidoc_1_1XmlConfV3.html#acb5558c5910a66042ffb18da8470e245", null ], + [ "setPKCS12Pass", "classdigidoc_1_1XmlConfV3.html#ad4e1132c463085385d4c577002640d16", null ], + [ "setProxyHost", "classdigidoc_1_1XmlConfV3.html#a52f39b80063641c2075a567961da8add", null ], + [ "setProxyPass", "classdigidoc_1_1XmlConfV3.html#a33c975a0a0e700adbfccaefb16cb4cb6", null ], + [ "setProxyPort", "classdigidoc_1_1XmlConfV3.html#a310d69ab4873f664e84b195fc88a6109", null ], + [ "setProxyTunnelSSL", "classdigidoc_1_1XmlConfV3.html#a9c6cc8d9815a82a6ffb0ad8f778d47c9", null ], + [ "setProxyUser", "classdigidoc_1_1XmlConfV3.html#ab1b75fb983d99bbb5b02828c12f77711", null ], + [ "setTSLOnlineDigest", "classdigidoc_1_1XmlConfV3.html#a9687f08dc25c733b332806963c791595", null ], + [ "setTSLTimeOut", "classdigidoc_1_1XmlConfV3.html#a53ef55bf3df8a638e5aab87957a69731", null ], + [ "setTSUrl", "classdigidoc_1_1XmlConfV3.html#a65232dec363f68d30cbc9534c47d0d21", null ], + [ "setVerifyServiceUri", "classdigidoc_1_1XmlConfV3.html#a1687d1763b79a541516335e1343e1ee9", null ], + [ "signatureDigestUri", "classdigidoc_1_1XmlConfV3.html#a5cb6b9b8bceae76486b0779d089cba68", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1XmlConfV3.html#afddc3dfc256a3e10ff8e30dd6d9e6eef", null ], + [ "TSLCache", "classdigidoc_1_1XmlConfV3.html#abdd64c07e7d30b5271fd80c078130e99", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1XmlConfV3.html#ad6dda2ae619f3aff1c0e6c88606f4191", null ], + [ "TSLTimeOut", "classdigidoc_1_1XmlConfV3.html#a250b312381dc758071e5918350190a0e", null ], + [ "TSUrl", "classdigidoc_1_1XmlConfV3.html#af321b1b311f180697c84d4be7a8dbf9a", null ], + [ "verifyServiceCert", "classdigidoc_1_1XmlConfV3.html#ae281d7d67ab90f9b89cc7e8ff64671c7", null ], + [ "verifyServiceUri", "classdigidoc_1_1XmlConfV3.html#a83c48ff09bcbe2a058d1dc2160b14905", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConfV3.png b/classdigidoc_1_1XmlConfV3.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d5a73554fae48bc89bda4f12301a8fbb24766a GIT binary patch literal 1000 zcmeAS@N?(olHy`uVBq!ia0vp^)j)iJgBeH)i@f;_q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0%ROBjLn;{G&V4;;wSoZK?0&8L|0ni8 z>J=>Uebg9|8uaBIOJiDrNqwi`F+Ty-mE7;9E!kGH(R#_Y`jh`WC#m+xdv3b&>)kHZ zlLgztUg_)2o3;M#m5^Jhf-Znw`;;c(%X)zVO`qg8S<}U)^ALKl(j;o@e#$2@^$ zp}l+7-xHYhMed)qnrH6M#PS})Z;TIW*&6&xO8A}aE8V}Zc&GOM<-eO&<>n5_cX%&| zl{0TSdY2)$(A*&!!POT|?wPCL6(oK~7ifx8xkv8*Nq;A+cuUw%N|F5i?B2`#(jy?} zq`$ioALDb(roX7_tnK@Xd+U0y{e7O968K7%-LH6B#s0d}bJNz{)?K92yLP6}cgbV5 z@6Vh)<(lHH7{A5nn9Lp($$#sscQHQSdg)lK{$>AnK)h3-{<9VRp`kl{Z&)?p9ao2yFULCK!j}K&? z6MBC=9~fn&yIrR&-Do=brQKnbdYA{#FE@HNchCGHfAa@>Vs7oozkciO@7figU;W#3 z+-DNc{3}1p!u$8O{$Be0_xt5hlkA>cinZ7BtZI3^XSKVkXa9r!$&;>3lP^0iku1+} zFP-6qi~DzjFO$nl`d{UJn)h!0+TwC%lVcds293oJMv5&LIGG&8fe|`wePRE@f4QB0 z+sw+JiwDnHC4OK-=$9|$@`WYL66g9Yo^~e zKD%(~!pB=zb|3lub+I*XRJewccEqJ2S}&|H z{Bzyez0Y_RvzNcyv&pVB{rd;i^0n9U?!V_QuM>K@Z1eFqcdgC`^Gw+O_ovy`-1{Qx z=fB_gH$9LXa_49?^Mm?;)4PAgu~bO>mu1d4&A;23V4hQv?aZGOzhmH@LQgQu&X J%Q~loCIE<51_S^A literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1XmlConfV4-members.html b/classdigidoc_1_1XmlConfV4-members.html new file mode 100644 index 000000000..9271bf671 --- /dev/null +++ b/classdigidoc_1_1XmlConfV4-members.html @@ -0,0 +1,134 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::XmlConfV4 Member List
+
+
+ +

This is the complete list of members for digidoc::XmlConfV4, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
ConfV4()digidoc::ConfV4
digestUri() const overridedigidoc::XmlConfV4virtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::XmlConfV4static
libdigidocConf() constdigidoc::Confvirtual
logFile() const overridedigidoc::XmlConfV4virtual
logLevel() const overridedigidoc::XmlConfV4virtual
ocsp(const std::string &issuer) const overridedigidoc::XmlConfV4virtual
OCSPTMProfiles() const overridedigidoc::XmlConfV4virtual
PKCS11Driver() const overridedigidoc::XmlConfV4virtual
PKCS12Cert() const overridedigidoc::XmlConfV4virtual
PKCS12Disable() const overridedigidoc::XmlConfV4virtual
PKCS12Pass() const overridedigidoc::XmlConfV4virtual
proxyForceSSL() const overridedigidoc::XmlConfV4virtual
proxyHost() const overridedigidoc::XmlConfV4virtual
proxyPass() const overridedigidoc::XmlConfV4virtual
proxyPort() const overridedigidoc::XmlConfV4virtual
proxyTunnelSSL() const overridedigidoc::XmlConfV4virtual
proxyUser() const overridedigidoc::XmlConfV4virtual
setPKCS12Cert(const std::string &cert)digidoc::XmlConfV4virtual
setPKCS12Disable(bool disable)digidoc::XmlConfV4virtual
setPKCS12Pass(const std::string &pass)digidoc::XmlConfV4virtual
setProxyHost(const std::string &host)digidoc::XmlConfV4virtual
setProxyPass(const std::string &pass)digidoc::XmlConfV4virtual
setProxyPort(const std::string &port)digidoc::XmlConfV4virtual
setProxyTunnelSSL(bool enable)digidoc::XmlConfV4virtual
setProxyUser(const std::string &user)digidoc::XmlConfV4virtual
setTSLOnlineDigest(bool enable)digidoc::XmlConfV4virtual
setTSLTimeOut(int timeOut)digidoc::XmlConfV4virtual
setTSUrl(const std::string &url)digidoc::XmlConfV4virtual
setVerifyServiceUri(const std::string &url)digidoc::XmlConfV4virtual
signatureDigestUri() const overridedigidoc::XmlConfV4virtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() const overridedigidoc::XmlConfV4virtual
TSLCache() const overridedigidoc::XmlConfV4virtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() const overridedigidoc::XmlConfV4virtual
TSLTimeOut() const overridedigidoc::XmlConfV4virtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() const overridedigidoc::XmlConfV4virtual
verifyServiceCert() const overridedigidoc::XmlConfV4virtual
verifyServiceCerts() const overridedigidoc::XmlConfV4virtual
verifyServiceUri() const overridedigidoc::XmlConfV4virtual
XmlConfV4(const std::string &path={}, const std::string &schema={})digidoc::XmlConfV4explicit
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
~ConfV4() overridedigidoc::ConfV4
~XmlConfV4() overridedigidoc::XmlConfV4
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV4.html b/classdigidoc_1_1XmlConfV4.html new file mode 100644 index 000000000..c9e8a2017 --- /dev/null +++ b/classdigidoc_1_1XmlConfV4.html @@ -0,0 +1,1497 @@ + + + + + + + +libdigidocpp: digidoc::XmlConfV4 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::XmlConfV4 Class Reference
+
+
+ +

Version 4 of XML Configuration class. + More...

+ +

#include <XmlConf.h>

+
+Inheritance diagram for digidoc::XmlConfV4:
+
+
+ + +digidoc::ConfV4 +digidoc::ConfV3 +digidoc::ConfV2 +digidoc::Conf + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 XmlConfV4 (const std::string &path={}, const std::string &schema={})
 
 ~XmlConfV4 () override
 
int logLevel () const override
 
std::string logFile () const override
 
std::string PKCS11Driver () const override
 
std::string proxyHost () const override
 
std::string proxyPort () const override
 
std::string proxyUser () const override
 
std::string proxyPass () const override
 
bool proxyForceSSL () const override
 
bool proxyTunnelSSL () const override
 
std::string digestUri () const override
 
std::string signatureDigestUri () const override
 
std::string ocsp (const std::string &issuer) const override
 
std::set< std::string > OCSPTMProfiles () const override
 
std::string TSUrl () const override
 
X509Cert verifyServiceCert () const override
 
std::vector< X509CertverifyServiceCerts () const override
 
std::string verifyServiceUri () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const override
 
DIGIDOCPP_DEPRECATED bool PKCS12Disable () const override
 
bool TSLAutoUpdate () const override
 
std::string TSLCache () const override
 
bool TSLOnlineDigest () const override
 
int TSLTimeOut () const override
 
virtual void setProxyHost (const std::string &host)
 
virtual void setProxyPort (const std::string &port)
 
virtual void setProxyUser (const std::string &user)
 
virtual void setProxyPass (const std::string &pass)
 
virtual void setProxyTunnelSSL (bool enable)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Cert (const std::string &cert)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Pass (const std::string &pass)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Disable (bool disable)
 
virtual void setTSLOnlineDigest (bool enable)
 
virtual void setTSLTimeOut (int timeOut)
 
virtual void setTSUrl (const std::string &url)
 
virtual void setVerifyServiceUri (const std::string &url)
 
- Public Member Functions inherited from digidoc::ConfV4
 ConfV4 ()
 
 ~ConfV4 () override
 
- Public Member Functions inherited from digidoc::ConfV3
 ConfV3 ()
 
 ~ConfV3 () override
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual bool TSLAllowExpired () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static XmlConfV4instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV4
static ConfV4instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV3
static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Version 4 of XML Configuration class.

+
Deprecated:
Use digidoc::XmlConfV5
+
See also
digidoc::ConfV4
+

Constructor & Destructor Documentation

+ +

◆ XmlConfV4()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
XmlConfV4::XmlConfV4 (const std::string & path = {},
const std::string & schema = {} 
)
+
+explicit
+
+

Initialize xml conf from path

+ +
+
+ +

◆ ~XmlConfV4()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV4::~XmlConfV4 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::digestUri () const
+
+overridevirtual
+
+

Return default digest type as URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV4 * XmlConfV4::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::logFile () const
+
+overridevirtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV4::logLevel () const
+
+overridevirtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string XmlConfV4::ocsp (const std::string & issuer) const
+
+overridevirtual
+
+

Return OCSP request URL

Parameters
+ + +
issuerOCSP issuer.
+
+
+ +

Reimplemented from digidoc::Conf.

+ +

References digidoc::Conf::ocsp().

+ +
+
+ +

◆ OCSPTMProfiles()

+ +
+
+ + + + + +
+ + + + + + + +
set< string > XmlConfV4::OCSPTMProfiles () const
+
+overridevirtual
+
+

Gets OCSP TM Profile OID-s

+

OCSP responder certificate policies that are used to identify if OCSP response is given with TM profile

+ +

Reimplemented from digidoc::ConfV3.

+ +

References digidoc::ConfV3::OCSPTMProfiles().

+ +
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::PKCS11Driver () const
+
+overridevirtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV4::PKCS12Cert () const
+
+overridevirtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED bool digidoc::XmlConfV4::PKCS12Disable () const
+
+overridevirtual
+
+

Gets PKCS12 usage.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV4::PKCS12Pass () const
+
+overridevirtual
+
+

Gets PKCS12 password.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV4::proxyForceSSL () const
+
+overridevirtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::proxyHost () const
+
+overridevirtual
+
+

Gets proxy host address.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::proxyPass () const
+
+overridevirtual
+
+

Gets proxy login password.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::proxyPort () const
+
+overridevirtual
+
+

Gets proxy port number.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV4::proxyTunnelSSL () const
+
+overridevirtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::proxyUser () const
+
+overridevirtual
+
+

Gets proxy user name.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ setPKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setPKCS12Cert (const std::string & cert)
+
+virtual
+
+ +

+

Sets a PKCS#12 certficate path. Also adds or replaces PKCS#12 certificate path in the user configuration file. By default the PKCS#12 certificate file should be located at default path, given by getUserConfDir() function.

+
Parameters
+ + +
certPKCS#12 certificate location path.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate path into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setPKCS12Disable (bool disable)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate usage. Also adds or replaces PKCS#12 certificate usage in the user configuration file.

+
Parameters
+ + +
disablePKCS#12 certificate usage.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate usage into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setPKCS12Pass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate password. Also adds or replaces PKCS#12 certificate password in the user configuration file.

+
Parameters
+ + +
passPKCS#12 certificate password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyHost()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setProxyHost (const std::string & host)
+
+virtual
+
+ +

+

Sets a Proxy host address. Also adds or replaces proxy host data in the user configuration file.

+
Parameters
+ + +
hostproxy host address.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy host address into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setProxyPass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a Proxy password. Also adds or replaces proxy password in the user configuration file.

+
Parameters
+ + +
passproxy password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPort()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setProxyPort (const std::string & port)
+
+virtual
+
+ +

+

Sets a Proxy port number. Also adds or replaces proxy port data in the user configuration file.

+
Parameters
+ + +
portproxy port number.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy port number into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setProxyTunnelSSL (bool enable)
+
+virtual
+
+ +

+

Enables SSL proxy connections

Exceptions
+ + +
Exceptionexception is thrown if saving into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyUser()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setProxyUser (const std::string & user)
+
+virtual
+
+ +

+

Sets a Proxy user name. Also adds or replaces proxy user name in the user configuration file.

+
Parameters
+ + +
userproxy user name.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy user name into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setTSLOnlineDigest (bool enable)
+
+virtual
+
+ +

+

Enables/Disables online digest check

Exceptions
+ + +
Exceptionexception is thrown if saving a TSL online digest into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setTSLTimeOut (int timeOut)
+
+virtual
+
+ +

+

Sets TSL connection timeout

Parameters
+ + +
timeOutTime out in seconds
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TSL timeout into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSUrl()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setTSUrl (const std::string & url)
+
+virtual
+
+ +

+

Sets a TSA service URL. Also adds or replaces TSA service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect TSA service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TS service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ setVerifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV4::setVerifyServiceUri (const std::string & url)
+
+virtual
+
+ +

+

Sets a Verify service URL. Also adds or replaces Verify service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect Verify service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a Verify service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::signatureDigestUri () const
+
+overridevirtual
+
+

Gets signature digest URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV4::TSLAutoUpdate () const
+
+overridevirtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::TSLCache () const
+
+overridevirtual
+
+

TSL cache path in local file system

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV4::TSLOnlineDigest () const
+
+overridevirtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV4::TSLTimeOut () const
+
+overridevirtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::TSUrl () const
+
+overridevirtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ verifyServiceCert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert XmlConfV4::verifyServiceCert () const
+
+overridevirtual
+
+

Gets verify service Cert

+ +

Reimplemented from digidoc::ConfV2.

+ +

References digidoc::ConfV2::verifyServiceCert().

+ +
+
+ +

◆ verifyServiceCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > XmlConfV4::verifyServiceCerts () const
+
+overridevirtual
+
+

Gets verify service Certs

+ +

Reimplemented from digidoc::ConfV4.

+ +

References digidoc::ConfV4::verifyServiceCerts().

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV4::verifyServiceUri () const
+
+overridevirtual
+
+

Gets verify service URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • XmlConf.h
  • +
  • XmlConf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV4.js b/classdigidoc_1_1XmlConfV4.js new file mode 100644 index 000000000..9dd2dc6fe --- /dev/null +++ b/classdigidoc_1_1XmlConfV4.js @@ -0,0 +1,42 @@ +var classdigidoc_1_1XmlConfV4 = +[ + [ "XmlConfV4", "classdigidoc_1_1XmlConfV4.html#ae737299d0ea32b590cbb2c6d505609d0", null ], + [ "~XmlConfV4", "classdigidoc_1_1XmlConfV4.html#aac4711c1a2fde734ef902f784811b072", null ], + [ "digestUri", "classdigidoc_1_1XmlConfV4.html#aa88e93752113aa9365a42a7ba68fb175", null ], + [ "instance", "classdigidoc_1_1XmlConfV4.html#ad8ee7a034e30c0771a043b7768b743e1", null ], + [ "logFile", "classdigidoc_1_1XmlConfV4.html#ae5812fa71c7e1909e688918f53bacb06", null ], + [ "logLevel", "classdigidoc_1_1XmlConfV4.html#ab79cd12873b722005173fed90c6980a3", null ], + [ "ocsp", "classdigidoc_1_1XmlConfV4.html#a11f7e0de8e642dba55f2d8b9dbd9196d", null ], + [ "OCSPTMProfiles", "classdigidoc_1_1XmlConfV4.html#a9d0f7b4e246ead7e4c9bf369e5f59596", null ], + [ "PKCS11Driver", "classdigidoc_1_1XmlConfV4.html#a5164e8a7e0857e7cfa6f4653fdab95f3", null ], + [ "PKCS12Cert", "classdigidoc_1_1XmlConfV4.html#a8c0c94eb04d271b3c4cca0dce2309e1e", null ], + [ "PKCS12Disable", "classdigidoc_1_1XmlConfV4.html#a0d25bc31f16d0674a5b1348302552786", null ], + [ "PKCS12Pass", "classdigidoc_1_1XmlConfV4.html#a8a15320a64cbc46bd165fc2a08e25c86", null ], + [ "proxyForceSSL", "classdigidoc_1_1XmlConfV4.html#a40380554dfd690dc3fa38a3ca9f916ea", null ], + [ "proxyHost", "classdigidoc_1_1XmlConfV4.html#ac656f67cffef63aa4cb7c72c6f1ea592", null ], + [ "proxyPass", "classdigidoc_1_1XmlConfV4.html#a9c41db949831c686e2839c0dcadb54a1", null ], + [ "proxyPort", "classdigidoc_1_1XmlConfV4.html#abaf638e5588814e3eb09542d86a54b66", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1XmlConfV4.html#ad1e24f92cc6acadb27c5941cc4bc2fd4", null ], + [ "proxyUser", "classdigidoc_1_1XmlConfV4.html#a067336d5971654a7d891eccb09ba2ae3", null ], + [ "setPKCS12Cert", "classdigidoc_1_1XmlConfV4.html#a45301267233126bf56fbd79bfc57155a", null ], + [ "setPKCS12Disable", "classdigidoc_1_1XmlConfV4.html#a8c9ef86e2ff692c25483df660f65b9ed", null ], + [ "setPKCS12Pass", "classdigidoc_1_1XmlConfV4.html#a47d18a6403bdb72922d2beaa3d9596a7", null ], + [ "setProxyHost", "classdigidoc_1_1XmlConfV4.html#a467a8c8f6444aaa546ceb5d28b22a2af", null ], + [ "setProxyPass", "classdigidoc_1_1XmlConfV4.html#a4030fa7af5645bf5fe7c746b1769e623", null ], + [ "setProxyPort", "classdigidoc_1_1XmlConfV4.html#a9696289b3f755382945199d93e3ffbf7", null ], + [ "setProxyTunnelSSL", "classdigidoc_1_1XmlConfV4.html#a12fea9243c2c165f95269711dc227d24", null ], + [ "setProxyUser", "classdigidoc_1_1XmlConfV4.html#a7a1b705489ec2f47a9257a04194f7dfa", null ], + [ "setTSLOnlineDigest", "classdigidoc_1_1XmlConfV4.html#ae307ed689e976e52b49768c150d8f79a", null ], + [ "setTSLTimeOut", "classdigidoc_1_1XmlConfV4.html#a148baa780b716443f1c997bbf965d6f4", null ], + [ "setTSUrl", "classdigidoc_1_1XmlConfV4.html#aba62289e14bf6fdff534af0ef393fd08", null ], + [ "setVerifyServiceUri", "classdigidoc_1_1XmlConfV4.html#a8ed40783c570f1972d563d5eace16f0e", null ], + [ "signatureDigestUri", "classdigidoc_1_1XmlConfV4.html#a2fe0735bcfb33acc11fa303d85f4f794", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1XmlConfV4.html#a74864d7ec3754355302c8d75a826828c", null ], + [ "TSLCache", "classdigidoc_1_1XmlConfV4.html#a929a926d16a7adcd68de647d08ac3cb2", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1XmlConfV4.html#a15cfa6992a49b2b81938e15240d76ea3", null ], + [ "TSLTimeOut", "classdigidoc_1_1XmlConfV4.html#a9038f5e498d140af322e016450be15aa", null ], + [ "TSUrl", "classdigidoc_1_1XmlConfV4.html#a0b2c331537df32735fcbd63e850fd99d", null ], + [ "verifyServiceCert", "classdigidoc_1_1XmlConfV4.html#a68ee82d5f8d5df04ec63adee39e73704", null ], + [ "verifyServiceCerts", "classdigidoc_1_1XmlConfV4.html#a11fd73c7f2a472fa43d70d4b58bbe79d", null ], + [ "verifyServiceUri", "classdigidoc_1_1XmlConfV4.html#adbe14f79bf8b4fc89959238c8ae83875", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConfV4.png b/classdigidoc_1_1XmlConfV4.png new file mode 100644 index 0000000000000000000000000000000000000000..2f789e112bcea0fb5d21aa25e6176d5bdb2f877f GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0vp^)j<4%gBeKvw#~E#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Xb`2Vz*}< zx*2!6qU__9nz!?m>YmiTIjd=Br0a3*V&CDNGVwrMm9! z#cjvqw&g$5I}^D0+TB&0+vk5@c+URezS!sfhd+Pc+q>^!*!QxH?XR@&6fOTA_Eq`L z>EEwf0&08z*)NNlu3y$J;3Ulum(G&m;{4rW+hp?+|5s_BroCIg_VYWo6+Y$6SC;N( ze0AwAL+Q)BhFvA*4zatW7wFyP{gCa%u~3lZs#?kRtk{1Gsv~awQ~ed-E4gfX)+v*1 zedpdEm3*FewZ-_m(Y)B0oiL4r zaZ`?6o8iwg@6~6?3{hyH)yYGgq6GtvX#azJ! zg1mPh-|)M4!FJ{BlhM2OZ#%bJdV$eh-hk;qZ+c^R^T2ve#TGY#kl7dRt}6Z6{4O!` z_w*Oerl~XHR%u?oVP&;nJbljYP~mfTfKgRwc&zftY43NYk4*1u`QBsir~FEH@#Q0x zXBY2}-~Ti&%sl~ecbfp!tCIhlqil&*|}=xvgQ8jZmE8k`tR;bQ= zryW=9ep{{@7{be1^#^%wL&#r_zx6&__2S>~DYlp~>^aAAp`-0xVUBwKi+NYhKGD4!AN?E{Z8Nb( z8z^-?xXyFfz@&+B0VgPS?H|wE^?SSfdzCGv7W;O5nf{8^-@IE!rMt}f?S4gP%&eaI<&NU(rA-z6mV1`h z7uzpayR3irBH!`2SyvxUJpOh^nId*9VP<8{8`cenp%;mkd6{66n^AIJYmeE#=V z>wUtN7d%teU#*<;h@tRy{e92e|8Lm7g+1M%y<>AQ^Mm?;Q@bnlm}+MHvu6tc=1Bg- d23sD=^Q=$)$Tp+o60opg@O1TaS?83{1OVt`cn$yn literal 0 HcmV?d00001 diff --git a/classdigidoc_1_1XmlConfV5-members.html b/classdigidoc_1_1XmlConfV5-members.html new file mode 100644 index 000000000..499a46099 --- /dev/null +++ b/classdigidoc_1_1XmlConfV5-members.html @@ -0,0 +1,137 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
digidoc::XmlConfV5 Member List
+
+
+ +

This is the complete list of members for digidoc::XmlConfV5, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
certsPath() constdigidoc::Confvirtual
Conf()digidoc::Conf
ConfV2()digidoc::ConfV2
ConfV3()digidoc::ConfV3
ConfV4()digidoc::ConfV4
ConfV5()digidoc::ConfV5
digestUri() const overridedigidoc::XmlConfV5virtual
init(Conf *conf)digidoc::Confstatic
instance()digidoc::XmlConfV5static
libdigidocConf() constdigidoc::Confvirtual
logFile() const overridedigidoc::XmlConfV5virtual
logLevel() const overridedigidoc::XmlConfV5virtual
ocsp(const std::string &issuer) const overridedigidoc::XmlConfV5virtual
OCSPTMProfiles() const overridedigidoc::XmlConfV5virtual
PKCS11Driver() const overridedigidoc::XmlConfV5virtual
PKCS12Cert() const overridedigidoc::XmlConfV5virtual
PKCS12Disable() const overridedigidoc::XmlConfV5virtual
PKCS12Pass() const overridedigidoc::XmlConfV5virtual
proxyForceSSL() const overridedigidoc::XmlConfV5virtual
proxyHost() const overridedigidoc::XmlConfV5virtual
proxyPass() const overridedigidoc::XmlConfV5virtual
proxyPort() const overridedigidoc::XmlConfV5virtual
proxyTunnelSSL() const overridedigidoc::XmlConfV5virtual
proxyUser() const overridedigidoc::XmlConfV5virtual
setPKCS12Cert(const std::string &cert)digidoc::XmlConfV5virtual
setPKCS12Disable(bool disable)digidoc::XmlConfV5virtual
setPKCS12Pass(const std::string &pass)digidoc::XmlConfV5virtual
setProxyHost(const std::string &host)digidoc::XmlConfV5virtual
setProxyPass(const std::string &pass)digidoc::XmlConfV5virtual
setProxyPort(const std::string &port)digidoc::XmlConfV5virtual
setProxyTunnelSSL(bool enable)digidoc::XmlConfV5virtual
setProxyUser(const std::string &user)digidoc::XmlConfV5virtual
setTSLOnlineDigest(bool enable)digidoc::XmlConfV5virtual
setTSLTimeOut(int timeOut)digidoc::XmlConfV5virtual
setTSUrl(const std::string &url)digidoc::XmlConfV5virtual
setVerifyServiceUri(const std::string &url)digidoc::XmlConfV5virtual
signatureDigestUri() const overridedigidoc::XmlConfV5virtual
TSCerts() const overridedigidoc::XmlConfV5virtual
TSLAllowExpired() constdigidoc::Confvirtual
TSLAutoUpdate() const overridedigidoc::XmlConfV5virtual
TSLCache() const overridedigidoc::XmlConfV5virtual
TSLCerts() constdigidoc::Confvirtual
TSLOnlineDigest() const overridedigidoc::XmlConfV5virtual
TSLTimeOut() const overridedigidoc::XmlConfV5virtual
TSLUrl() constdigidoc::Confvirtual
TSUrl() const overridedigidoc::XmlConfV5virtual
verifyServiceCert() const overridedigidoc::XmlConfV5virtual
verifyServiceCerts() const overridedigidoc::XmlConfV5virtual
verifyServiceUri() const overridedigidoc::XmlConfV5virtual
XmlConfV5(const std::string &path={}, const std::string &schema={})digidoc::XmlConfV5explicit
xsdPath() constdigidoc::Confvirtual
~Conf()digidoc::Confvirtual
~ConfV2() overridedigidoc::ConfV2
~ConfV3() overridedigidoc::ConfV3
~ConfV4() overridedigidoc::ConfV4
~ConfV5() overridedigidoc::ConfV5
~XmlConfV5() overridedigidoc::XmlConfV5
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV5.html b/classdigidoc_1_1XmlConfV5.html new file mode 100644 index 000000000..994bb26d5 --- /dev/null +++ b/classdigidoc_1_1XmlConfV5.html @@ -0,0 +1,1537 @@ + + + + + + + +libdigidocpp: digidoc::XmlConfV5 Class Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+ +
+
digidoc::XmlConfV5 Class Reference
+
+
+ +

Version 5 of XML Configuration class. + More...

+ +

#include <XmlConf.h>

+
+Inheritance diagram for digidoc::XmlConfV5:
+
+
+ + +digidoc::ConfV5 +digidoc::ConfV4 +digidoc::ConfV3 +digidoc::ConfV2 +digidoc::Conf + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 XmlConfV5 (const std::string &path={}, const std::string &schema={})
 
 ~XmlConfV5 () override
 
int logLevel () const override
 
std::string logFile () const override
 
std::string PKCS11Driver () const override
 
std::string proxyHost () const override
 
std::string proxyPort () const override
 
std::string proxyUser () const override
 
std::string proxyPass () const override
 
bool proxyForceSSL () const override
 
bool proxyTunnelSSL () const override
 
std::string digestUri () const override
 
std::string signatureDigestUri () const override
 
std::string ocsp (const std::string &issuer) const override
 
std::set< std::string > OCSPTMProfiles () const override
 
std::vector< X509CertTSCerts () const override
 
std::string TSUrl () const override
 
X509Cert verifyServiceCert () const override
 
std::vector< X509CertverifyServiceCerts () const override
 
std::string verifyServiceUri () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Cert () const override
 
DIGIDOCPP_DEPRECATED std::string PKCS12Pass () const override
 
DIGIDOCPP_DEPRECATED bool PKCS12Disable () const override
 
bool TSLAutoUpdate () const override
 
std::string TSLCache () const override
 
bool TSLOnlineDigest () const override
 
int TSLTimeOut () const override
 
virtual void setProxyHost (const std::string &host)
 
virtual void setProxyPort (const std::string &port)
 
virtual void setProxyUser (const std::string &user)
 
virtual void setProxyPass (const std::string &pass)
 
virtual void setProxyTunnelSSL (bool enable)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Cert (const std::string &cert)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Pass (const std::string &pass)
 
virtual DIGIDOCPP_DEPRECATED void setPKCS12Disable (bool disable)
 
virtual void setTSLOnlineDigest (bool enable)
 
virtual void setTSLTimeOut (int timeOut)
 
virtual void setTSUrl (const std::string &url)
 
virtual void setVerifyServiceUri (const std::string &url)
 
- Public Member Functions inherited from digidoc::ConfV5
 ConfV5 ()
 
 ~ConfV5 () override
 
- Public Member Functions inherited from digidoc::ConfV4
 ConfV4 ()
 
 ~ConfV4 () override
 
- Public Member Functions inherited from digidoc::ConfV3
 ConfV3 ()
 
 ~ConfV3 () override
 
- Public Member Functions inherited from digidoc::ConfV2
 ConfV2 ()
 
 ~ConfV2 () override
 
- Public Member Functions inherited from digidoc::Conf
 Conf ()
 
virtual ~Conf ()
 
virtual DIGIDOCPP_DEPRECATED std::string libdigidocConf () const
 
virtual DIGIDOCPP_DEPRECATED std::string certsPath () const
 
virtual std::string xsdPath () const
 
virtual bool TSLAllowExpired () const
 
virtual std::vector< X509CertTSLCerts () const
 
virtual std::string TSLUrl () const
 
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static XmlConfV5instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV5
static ConfV5instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV4
static ConfV4instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV3
static ConfV3instance ()
 
- Static Public Member Functions inherited from digidoc::ConfV2
static ConfV2instance ()
 
- Static Public Member Functions inherited from digidoc::Conf
static void init (Conf *conf)
 
static Confinstance ()
 
+

Detailed Description

+

Version 5 of XML Configuration class.

+
See also
digidoc::ConfV5
+

Constructor & Destructor Documentation

+ +

◆ XmlConfV5()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
XmlConfV5::XmlConfV5 (const std::string & path = {},
const std::string & schema = {} 
)
+
+explicit
+
+

Initialize xml conf from path

+ +
+
+ +

◆ ~XmlConfV5()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV5::~XmlConfV5 ()
+
+overridedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ digestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::digestUri () const
+
+overridevirtual
+
+

Return default digest type as URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ instance()

+ +
+
+ + + + + +
+ + + + + + + +
XmlConfV5 * XmlConfV5::instance ()
+
+static
+
+ +

+

Return global config instance object

+ +

References digidoc::Conf::instance().

+ +
+
+ +

◆ logFile()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::logFile () const
+
+overridevirtual
+
+

Gets log file location. Default log goes to standard out stream

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ logLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV5::logLevel () const
+
+overridevirtual
+
+

Returns log level. 0 = Error 1 = Warn 2 = Info 3 = Debug

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ ocsp()

+ +
+
+ + + + + +
+ + + + + + + + +
string XmlConfV5::ocsp (const std::string & issuer) const
+
+overridevirtual
+
+

Return OCSP request URL

Parameters
+ + +
issuerOCSP issuer.
+
+
+ +

Reimplemented from digidoc::Conf.

+ +

References digidoc::Conf::ocsp().

+ +
+
+ +

◆ OCSPTMProfiles()

+ +
+
+ + + + + +
+ + + + + + + +
set< string > XmlConfV5::OCSPTMProfiles () const
+
+overridevirtual
+
+

Gets OCSP TM Profile OID-s

+

OCSP responder certificate policies that are used to identify if OCSP response is given with TM profile

+ +

Reimplemented from digidoc::ConfV3.

+ +

References digidoc::ConfV3::OCSPTMProfiles().

+ +
+
+ +

◆ PKCS11Driver()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::PKCS11Driver () const
+
+overridevirtual
+
+

Returns PKCS11 driver file path

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV5::PKCS12Cert () const
+
+overridevirtual
+
+

Gets PKCS12 certificate file location.

+

Used for signing OCSP request

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED bool digidoc::XmlConfV5::PKCS12Disable () const
+
+overridevirtual
+
+

Gets PKCS12 usage.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ PKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + +
DIGIDOCPP_DEPRECATED std::string digidoc::XmlConfV5::PKCS12Pass () const
+
+overridevirtual
+
+

Gets PKCS12 password.

See also
digidoc::Conf::PKCS12Cert
+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyForceSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV5::proxyForceSSL () const
+
+overridevirtual
+
+

Redirect SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyHost()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::proxyHost () const
+
+overridevirtual
+
+

Gets proxy host address.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPass()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::proxyPass () const
+
+overridevirtual
+
+

Gets proxy login password.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyPort()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::proxyPort () const
+
+overridevirtual
+
+

Gets proxy port number.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV5::proxyTunnelSSL () const
+
+overridevirtual
+
+

Tunnel SSL traffic over proxy server Default: false

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ proxyUser()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::proxyUser () const
+
+overridevirtual
+
+

Gets proxy user name.

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ setPKCS12Cert()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setPKCS12Cert (const std::string & cert)
+
+virtual
+
+ +

+

Sets a PKCS#12 certficate path. Also adds or replaces PKCS#12 certificate path in the user configuration file. By default the PKCS#12 certificate file should be located at default path, given by getUserConfDir() function.

+
Parameters
+ + +
certPKCS#12 certificate location path.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate path into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Disable()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setPKCS12Disable (bool disable)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate usage. Also adds or replaces PKCS#12 certificate usage in the user configuration file.

+
Parameters
+ + +
disablePKCS#12 certificate usage.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate usage into a user configuration file fails.
+
+
+ +
+
+ +

◆ setPKCS12Pass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setPKCS12Pass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a PKCS#12 certificate password. Also adds or replaces PKCS#12 certificate password in the user configuration file.

+
Parameters
+ + +
passPKCS#12 certificate password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a PKCS#12 certificate password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyHost()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setProxyHost (const std::string & host)
+
+virtual
+
+ +

+

Sets a Proxy host address. Also adds or replaces proxy host data in the user configuration file.

+
Parameters
+ + +
hostproxy host address.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy host address into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPass()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setProxyPass (const std::string & pass)
+
+virtual
+
+ +

+

Sets a Proxy password. Also adds or replaces proxy password in the user configuration file.

+
Parameters
+ + +
passproxy password.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy password into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyPort()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setProxyPort (const std::string & port)
+
+virtual
+
+ +

+

Sets a Proxy port number. Also adds or replaces proxy port data in the user configuration file.

+
Parameters
+ + +
portproxy port number.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy port number into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyTunnelSSL()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setProxyTunnelSSL (bool enable)
+
+virtual
+
+ +

+

Enables SSL proxy connections

Exceptions
+ + +
Exceptionexception is thrown if saving into a user configuration file fails.
+
+
+ +
+
+ +

◆ setProxyUser()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setProxyUser (const std::string & user)
+
+virtual
+
+ +

+

Sets a Proxy user name. Also adds or replaces proxy user name in the user configuration file.

+
Parameters
+ + +
userproxy user name.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a proxy user name into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setTSLOnlineDigest (bool enable)
+
+virtual
+
+ +

+

Enables/Disables online digest check

Exceptions
+ + +
Exceptionexception is thrown if saving a TSL online digest into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setTSLTimeOut (int timeOut)
+
+virtual
+
+ +

+

Sets TSL connection timeout

Parameters
+ + +
timeOutTime out in seconds
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TSL timeout into a user configuration file fails.
+
+
+ +
+
+ +

◆ setTSUrl()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setTSUrl (const std::string & url)
+
+virtual
+
+ +

+

Sets a TSA service URL. Also adds or replaces TSA service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect TSA service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a TS service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ setVerifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + + +
void digidoc::XmlConfV5::setVerifyServiceUri (const std::string & url)
+
+virtual
+
+ +

+

Sets a Verify service URL. Also adds or replaces Verify service URL in the user configuration file.

+
Parameters
+ + +
urlTarget URL to connect Verify service.
+
+
+
Exceptions
+ + +
Exceptionexception is thrown if saving a Verify service URL into a user configuration file fails.
+
+
+ +
+
+ +

◆ signatureDigestUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::signatureDigestUri () const
+
+overridevirtual
+
+

Gets signature digest URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > XmlConfV5::TSCerts () const
+
+overridevirtual
+
+

Gets verify service Certs

+ +

Reimplemented from digidoc::ConfV5.

+ +

References digidoc::ConfV5::TSCerts().

+ +
+
+ +

◆ TSLAutoUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV5::TSLAutoUpdate () const
+
+overridevirtual
+
+

Download new TSL list when it is expired or invalid

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLCache()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::TSLCache () const
+
+overridevirtual
+
+

TSL cache path in local file system

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLOnlineDigest()

+ +
+
+ + + + + +
+ + + + + + + +
bool digidoc::XmlConfV5::TSLOnlineDigest () const
+
+overridevirtual
+
+

Compare local TSL digest with digest published online to check for newer version

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSLTimeOut()

+ +
+
+ + + + + +
+ + + + + + + +
int digidoc::XmlConfV5::TSLTimeOut () const
+
+overridevirtual
+
+

Gets TSL downloading connection's current timeout value

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ TSUrl()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::TSUrl () const
+
+overridevirtual
+
+

Returns default time-stamp server URL

+ +

Reimplemented from digidoc::Conf.

+ +
+
+ +

◆ verifyServiceCert()

+ +
+
+ + + + + +
+ + + + + + + +
X509Cert XmlConfV5::verifyServiceCert () const
+
+overridevirtual
+
+

Gets verify service Cert

+ +

Reimplemented from digidoc::ConfV2.

+ +

References digidoc::ConfV2::verifyServiceCert().

+ +
+
+ +

◆ verifyServiceCerts()

+ +
+
+ + + + + +
+ + + + + + + +
vector< X509Cert > XmlConfV5::verifyServiceCerts () const
+
+overridevirtual
+
+

Gets verify service Certs

+ +

Reimplemented from digidoc::ConfV4.

+ +

References digidoc::ConfV4::verifyServiceCerts().

+ +
+
+ +

◆ verifyServiceUri()

+ +
+
+ + + + + +
+ + + + + + + +
std::string digidoc::XmlConfV5::verifyServiceUri () const
+
+overridevirtual
+
+

Gets verify service URI

+ +

Reimplemented from digidoc::Conf.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • XmlConf.h
  • +
  • XmlConf.cpp
  • +
+
+
+ + + + diff --git a/classdigidoc_1_1XmlConfV5.js b/classdigidoc_1_1XmlConfV5.js new file mode 100644 index 000000000..3aaf45273 --- /dev/null +++ b/classdigidoc_1_1XmlConfV5.js @@ -0,0 +1,43 @@ +var classdigidoc_1_1XmlConfV5 = +[ + [ "XmlConfV5", "classdigidoc_1_1XmlConfV5.html#af08e5b16edd7bbe2640fbdd7d056a194", null ], + [ "~XmlConfV5", "classdigidoc_1_1XmlConfV5.html#a5b3edab36aa9f295ff362e16d9669444", null ], + [ "digestUri", "classdigidoc_1_1XmlConfV5.html#aafafbb784bb45ef04214152d33af55e6", null ], + [ "instance", "classdigidoc_1_1XmlConfV5.html#ae6bf6a4e07b8b855d8f335c82c53f25a", null ], + [ "logFile", "classdigidoc_1_1XmlConfV5.html#aad11184d989e9bf222842bb05d5f7154", null ], + [ "logLevel", "classdigidoc_1_1XmlConfV5.html#a884dbe31a6a8cadfc658bbbdd588ef07", null ], + [ "ocsp", "classdigidoc_1_1XmlConfV5.html#a76b0ad7609f34f4d37e0dc8bab20822c", null ], + [ "OCSPTMProfiles", "classdigidoc_1_1XmlConfV5.html#a705a851b26a94fcdc1b347bafa0971e8", null ], + [ "PKCS11Driver", "classdigidoc_1_1XmlConfV5.html#a12fbac2e17ce7656727d16e75e66d90e", null ], + [ "PKCS12Cert", "classdigidoc_1_1XmlConfV5.html#a634be1615f4e93d29a15a1c74c390760", null ], + [ "PKCS12Disable", "classdigidoc_1_1XmlConfV5.html#a860132a995f2bbb6d85ec123b40b379f", null ], + [ "PKCS12Pass", "classdigidoc_1_1XmlConfV5.html#a22b2e0ccc4e47cb9de04471bd3cc5cae", null ], + [ "proxyForceSSL", "classdigidoc_1_1XmlConfV5.html#a1e0a97199c16ecd5ff6238aca12843ee", null ], + [ "proxyHost", "classdigidoc_1_1XmlConfV5.html#af71ce4a1d254d08335360a21f40c3d34", null ], + [ "proxyPass", "classdigidoc_1_1XmlConfV5.html#aca012df63c822d169656032b8ff13a8e", null ], + [ "proxyPort", "classdigidoc_1_1XmlConfV5.html#a4ebb48559e224115a995bc2f837207fb", null ], + [ "proxyTunnelSSL", "classdigidoc_1_1XmlConfV5.html#a48350ddf0cb0364606df972205e25cbd", null ], + [ "proxyUser", "classdigidoc_1_1XmlConfV5.html#a0b48afb1c31769578af0feddcf3aa5b0", null ], + [ "setPKCS12Cert", "classdigidoc_1_1XmlConfV5.html#a4cb2de61e05b111d743842e16dbc8937", null ], + [ "setPKCS12Disable", "classdigidoc_1_1XmlConfV5.html#ae448ae3e4232c0e2705795508d51045a", null ], + [ "setPKCS12Pass", "classdigidoc_1_1XmlConfV5.html#a02a98862d4f57a20753925b079180437", null ], + [ "setProxyHost", "classdigidoc_1_1XmlConfV5.html#ab861f0160ef045f9ec58c989fa0e2ac4", null ], + [ "setProxyPass", "classdigidoc_1_1XmlConfV5.html#a9c9b8bc52ef36e53aac81d08d4f41f51", null ], + [ "setProxyPort", "classdigidoc_1_1XmlConfV5.html#ac7dcded78f1b40e40283698f11e4e12c", null ], + [ "setProxyTunnelSSL", "classdigidoc_1_1XmlConfV5.html#a8f459f4751062c2b14ad754e1403f6ba", null ], + [ "setProxyUser", "classdigidoc_1_1XmlConfV5.html#ac6bc8eb43b04d17ad718c5d5c67e5fdf", null ], + [ "setTSLOnlineDigest", "classdigidoc_1_1XmlConfV5.html#aa3035f2e3fb54dede5bffc2010fb8382", null ], + [ "setTSLTimeOut", "classdigidoc_1_1XmlConfV5.html#ab4cb170161ebb2c99d9082fac035f19b", null ], + [ "setTSUrl", "classdigidoc_1_1XmlConfV5.html#a304ee80dd385c9420610a40a5aec4cb0", null ], + [ "setVerifyServiceUri", "classdigidoc_1_1XmlConfV5.html#a18ef9df3df9f6297738470a314cfb0a2", null ], + [ "signatureDigestUri", "classdigidoc_1_1XmlConfV5.html#a157c251c1a1ca94a9c4fe0b5fb7c1b87", null ], + [ "TSCerts", "classdigidoc_1_1XmlConfV5.html#af8368cb6b6ec24aa2e1d9bc363d53bf3", null ], + [ "TSLAutoUpdate", "classdigidoc_1_1XmlConfV5.html#ac8c446bb60c2d8d009fb8b4a8076ecc5", null ], + [ "TSLCache", "classdigidoc_1_1XmlConfV5.html#ab8fd31bc3e32a4c6b5c4ba100f47ec15", null ], + [ "TSLOnlineDigest", "classdigidoc_1_1XmlConfV5.html#a69989d66810e9b7302e7db0fa6f1bc4d", null ], + [ "TSLTimeOut", "classdigidoc_1_1XmlConfV5.html#aaf8d6091d5e70183be9b6d1c11f662bf", null ], + [ "TSUrl", "classdigidoc_1_1XmlConfV5.html#af17e6c20030ed56e346792ab656367ed", null ], + [ "verifyServiceCert", "classdigidoc_1_1XmlConfV5.html#af06e9ef3920db4a1d0aae0486cfe281f", null ], + [ "verifyServiceCerts", "classdigidoc_1_1XmlConfV5.html#a8c129dc71df40881109080491c65d73d", null ], + [ "verifyServiceUri", "classdigidoc_1_1XmlConfV5.html#a0d5b59036deb1eac21cb010be792bb52", null ] +]; \ No newline at end of file diff --git a/classdigidoc_1_1XmlConfV5.png b/classdigidoc_1_1XmlConfV5.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8bf0c14290232e5251062d36a140465d11a18f GIT binary patch literal 1448 zcmcJPdsLEV9LHZ*?vNV`Yj)AddDJd*npsRIBHo%QhUJBpM0W9#6dEQXqS7hToHJ(@ zs7X*R5z3rrY6)4E-6pA+I5l3xYnbV4hKA9Qy|wzUKey+c=ls6UInO_z^Z7nc-gaUj z(!$yT003mr)_^d0vH`%%6|n$L!s&SuJXUNEiP&N?ncz4!G0P~t`zxH@@8;%a^E}WN zJ|a@Wh~WTy>D}sXjc@}1bN8SC--tA`N&bs7e|(DqRF$oI&d9Li4%Eyh-U6~!*o=#> zFg|88XOUg@kEn?A3blmsrUlxU@Rm0wptibZMuZ0+V5%jH;@Qr_efPt4_3WSLiuASa zqPa(P-|Pw$<>|_Fbv2;8RZHtgC%f)Yo!CmM;@(INRIO(B-71y21{OpyudD&Rr~LVx zmP}c@AV;ffD##ij=~HWS$FX3tNKcw|0_AVVkrxfCjm(gG7yQImcG=$pH#-oDQ#la* z@YCxM;bsdriu9 zDrH{C{^{wwqd`>W7Gm3dHsLUuZ(0^#E{j~+4$9L~=^G!gM&twtGlT)_^uOSV_T$bK zUH4dR6}O{rkM1FPx3s12uqG4S)H@v@w%)7nhZmPGqmrUZiovw*Y*P=;wwYC}r1Ru6 z#X4^#YvZl_I=nRJ zX9M)dFFY9FulHyuc25Z%k9)<11l2m2E##AILKijirJG&00&$$WR7$RQ;V5w5(M(H> z;oDYL7E)U`H=J(g`V z;3OD~Yg$)O?N|yqof(-@>teK5d0fBp(0%P#7DxV$u2D(XT&q`UGpls_Gdd4cmc0z( zCyCNmwSgOO8dH`e53Nd)xg-eSw{q$7OhbgbB5Wtb|VQnGr{ zeh31+B1YVp$w?kXWv(*3DmHdmqy!i-%nVZ`S_njx5$3)m(eu%~CAO6}sK?5s literal 0 HcmV?d00001 diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..5c894f3da --- /dev/null +++ b/classes.html @@ -0,0 +1,110 @@ + + + + + + + +libdigidocpp: Class Index + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + 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/components.svg b/components.svg new file mode 100644 index 000000000..5efd23e89 --- /dev/null +++ b/components.svg @@ -0,0 +1,249 @@ + + + + + + + + + + + + + PC/SC + + + + + + + + + + + + + + + + + + + + + + + Libdigidocpp + + + + + + + + + + + + + + + + + + + + + + + + CryptoAPI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PKCS#11 + + + + IFD Handler + + + Reader + + + CCID + + + Reader + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Host operating + system & hardware + + + Signing Module + + + C++ Application + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deprecated.html b/deprecated.html new file mode 100644 index 000000000..5e650cb3b --- /dev/null +++ b/deprecated.html @@ -0,0 +1,110 @@ + + + + + + + +libdigidocpp: Deprecated List + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
Deprecated List
+
+
+
+
Class digidoc::Conf
+
Use digidoc::ConfV5
+
Member digidoc::Conf::certsPath () const
+
Unused
+
Member digidoc::Conf::libdigidocConf () const
+
Unused
+
Class digidoc::ConfV2
+
Use digidoc::ConfV5
+
Class digidoc::ConfV3
+
Use digidoc::ConfV5
+
Class digidoc::ConfV4
+
Use digidoc::ConfV5
+
Member digidoc::Container::addDataFile (std::istream *is, const std::string &fileName, const std::string &mediaType)
+
Use digidoc::Container::addDataFile(std::unique_ptr<std::istream> is, const std::string &fileName, const std::string &mediaType)
+
Member digidoc::Container::create (const std::string &path)
+
Use Container::createPtr This method gives ownership of object to caller
+
Member digidoc::Container::open (const std::string &path)
+
Use Container::openPtr
+
Member digidoc::Exception::DDocError
+
Unused
+
Member digidoc::Signature::OCSPNonce () const
+
Use messageImprint()
+
Class digidoc::XmlConf
+
Use digidoc::XmlConfV5
+
Class digidoc::XmlConfV2
+
Use digidoc::XmlConfV5
+
Class digidoc::XmlConfV3
+
Use digidoc::XmlConfV5
+
Class digidoc::XmlConfV4
+
Use digidoc::XmlConfV5
+
+
+
+
+ + + + diff --git a/digidoc_framework.svg b/digidoc_framework.svg new file mode 100644 index 000000000..fd2e0e5ab --- /dev/null +++ b/digidoc_framework.svg @@ -0,0 +1,273 @@ + + + + + + + + + + + + DigiDoc Libraries + (C++, Java) + + + + + + + + MS CryptoAPI + PKCS#11 + PKCS#12 + + + + + + + + MSSP + + + + + + + + + MID/SID Rest Service + + + + + + + + + DigiDoc4 + Client + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OCSP + + + TSL + + + TSA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Application + + + + + + + + + + + + + Application + + + + + + + + + + + + ID-card + + + Mobile-ID + + + + diff --git a/dir_4261af1259721e3e39e0d2dd7354b511.html b/dir_4261af1259721e3e39e0d2dd7354b511.html new file mode 100644 index 000000000..6e4e6c872 --- /dev/null +++ b/dir_4261af1259721e3e39e0d2dd7354b511.html @@ -0,0 +1,102 @@ + + + + + + + +libdigidocpp: crypto Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
crypto Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Files

file  PKCS11Signer.cpp
 
file  PKCS11Signer.h
 
file  PKCS12Signer.cpp
 
file  PKCS12Signer.h
 
file  Signer.cpp
 
file  Signer.h
 
file  WinSigner.cpp
 
file  WinSigner.h
 
file  X509Cert.cpp
 
file  X509Cert.h
 
+
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 000000000..9c76b608b --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,117 @@ + + + + + + + +libdigidocpp: src Directory Reference + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
src Directory Reference
+
+
+ + + + +

+Directories

directory  crypto
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Conf.cpp
 
file  Conf.h
 
file  Container.cpp
 
file  Container.h
 
file  DataFile.cpp
 
file  DataFile.h
 
file  DataFile_p.h
 
file  Exception.cpp
 
file  Exception.h
 
file  Exports.h
 
file  Signature.cpp
 
file  Signature.h
 
file  XmlConf.cpp
 
file  XmlConf.h
 
file  XMLDocument.h
 
+
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..ffbff0224 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +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; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +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 { + border-right: 1px solid #A3B4D7; + 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: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +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; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + 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.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +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 { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @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.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; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + 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; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.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; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + 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; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + 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.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.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; + 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.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @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 { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + 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; + /*width: 100%;*/ +} + +.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; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + 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:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.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:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 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.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +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; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") 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; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,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: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +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; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.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; + 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 div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#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: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + 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: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + 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: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + 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 +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..3174bd7be --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (la9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..7480f71af --- /dev/null +++ b/functions.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..47b88706d --- /dev/null +++ b/functions_b.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..8627dbe35 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,172 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..42b703832 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,121 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+
+ + + + diff --git a/functions_dup.js b/functions_dup.js new file mode 100644 index 000000000..8b2011f60 --- /dev/null +++ b/functions_dup.js @@ -0,0 +1,27 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "x", "functions_x.html", null ], + [ "~", "functions_~.html", null ] +]; \ No newline at end of file diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..7ecc6b04e --- /dev/null +++ b/functions_e.html @@ -0,0 +1,95 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..5e6ed8233 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,87 @@ + + + + + + + +libdigidocpp: Class Members - Enumerations + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
+ + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..f8ffbce25 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,267 @@ + + + + + + + +libdigidocpp: Class Members - Enumerator + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..b40c54f28 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,92 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..33af39075 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- a -

+
+
+ + + + diff --git a/functions_func.js b/functions_func.js new file mode 100644 index 000000000..ce8c5e81d --- /dev/null +++ b/functions_func.js @@ -0,0 +1,26 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "k", "functions_func_k.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "q", "functions_func_q.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "w", "functions_func_w.html", null ], + [ "x", "functions_func_x.html", null ], + [ "~", "functions_func_~.html", null ] +]; \ No newline at end of file diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..f3347dea1 --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- b -

+
+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..1667ef90d --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,139 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- c -

+
+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..f4f13e6a0 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,97 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- d -

+
+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..8dd055936 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,89 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- e -

+
+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..756fd9f18 --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,89 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- f -

+
+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..ad24f150b --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,83 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- h -

+
+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..d73dbb3d2 --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,105 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_k.html b/functions_func_k.html new file mode 100644 index 000000000..bfb0dcd1d --- /dev/null +++ b/functions_func_k.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- k -

+
+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..556304d39 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,99 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..929fbcacb --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,91 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- m -

+
+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 000000000..6cb18304f --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,86 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- n -

+
+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..34469f3ef --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,146 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- o -

+
+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..1a640724e --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,183 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- p -

+
+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..f8cfc14d4 --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- q -

+
+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..377e6042a --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,83 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- r -

+
+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..4859131b4 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,279 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- s -

+
+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..87b1fbea8 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,145 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..e89c157b0 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- u -

+
+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..0bf7e1c65 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,112 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- v -

+
+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..4523231a6 --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,83 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- w -

+
+
+ + + + diff --git a/functions_func_x.html b/functions_func_x.html new file mode 100644 index 000000000..2843823df --- /dev/null +++ b/functions_func_x.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- x -

+
+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..426aaa028 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,140 @@ + + + + + + + +libdigidocpp: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+  + +

- ~ -

+
+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..f2af9ca0a --- /dev/null +++ b/functions_g.html @@ -0,0 +1,80 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..ba3da0b0f --- /dev/null +++ b/functions_h.html @@ -0,0 +1,86 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..bd112710f --- /dev/null +++ b/functions_i.html @@ -0,0 +1,117 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/functions_k.html b/functions_k.html new file mode 100644 index 000000000..6f910579a --- /dev/null +++ b/functions_k.html @@ -0,0 +1,92 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- k -

+
+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..c645f8494 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,99 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..de17ed8b3 --- /dev/null +++ b/functions_m.html @@ -0,0 +1,94 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 000000000..437d51bd1 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,97 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

+
+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..d4da783af --- /dev/null +++ b/functions_o.html @@ -0,0 +1,161 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- o -

+
+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..b779506e2 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,213 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 000000000..67898df2b --- /dev/null +++ b/functions_q.html @@ -0,0 +1,134 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..ce677f666 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,86 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..d565551a0 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,288 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..60ef5e12a --- /dev/null +++ b/functions_t.html @@ -0,0 +1,157 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..870e5aca0 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,99 @@ + + + + + + + +libdigidocpp: Class Members - Typedefs + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..1ff91e972 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,83 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..428835078 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,118 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- v -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..9fc90fadd --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,165 @@ + + + + + + + +libdigidocpp: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..39e2295c6 --- /dev/null +++ b/functions_w.html @@ -0,0 +1,89 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+
+ + + + diff --git a/functions_x.html b/functions_x.html new file mode 100644 index 000000000..bb8e1c4d0 --- /dev/null +++ b/functions_x.html @@ -0,0 +1,101 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- x -

+
+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..01df8acc2 --- /dev/null +++ b/functions_~.html @@ -0,0 +1,140 @@ + + + + + + + +libdigidocpp: Class Members + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..5fe8830e6 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,112 @@ + + + + + + + +libdigidocpp: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cdigidoc::ConfConfiguration class which can reimplemented and virtual methods overloaded
 Cdigidoc::ConfV2Verison 2 of configuration class to add additonial parameters
 Cdigidoc::ConfV3Verison 3 of configuration class to add additonial parameters
 Cdigidoc::ConfV4Verison 4 of configuration class to add additonial parameters
 Cdigidoc::ConfV5Verison 5 of configuration class to add additonial parameters
 Cdigidoc::XmlConfV5Version 5 of XML Configuration class
 Cdigidoc::XmlConfV4Version 4 of XML Configuration class
 Cdigidoc::XmlConfV3Version 3 of XML Configuration class
 Cdigidoc::XmlConfV2Version 2 of XML Configuration class
 Cdigidoc::XmlConfXML Configuration class
 Cdigidoc::ContainerOffers functionality for handling data files and signatures in a container
 Cdigidoc::ContainerOpenCBUsed on container open to provide additional info
 Cdigidoc::DataFileData file wrapper providing methods for handling signed files or files to be signed in Container
 Cdigidoc::ExceptionBase exception class of the digidoc implementation
 Cdigidoc::SignatureSignature interface. Provides interface for handling a signature and the corresponding OCSP response properties
 Cdigidoc::SignerSigner interface. Provides interface for signing documents
 Cdigidoc::PKCS11SignerImplements Signer interface for ID-Cards, which support PKCS#11 protocol
 Cdigidoc::PKCS12SignerImplements Signer interface for PKCS#12 files
 Cdigidoc::WinSignerImplements Signer interface for Windows Crypto backends
 Cdigidoc::unique_xml< typename >
 Cdigidoc::unique_xml< void(T *)>
 Cunique_xml_t
 Cdigidoc::XMLDocument
 Cdigidoc::Signature::Validator
 Cdigidoc::X509CertWrapper for OpenSSL X509 certificate structure
 Cdigidoc::XMLElem< T >
 Cdigidoc::XMLElem< xmlNode >
 Cdigidoc::XMLNode
 Cdigidoc::XMLDocument
 Cdigidoc::XMLNode::iterator
 Cdigidoc::XMLName
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..78c02cff3 --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,43 @@ +var hierarchy = +[ + [ "digidoc::Conf", "classdigidoc_1_1Conf.html", [ + [ "digidoc::ConfV2", "classdigidoc_1_1ConfV2.html", [ + [ "digidoc::ConfV3", "classdigidoc_1_1ConfV3.html", [ + [ "digidoc::ConfV4", "classdigidoc_1_1ConfV4.html", [ + [ "digidoc::ConfV5", "classdigidoc_1_1ConfV5.html", [ + [ "digidoc::XmlConfV5", "classdigidoc_1_1XmlConfV5.html", null ] + ] ], + [ "digidoc::XmlConfV4", "classdigidoc_1_1XmlConfV4.html", null ] + ] ], + [ "digidoc::XmlConfV3", "classdigidoc_1_1XmlConfV3.html", null ] + ] ], + [ "digidoc::XmlConfV2", "classdigidoc_1_1XmlConfV2.html", null ] + ] ], + [ "digidoc::XmlConf", "classdigidoc_1_1XmlConf.html", null ] + ] ], + [ "digidoc::Container", "classdigidoc_1_1Container.html", null ], + [ "digidoc::ContainerOpenCB", "structdigidoc_1_1ContainerOpenCB.html", null ], + [ "digidoc::DataFile", "classdigidoc_1_1DataFile.html", null ], + [ "digidoc::Exception", "classdigidoc_1_1Exception.html", null ], + [ "digidoc::Signature", "classdigidoc_1_1Signature.html", null ], + [ "digidoc::Signer", "classdigidoc_1_1Signer.html", [ + [ "digidoc::PKCS11Signer", "classdigidoc_1_1PKCS11Signer.html", null ], + [ "digidoc::PKCS12Signer", "classdigidoc_1_1PKCS12Signer.html", null ], + [ "digidoc::WinSigner", "classdigidoc_1_1WinSigner.html", null ] + ] ], + [ "digidoc::unique_xml< typename >", "structdigidoc_1_1unique__xml.html", null ], + [ "digidoc::unique_xml< void(T *)>", "structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html", null ], + [ "unique_xml_t", null, [ + [ "digidoc::XMLDocument", "structdigidoc_1_1XMLDocument.html", null ] + ] ], + [ "digidoc::Signature::Validator", "classdigidoc_1_1Signature_1_1Validator.html", null ], + [ "digidoc::X509Cert", "classdigidoc_1_1X509Cert.html", null ], + [ "digidoc::XMLElem< T >", "structdigidoc_1_1XMLElem.html", null ], + [ "digidoc::XMLElem< xmlNode >", "structdigidoc_1_1XMLElem.html", [ + [ "digidoc::XMLNode", "structdigidoc_1_1XMLNode.html", [ + [ "digidoc::XMLDocument", "structdigidoc_1_1XMLDocument.html", null ] + ] ], + [ "digidoc::XMLNode::iterator", "structdigidoc_1_1XMLNode_1_1iterator.html", null ] + ] ], + [ "digidoc::XMLName", "structdigidoc_1_1XMLName.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..29ba392a4 --- /dev/null +++ b/index.html @@ -0,0 +1,81 @@ + + + + + + + +libdigidocpp: Main Page + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
libdigidocpp Documentation
+
+
+

Libdigidocpp is the C++ library offering creating, signing and verification of digitally signed documents, according to XAdES and ASiC standards.

+

Development of the library can be monitored in GitHub environment: https://github.com/open-eid/libdigidocpp

+

Additional documentation about the library can be found from GitHub wiki section, see https://github.com/open-eid/libdigidocpp/wiki

+
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..103c32d79 --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS 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=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,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},x=function(e){return null!=e&&e===e.window},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.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(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($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|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(m.childNodes),m.childNodes),t[m.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&&((e?e.ownerDocument||e:m)!==C&&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&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$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[k]=!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.namespaceURI,n=(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:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),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=k,!C.getElementsByName||!C.getElementsByName(k).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){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),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("!=",$)}),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},D=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===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,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]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[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){A(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=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.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(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(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,ge={option:[1,""],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)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").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 Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.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(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.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?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.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=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.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,k.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)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.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"===k.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"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.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)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.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?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},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;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({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,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),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(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(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),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".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=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),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,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-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")];4>e;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;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),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:++i.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,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,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}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=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/manual.html b/manual.html new file mode 100644 index 000000000..7ca9dd818 --- /dev/null +++ b/manual.html @@ -0,0 +1,1947 @@ + + + + + + + +libdigidocpp: Libdigidocpp Programmer's Guide + + + + + + + + + + + +
+
+ + + + + + + +
+
libdigidocpp +  3.18.0 +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+
+
+
Libdigidocpp Programmer's Guide
+
+
+

Table of Contents

+ +
+

+Introduction

+

Libdigidocpp is the C++ library for creating applications handling digital signatures, their creation and verification. The digitally signed files are created in "DigiDoc format" (with .asice file extension), compliant to XML Advanced Electronic Signatures (XAdES), technical standard published by European Telecommunication Standards Institute (ETSI).

+

Additionally the libdigidocpp library can be used to read and verify the digitally timestamped containers (using .asics file extension) with a single datafile. There is possible to validate ASiC (CAdES), PDF and DDOC formats with SiVa service.

+

Development of the library can be monitored in GitHub environment: https://github.com/open-eid/libdigidocpp.

+

+About DigiDoc

+

Libdigidocpp library forms a part of the wider DigiDoc system framework which offers a full-scale architecture for digital signature and documents, consisting of software libraries (C++ and Java), SiVa service and end-user applications such as DigiDoc4 Client according to the following figure:

+
+ +
+DigiDoc framework
+

It is easy to integrate DigiDoc components into existing applications in order to allow for creation, handling, forwarding and verification of digital signatures. All applications share common digitally signed file formats.

+

+Format of digitally signed file

+

Actively used digitally signed file formats in DigiDoc system are:

+

The following chapters provides an overview of ASiC-E (XAdES) digitally signed file format which is the preferred format for creating signed documents in Libdigidocpp library.

+

+ASiC-E (XAdES) container format

+

The ETSI standard EN 319 162-1 called Associated Signature Containers (ASiC) defines format of container for encapsulation of signed files and signatures with extra information. The container type used in case of ASiC-E documents is Associated Signature Extended form. In the container XAdES EN 319 132-1 (XML Advanced Electronic Signatures) format signatures are used.

+

ASiC-E container is a ZIP file consisting of the following objects:

    +
  • a file named "mimetype", containing only the following value: application/vnd.etsi.asic-e+zip
  • +
  • data files in original format.
  • +
  • META-INF subdirectory, consisting of:
      +
    • manifest.xml – a file containing list of all files in the container. The list does not contain the "mimetype" file and files in META-INF subdirectory.
    • +
    • signatures*.xml – one file for each signature, ‘*’ in the file’s name denotes the sequence number of a signature (counting starts from zero). The signatures*.xml file also incorporates certificates, validity confirmation and meta-data about the signer.
    • +
    +
  • +
+

When ASiC-E container is signed then all files in the container are signed, except of the mimetype file and files in META-INF subdirectory.

+

Original files (which were signed) along with the signature(s), timestamp(s), validation confirmation(s) and certificates are encapsulated within the container. As a result, it is possible to verify signature validity without any additional external information – the verifier should trust the issuer of signer’s certificate, TS Authority and the OCSP responder’s certificate.

+
+ +
+ASiC-E container's contents
+

+Legacy BDOC signature profiles

+

The format of the BDOC 2.1 digitally signed file is based on ETSI XAdES TS 101 903 standard. The XAdES standard defines formats for advanced electronic signatures that remain valid over long periods of time. The ETSI standard TS 103 171 "XAdES Baseline Profile" further profiles the XAdES signature by putting limitations on choices.

+

BDOC 2.1 specification defines two profiles of qualified BDOC signatures: BDOC with time-mark and BDOC with time-stamp. Both of the profiles offer long-term validation possibility by incorporating the necessary validation data in the signature. Both of the profiles are compliant to XAdES LT-Level requirements.

+

+BDOC signature with time-mark

+

The BDOC signature with time-mark is based XAdES-EPES signature (Explicit Policy based Electronic Signature, see XAdES).

+

In order to offer long time validation, it is necessary to obtain proof of validity of the signer’s X.509 digital certificate issued by a certificate authority (CA) at the time of signature creation. In case of BDOC with time-marks (TM profile), the proof is obtained with a single OCSP response that has a specific "nonce" field’s value (i.e. the time-mark).

+

The hash of the created signature (the <SignatureValue> element’s contents) is sent within the OCSP request’s and received back within the response’s "nonce" field. The OCSP request’s and response’s "nonce" field is a DER-encoding of the following ASN.1 data structure:

TBSDocumentDigest ::= SEQUENCE {
+
algorithm AlgorithmIdentifier,
+
digest OCTET STRING
+
}
+

The element digest is a hash value of the binary value of the <SignatureValue> element’s contents, element algorithm determines the used hash algorithm as defined in RFC 5280 clause 4.1.1.2.

+

The time-mark provides proof of the following:

    +
  1. The signature value existed at a certain point of time (issuance time of the OCSP confirmation) – the verifier can calculate the hash of the signature and check its conformance to the OCSP response’s "nonce" field.
  2. +
  3. The signer’s certificate was valid (provided that the OCSP response is positive and does indeed confirm the certificate’s validity) at a certain point of time
  4. +
+

It is important to notice that additional time-stamps are not necessary as time of signing and time of obtaining validity information is indicated in the OCSP response (i.e. the time-mark).

+

NB! The issuance time (producedAt field’s value) of the OCSP response (the time-mark) is regarded as the time of signature creation.

+

To achieve long-time validity of digital signatures, a secure log system is employed within the model. All OCSP responses and changes in certificate validity are securely logged to preserve digital signature validity even after private key compromise of CA or OCSP responder.

+
+ +
+Security model of time-marking mechanism
+

+BDOC signature with time-stamp

+

The BDOC signature with time-stamp is based on XAdES-BES signature (Basic Electronic Signature, see XAdES).

+

In order to offer long time validation, it is necessary to obtaining proof of validity of the signer’s X.509 digital certificate issued by a certificate authority (CA) at the time of signature creation.

+

In case of BDOC with time-stamp (TS profile), the proof is provided as follows:

    +
  1. RFC3161 compliant time-stamp is obtained from a time-stamping service. The hash of the created signature (<SignatureValue> element block) is sent to the time-stamping server. The server’s response contains a time-stamp token with the same hash value that can later be used to validate that the time-stamp was indeed issued for the respective signature. The time-stamp token received from the server is added to the signature providing a proof from a trusted source that the signature value existed at a certain point of time.
  2. +
  3. RFC 6960 compliant OCSP confirmation is obtained from an OCSP service. The OCSP response received from the server is used as a trusted source to confirm that the signer’s certificate was valid at a certain point of time (producedAt field’s value in the OCSP response).
  4. +
  5. The verifier must check the time-stamp token’s and OCSP confirmation’s time difference. If the difference is acceptable then it can stated that the signer’s certificate was valid at the time of signature creation.
  6. +
+

NB! The issuance time (getTime field’s value) of the time-stamp token (received with the response from time-stamping server) is regarded as the time of signature creation.

+

+ASiC-S container format

+

In addition to the Associated Signature Extended form (ASiC-E) the ETSI standard TS 102 918 defines a Simple form which is used for encapsulating a single datafile and signature or time-stamp token associated with it.

+

ASiC-S container is a ZIP file consisting of the following objects:

    +
  • an optional file named "mimetype", containing only the following value: application/vnd.etsi.asic-s+zip
  • +
  • data object (file) in original format.
  • +
  • META-INF subdirectory with one of the following files:
      +
    • signatures.p7s
    • +
    • signatures.xml
    • +
    • timestamp.tst
    • +
    +
  • +
+

The libdigidocpp library supports only containers with time-stamp token (container includes META-INF/timestamp.tst). The time-stamp token is a binary representation of TimeStampToken as defined in RFC 3161. The time-stamp is obtained from a time-stamping service; it is calculated over the entire binary content of the data object. Since both the original file and time-stamp are included in the container, it is possible to verify that the timestamped file existed at a certain point of time.

+

The library can be used only for reading the content of the container and validating that the time-stamp was indeed issued for the data object included in the container.

+

+Release Notes

+
Libdigidocpp library [3.17.0](https://github.com/open-eid/libdigidocpp/releases/tag/v3.17.0) release notes
+
--------------------------------------
+
- Update libraries and platform support (#549, #554, #558, #553)
+
- Improve signature and container compatibility (#543, #545, #559, #561, #552)
+
- Other fixes and optimizations (#542, #550, #557, #544, #551, #555)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.16.0...v3.17.0)
+
+
Libdigidocpp library [3.16.0](https://github.com/open-eid/libdigidocpp/releases/tag/v3.16.0) release notes
+
--------------------------------------
+
- Update libraries and platform support (#530, #477, #534, #535)
+
- Improve signature and container compatibility (#528)
+
- Other fixes and optimizations (#529, #533, #532, #536)
+
- Removed time-mark signature creation support (#527, #539)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.15.0...v3.16.0)
+
+
Libdigidocpp library [3.15.0](https://github.com/open-eid/libdigidocpp/releases/tag/v3.15.0) release notes
+
--------------------------------------
+
- Update libraries and platform support (#525, #522, #515, #503, #511, #514, #516, #517, #523, #505)
+
- Improve code quality and documentation (#526, #521, #524, #520, #501)
+
- Improve signature and container compatibility (#506, #504, #502, #491)
+
- Other fixes and optimizations (#435, #481, #508, #433, #519, #497)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.11...v3.15.0)
+
+
Libdigidocpp library [3.14.12](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.12) release notes
+
--------------------------------------
+
- Fix digidoc-tool file extraction
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.11...v3.14.12)
+
+
Libdigidocpp library [3.14.11](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.11) release notes
+
--------------------------------------
+
- Update libraries (#472, #495, #490, #500)
+
- TSL parsing improvementsa (#492, #495, #499)
+
- Fix memory leaks (#488)
+
- Prefer PSS padding with RSA key (#437)
+
- Code fixes and improvements (#478, #487, #513)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.10...v3.14.11)
+
+
Libdigidocpp library [3.14.10](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.10) release notes
+
--------------------------------------
+
- Trust intermediate certificates in trust store (#476)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.9...v3.14.10)
+
+
Libdigidocpp library [3.14.9](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.9) release notes
+
--------------------------------------
+
- TSL parsing improvements (#475, #451, #465, #464, #463, #439, #443)
+
- Allow validate signatures with TimeStampValidationData (#455)
+
- Build python bindings (#456)
+
- OpenSSL 3.0 support and minimum supported 1.1.1 (#468, #461, #453)
+
- Update documentation (#434)
+
- Fix parameter locking when false is defined (#448)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.8...v3.14.9)
+
+
Libdigidocpp library [3.14.8](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.8) release notes
+
--------------------------------------
+
- Update TSL signer certificates (#438)
+
- Optimize signing process (#404, #417, #430)
+
- Improve SiVa validation (#419, #426, #429)
+
- Remove SK OCSP proxy URL (#427)
+
- Improve signature validation (#383, #420, #432, #444)
+
- Updates for libraries and examples (#423, #424, #381, #425)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.7...v3.14.8)
+
+
Libdigidocpp library [3.14.7](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.7) release notes
+
--------------------------------------
+
- Remove libdigidoc support (#393)
+
- Build macOS arm64 (#392)
+
- Improve compatibility where Xerces-C is configured uint16_t (#391)
+
- Use same length digest as ECC key (#406)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.5...v3.14.7)
+
+
Libdigidocpp library [3.14.6](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.6) release notes
+
--------------------------------------
+
- Update TSL signer certificates
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.5...v3.14.6)
+
+
Libdigidocpp library [3.14.5](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.5) release notes
+
--------------------------------------
+
- Use nlohmann json library (#380)
+
- Add canonicalization algorithm to time-stamp (#369)
+
- Add PSS signature support (#366)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.4...v3.14.5)
+
+
Libdigidocpp library [3.14.4](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.4) release notes
+
--------------------------------------
+
- Use unique_ptr on Container::create/open (#355)
+
- Deprecate std::istream *is method and add std::unique_ptr<std::istream> alternative
+
- Fix encoding on macOS when LC_ALL is defined (#346)
+
- Use 64 bit stat on windows (#349)
+
- Implement SiVa V3 changes (#354)
+
- Documentation updates and code fixes
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.3...v3.14.4)
+
+
Libdigidocpp library [3.14.3](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.3) release notes
+
--------------------------------------
+
- Change SiVa URL (#335)
+
- Split user-agent and application name handling (#333)
+
- Update OpenSSL 1.1.1g and Xerces-C 3.2.3 (#347)
+
- Workaround OpenSSL 1.1.1f issues (#348)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.2...v3.14.3)
+
+
Libdigidocpp library [3.14.2](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.2) release notes
+
--------------------------------------
+
- Check that OCSP producedAt is later than TimeStamp (#324)
+
- Update documentation (#326)
+
- Other code and build cleanups
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.1...v3.14.2)
+
+
Libdigidocpp library [3.14.1](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.1) release notes
+
--------------------------------------
+
- Fix LGTM and Coverity warnings and errors
+
- Add TSUrl parameter to digidoc-tool (#293)
+
- Update OpenSSL to 1.1.1
+
- Add stricter validation rules (#317, #295)
+
- SiVa V3 compatibility
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.14.0...v3.14.1)
+
+
Libdigidocpp library [3.14.0](https://github.com/open-eid/libdigidocpp/releases/tag/v3.14.0) release notes
+
--------------------------------------
+
- Update LOTL URL (#304)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.9...v3.14.0)
+
+
Libdigidocpp library [3.13.9](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.9) release notes
+
--------------------------------------
+
- Update dependencies (#285, #275, #274, #268, #266, #265, #258)
+
- Optimize TSL loading and SiVa request (#271, #252, #280)
+
- Update TSL trust certificates (#287)
+
- Improve C# and java bindings (#282, #278, #272, #270)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.8...v3.13.9)
+
+
Libdigidocpp library [3.13.8](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.8) release notes
+
--------------------------------------
+
- Use ETag instead Last-Modified to verify cached file (#238)
+
- Fix signature verify with OpenSSL 1.1 (#240)
+
- Check OCSP TM OID (#247)
+
- Handle TSA error code 429 and cleanup some code (#250)
+
- Upload artifacts to AWS (#253)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.7...v3.13.8)
+
+
Libdigidocpp library [3.13.7](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.7) release notes
+
--------------------------------------
+
- Remove compiler warnings
+
- Change SiVa service URL to https://siva.eesti.ee/V2/validate
+
- Update Xml-Security-C 2.0.1 (#224), OpenSSL 1.0.2p (#222)
+
- Fix crashes #223, #228, #221 and memory leaks #224
+
- Code cleanups and warning fixes
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.6...v3.13.7)
+
+
Libdigidocpp library [3.13.6](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.6) release notes
+
--------------------------------------
+
- Add new OCSP access certificate and use when old is expired (#205)
+
- Build java bindings on desktop platforms (#204)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.5...v3.13.6)
+
+
Libdigidocpp library [3.13.5](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.5) release notes
+
--------------------------------------
+
- Add TSL cert tl-mp5 and generate headers dynamically (#174)
+
- Use case sensitive zip file compare (#175)
+
- Android build improvements (#179, #180)
+
- SiVa service validation improvements (#185, #184)
+
- Update Xerces-C to 3.2.1 (#187)
+
- Optimize TSL loading (#192)
+
- PDF Experimental backend (#57)
+
- Build fixes and improvements
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.3...v3.13.5)
+
+
Libdigidocpp library [3.13.4](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.4) release notes
+
--------------------------------------
+
- Add TSL cert tl-mp5 and generate headers dynamically (#174)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.3...v3.13.4)
+
+
Libdigidocpp library [3.13.3](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.3) release notes
+
--------------------------------------
+
- SiVa V2 support (#166)
+
- Android build fixes (#167, #164)
+
- Fix loading unsigned TM signatures (#161)
+
- Don't terminate TSL parsing when TakenOvertByType extension is found (#160)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.2...v3.13.3)
+
+
Libdigidocpp library [3.13.2](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.2) release notes
+
--------------------------------------
+
- Implement ECDSA token support (#152)
+
- Fix issuer name with UTF-8 characters (#146)
+
- Check mimetype format (#150)
+
- Update xerces-c to 3.2.0 (#149)
+
- Take OCSP URL from AIA extension (#138)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.1...v3.13.2)
+
+
+
+
Libdigidocpp library [3.13.1](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.1) release notes
+
--------------------------------------
+
- Restore compatibility with jdigidoc 3.11
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.13.0...v3.13.1)
+
+
+
+
Libdigidocpp library [3.13.0](https://github.com/open-eid/libdigidocpp/releases/tag/v3.13.0) release notes
+
--------------------------------------
+
- Relax validation of BDOC to accept sub-elements of SignatureProductionPlace in any order
+
- Speed up signing large files by handling them as file stream instead of in-memory
+
- Improved compatability with Latvian/Lithuanian ASiC-E documents
+
- XAdES EN support
+
- Better handling of malicious zip files
+
- Added ASiC-S validation support
+
- Improve TSL parsing
+
- Improve compatibilty with EIDAS
+
- Disable External Entities parsing
+
- Use SiVa service for parsing PDF and DDoc (on platforms where libdigidoc backend is missing)
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.12.2...v3.13.0)
+
+
+
+
Libdigidocpp library [3.12.3](https://github.com/open-eid/libdigidocpp/releases/tag/v3.12.3) release notes
+
--------------------------------------------
+
- Verify signing certificate QCSD OID-s
+
+
[Full Changelog](https://github.com/open-eid/libdigidocpp/compare/v3.12.2...v3.12.3)
+
+
+
+
Libdigidocpp library 3.12.2 release notes
+
--------------------------------------
+
Changes compared to ver 3.12.1
+
- Fix issues found by coverity
+
- digidoc-tool improvements
+
- API option to verify PDF validator service SSL certificate
+
- Added new TSL signing certificates
+
+
+
+
Libdigidocpp library 3.12.1 release notes
+
--------------------------------------
+
Changes compared to ver 3.12.0
+
- Added Container::prepareWebSignature for C# bindings
+
- Documentation updates
+
- Fix crash parsing References without ID attribute
+
- Handle TSL v5 service status parameters
+
+
+
+
Libdigidocpp library 3.12.0 release notes
+
--------------------------------------
+
Changes compared to ver 3.11.1
+
+
- Fix download TSL-s over proxy in case of HTTPS connections
+
- Behaviour change, proxy tunnel SSL option is now default on
+
- Export PKCS12Signer class
+
- Update C# bindings
+
- Find OCSP certificate from TSL list
+
- On loading TSL lists, verify HTTP result is 200
+
- Major API changes, SO version increased to 1. Applications need to adopt new changes and recompile applications.
+
- Added support for signing in web browser
+
- Example projects for iOS and Android
+
- Disable SHA1 support on signature creation
+
- OCSP nonce compatibility with other digest info headers
+
+
List API changes https://github.com/open-eid/libdigidocpp/wiki/API-changes-(v3.12)
+
List of known issues: https://github.com/open-eid/libdigidocpp/wiki/Known-issues
+
+
+
+
Libdigidocpp library 3.11.1 release notes
+
--------------------------------------
+
Changes compared to ver 3.11.0
+
+
- Verify HTTP result before processing TSL lists
+
- Include cdigidoc.exe
+
+
List of known issues: https://github.com/open-eid/libdigidocpp/wiki/Known-issues
+
+
+
+
Libdigidocpp library 3.11.0 release notes
+
--------------------------------------
+
Changes compared to ver 3.10.3
+
+
- Improved ECDSA signature size calculation
+
- Optimized HTTP download speed (e.g. when updating TSL lists) by compressing the traffic (using gzip Content-Encoding)
+
- Added support for validating BDOC 2.1 time-stamp signatures with archive time-stamps
+
- Added option to specify different digest algorithm for the signature value than the default algorithm used in case of other digest values in the signature.
+
- Added API methods Signer::setMethod(), Signer::method(), XmlConfV4::signatureDigestUri()
+
- Added configuration parameters signer.digestUri and signer.signatureDigestUri
+
- Added parameter -sigsha(1,224,256,384,512) to digidoc-tool utility program
+
- Improved OCSPserver access certificate usage, relative pkcs12.cert configuration parameter value is now resolved to the library's installation path, instead of current working directory
+
- Added option to download TSL-s over proxy in case of HTTPS connections
+
- Added API methods XmlConfV4::proxyForceSSL(), XmlConfV4::proxyTunnelSSL()
+
- Added configuration file parameters forceSSL and tunnelSSL
+
- Fixed OCSP certificate verification, the verification is now done based on the OCSP poducedAt field's time.
+
+
+
+
Libdigidocpp library 3.10.3 release notes
+
--------------------------------------
+
Changes compared to ver 3.10.0
+
+
- Updated experimental .NET C# wrapper swig configuration file to recent API
+
- Included C# wrapper files in Windows installer package
+
- Filter out CA certificates in PKCS11Signer implementation to support Finland ID-card signing in digidoc-tool
+
- Improved signature validation, it is now checked that at least one data file is signed
+
- Disabled OCSP time slot check when requesting OCSP confirmation, the local computer time difference compared to OCSP server time is not checked.
+
+
+
+
Libdigidocpp library 3.10.0 release notes
+
--------------------------------------
+
Changes compared to ver 3.9
+
+
- Changed the default BDOC signature profile to BDOC-TS (ASiC-E LT signature with time-stamp) for new signatures. To create a BDOC-TM (LT_TM, i.e. time-mark) signature, specify the "time-mark" profile value in Container::sign(Signer *signer, const string &profile) method call.
+
- Fixed time zone usage when validating signer certificate validity period's starting time. Previously, "Not yet valid" error message was displayed even if the certificate was actually already valid.
+
- Improved BDOC signatures*.xml file's XML structure validation. Transforms XML element is now allowed to enhance interoperability.
+
- Improved TSL functionality
+
- In case of BDOC format, checking the trustworthiness of trust services (CA, OCSP, time-stamping services) is now possible only by using TSL lists. Previously used certificate store functionality is no longer supported.
+
- Removed country-specific filtering of the national TSLs that are referenced in the European Commission's central TSL list.
+
- Added possibility to use multiple parallel European Commission's TSL signing certificates to enable transition to a new certificate, if needed.
+
- Added checking of the TSL's officially published SHA-256 digest value online to determine if a newer version of the TSL is available.
+
- Added configuration parameter "tsl.onlineDigest" that enables to disable the TSL online SHA-256 digest check.
+
- Removed configuration file parameters "tsl.url" and "tsl.cert". The respective values can be set directly from the library's API.
+
- Added TSL downloading timeout, the value is set to 10 seconds for each TSL. Added configuration parameter "tsl.timeOut" that can be used to configure the timeout value.
+
- Improved TSL loading when proxy is used, proxy settings are ignored in case of HTTPS connections.
+
- Changed the XmlConf class to deprecated, use XmlConfV2 instead.
+
- Changed the OCSP responder URL for EID-SK 2011 certificates, http://ocsp.sk.ee is now used.
+
- Fixed error message text that appears when data file's mime-type in BDOC manifest.xml does not conform with mime-type value in signatures*.xml file. Previously, the displayed mime-type values were interchanged between the signatures*.xml and manifest.xml files.
+
- The library's release notes is now also copied to the library's documentation: http://open-eid.github.io/libdigidocpp/manual.html#releasenotes
+
- Development of the software can now be monitored in GitHub environment: https://github.com/open-eid/libdigidocpp
+
+
+
+
Libdigidocpp library 3.9 release notes
+
--------------------------------------
+
Changes compared to ver 3.8
+
+
- Added support for creating and validating BDOC signatures with time-stamps (BDOC-TS profile).
+
- By default, there is no time-stamping service support configured.
+
- Added new parameter "ts.url" to digidocpp.conf configuration file that specifies the time-stamping service used during signature creation.
+
- Added support for "time-stamp" profile value for digidoc::Container::sign(Signer *signer, const std::string &profile) method when creating BDOC-TS signature via API.
+
- Added time-stamp (TS) profile support for digidoc-tool utility program's "sign" and "create" commands. TS profile can be set with "--profile=TS" parameter.
+
- The signature creation time of BDOC-TS signature is the time-stamp's creation time (in case of a signature with time-stamp, the OCSP validity confirmation's creation time is the signing time).
+
- Added validation check for difference between OCSP validity confirmation's production time and time-stamp's production time. An exception is thrown if the OCSP confirmation's time is earlier than time-stamp's time. If the OCSP confirmation's time is later than time-stamp's time by more than 15 minutes then a warning is returned. If the difference is more than 24 hours then exception is thrown.
+
- Added support for using TSL (Trusted Service List) list as trust anchor when checking certificates' trustworthiness during signature creation and validation.
+
- By default, European Commission TSL list is used (https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml) as source for finding country-specific TSL lists. Finnish, Estonian, Latvian and Lithuanian country-specific TSL lists are used by default.
+
- Added TSL usage configuration possibilities to digidocpp.conf file. Use "tsl.autoupdate", "tsl.cache", "tsl.cert" and "tsl.url" configuration parameters to change the default TSL settings.
+
- Added command "tsl" to digidoc-tool utility program, the command prints out TSL diagnostics and validates the list.
+
- Added possibility to disable all TSL functionality in the library by setting CMake USE_TSL parameter to "false" when building the library.
+
- Added class XmlConfV2 that should be used instead of XmlConf class if it is needed to configure time-stamp and TSL related configuration properties.
+
- Added Xalan library for processing TSL files.
+
- Added support for adding OCSP confirmation to signature if the signer's certificate is issued by "VRK CA for Qualified Certificates - G2" or "VRK Gov. CA for Citizen Qualified Certificates - G2".
+
- Improved BDOC document's validation, it is now checked that the data file mime-type value in manifest.xml file and the respective value in signatures*.xml file in <DataObjectFormat><MimeType> element are the same.
+
- Added "--mime=" parameter to digidoc-tool utility program's "create" command. The parameter can be used along with "--file=" parameter to set the mime-type value of a data file. If not set then the default value "application/octet-stream" is used.
+
- Improved BDOC document's validation, added check for weak hash algorithm (SHA-1) usage in case of ECDSA signatures.
+
- Improved BDOC signatures*.xml file's XML structure validation. It is now additionally checked that unsupported elements CounterSignature, CompleteCertificateRefs, CompleteRevocationRefs, AttributeCertificateRefs, AttributeRevocationRefs, SigAndRefsTimeStamp, RefsOnlyTimeStamp, AttrAuthoritiesCertValues, AttributeRevocationValues, CommitmentTypeIndicationType, AllDataObjectsTimeStamp, IndividualDataObjectsTimeStampType would not exist in the file.
+
- Improved processing of special characters in URI attribute values according to RFC3986. Special characters in URI are percent-encoded, except of unreserved characters and delimiters. Both percent-encoded and non-percent-encoded characters are supported during signature's validation. Note that as a result, the files that contain special characters in URI values and have been created with v3.9 might not be compatible with v3.8 of the library.
+
- Fixed problem that caused erroneous signatures if the data file's name contained colon character.
+
- Fixed digidoc-tool utility program "extract" command's "--extractAll" parameter functionality. Now, if the parameter is present but there is no extraction directory specified then the files are extracted to the working directory.
+
- Fixed digidoc-tool utility program's error that caused the program to exit unexpectedly when trying to create or sign a DDOC file.
+
- Changed Libdigidoc wrapper to fix error which occurred when parsing DDOC document's data file name that contains some specific special characters. Previously, the special characters were erroneously displayed in escaped form.
+
- Fixed problem in Libdigidoc wrapper when calculating data file's size in the course of parsing a DDOC file. Previously, a wrong data file size was returned occasionally.
+
- Added XAdESv141.xsd schema support for implementing BDOC archive time-stamp profile in the future.
+
- Started using libc++ library instead of libstdc++ on OSX platform. The libc++ provides full c++11 support.
+
- All Libdigidocpp documentation is now available in HTML format (see /documentation/html/index.html in the base directory). Updated the existing HTML-based API documentation, transformed the contents of "Libdigidocpp Programmer's Guide" PDF/Word document to HTML format. Removed the previously used PDF/Word documents.
+
- Used coverity.com static analysis tool to find source code defects and vulnerabilities.
+
+
Known issues:
+
- Version 3.8 of the library cannot open BDOC documents that are created with version 3.9 or higher and contain special characters in the signed data file's name due to changes in special character percent-encoding method.
+
+
+
+
Libdigidocpp library 3.8 release notes
+
--------------------------------------
+
+
+
3.8 is first public release of libdigidocpp as library. API is changed and not compatible compared to 3.7.1 version when libdigidocpp was not yet public library but internal component used by Digidoc3 client.
+
+
Known issues:
+
- If a data file with a colon character in its name is added to a BDOC container then the created signature will be erroneous. Thus, colon characters must not be used in data file names.
+

+Overview

+

+References and additional resources

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BDOC2.1:2013

BDOC – Format for Digital Signatures. Version 2.1:2013

+

https://www.skidsolutions.eu/repository/bdoc-spec21.pdf
+ Other releases:
+ https://www.skidsolutions.eu/repository/bdoc-spec20.pdf
+ https://www.skidsolutions.eu/repository/bdoc-spec212.pdf
+ https://www.id.ee/wp-content/uploads/2020/08/bdoc-spec21-est.pdf
+ https://www.id.ee/wp-content/uploads/2020/01/bdoc-spec212-est.pdf

+
DigiDoc format

DigiDoc file format

+

https://www.id.ee/wp-content/uploads/2020/08/digidoc_format_1.3.pdf

+
XML-DSIG

IETF RFC 3275: "XML-Signature Syntax and Processing"

+

http://www.ietf.org/rfc/rfc3275.txt

+
XML-DSIG 1.1

XML Signature Syntax and Processing. Version 1.1

+

http://www.w3.org/TR/xmldsig-core1/

+
XAdES

ETSI TS 101 903 V1.4.2 (2010-12) – XML Advanced Electronic Signatures

+

http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.04.02_60/ts_101903v010402p.pdf
+ Other versions:
+ http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.04.01_60/ts_101903v010401p.pdf
+ http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.03.02_60/ts_101903v010302p.pdf

+
XAdES Baseline Profile

ETSI TS 103 171 V2.1.1 (2012-03) - XAdES Baseline Profile

+

http://www.etsi.org/deliver/etsi_ts/103100_103199/103171/02.01.01_60/ts_103171v020101p.pdf

+
XAdES EN

ETSI EN 319 132-1 V1.2.1 (2022-02) - Building blocks and XAdES baseline signatures

+

https://www.etsi.org/deliver/etsi_en/319100_319199/31913201/01.02.01_60/en_31913201v010201p.pdf
+ Other versions:
+ http://www.etsi.org/deliver/etsi_en/319100_319199/31913201/01.01.01_60/en_31913201v010101p.pdf

+
XAdES Validation

ETSI TS 102 853 V1.1.2 (2012-10) – Signature validation procedures and policies

+

http://www.etsi.org/deliver/etsi_ts/102800_102899/102853/01.01.02_60/ts_102853v010102p.pdf

+
CAdES EN

ETSI EN 319 122-1 V1.2.1 (2021-10) - Building blocks and CAdES baseline signatures

+

https://www.etsi.org/deliver/etsi_en/319100_319199/31912201/01.02.01_60/en_31912201v010201p.pdf

+
PKWARE ZIP

ZIP File Format Specification

+

http://www.pkware.com/documents/casestudies/APPNOTE.TXT

+
OpenDocument

OASIS "Open Document Format for Office Applications. Version 1.2 Part 3: Packages"

+

http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-part3.html#__RefHeading__752803_826425813
+ Other versions:
+ http://docs.oasis-open.org/office/v1.0/OpenDocument-v1.0-os.pdf

+
ASiC

ETSI EN 319 162-1 V1.1.1 (2016-04) - Associated Signature Containers

+

http://www.etsi.org/deliver/etsi_en/319100_319199/31916201/01.01.01_60/en_31916201v010101p.pdf
+ Other versions:
+ http://www.etsi.org/deliver/etsi_ts/102900_102999/102918/01.03.01_60/ts_102918v010301p.pdf
+ http://www.etsi.org/deliver/etsi_ts/102900_102999/102918/01.01.01_60/ts_102918v010101p.pdf
+ http://www.etsi.org/deliver/etsi_ts/102900_102999/102918/01.02.01_60/ts_102918v010201p.pdf

+
ASiC Baseline Profile

ETSI TS 103 174 V2.1.1 (2012-03)

+

http://www.etsi.org/deliver/etsi_ts/103100_103199/103174/02.02.01_60/ts_103174v020201p.pdf
+ Other versions:
+ http://www.etsi.org/deliver/etsi_ts/103100_103199/103174/02.01.01_60/ts_103174v020101p.pdf

+
PDF (PAdES)

ETSI EN 319 142-1 V1.1.1 (2016-04) - PAdES digital signatures

+

https://www.etsi.org/deliver/etsi_en/319100_319199/31914201/01.01.01_60/en_31914201v010101p.pdf
+

+
RFC6960

X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP

+

http://tools.ietf.org/html/rfc6960

+
RFC3161

Internet X.509 Public Key Infrastructure Time-Stamp protocol

+

http://tools.ietf.org/html/rfc3161

+
RFC5280

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile

+

http://tools.ietf.org/html/rfc5280

+
Trusted Lists

ETSI TS 119 612 V1.1.1 (2013-06)

+

http://www.etsi.org/deliver/etsi_ts/119600_119699/119612/02.02.01_60/ts_119612v020201p.pdf
+ Other versions:
+ http://www.etsi.org/deliver/etsi_ts/119600_119699/119612/01.01.01_60/ts_119612v010101p.pdf
+ http://www.etsi.org/deliver/etsi_ts/102200_102299/102231/03.01.02_60/ts_102231v030102p.pdf

+
SiVa

Digital signature validation web service that provides SOAP and JSON API to validate files

+

http://open-eid.github.io/SiVa/

+
DSA

Estonian Digital Signature Act

+

http://www.legaltext.ee/et/andmebaas/tekst.asp?loc=text&dok=X30081K6&keel=en&pg=1&ptyyp=RT&tyyp=X&query=digitaalallkirja

+
Release notesLibdigidocpp library’s release notes
ETSI TS 102 280 (V1.1.1)

X.509 V3 Certificate Profile for Certificates Issued to Natural Persons

+

http://www.etsi.org/deliver/etsi_ts/102200_102299/102280/01.01.01_60/ts_102280v010101p.pdf

+
DigiDoc librarieshttps://www.id.ee/en/rubriik/digidoc-libraries/
ID-software GitHub projecthttps://github.com/open-eid
Libdigidocpp GitHub projecthttps://github.com/open-eid/libdigidocpp
+

+Terms and acronyms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ASiCAssociated Signature Containers
ASiC-EExtended Associated Signature Containers. A type of ASiC container.
ASiC-SAssociated Signature Container Simple form. A type of ASiC container.
BDOC 2.1 (.bdoc)Term is used to denote a digitally signed file format which is a profile of XAdES and follows container packaging rules based on OpenDocument and ASiC standards. The document format has been defined in BDOC2.1:2013, an overview is provided in chapter Format of digitally signed file of the current document.
CRLCertificate Revocation List, a list of certificates (or more specifically, a list of serial numbers for certificates) that have been revoked, and therefore should not be relied upon.
DIGIDOC-XML (.ddoc)The term is used to denote a DigiDoc document format that is based on the XAdES standard and is a profile of that standard. The current version is 1.3 which has been described in DigiDoc format.
ECDSAElliptic Curve Digital Signature Algorithm. Digital Signature Algorithm (DSA) which uses elliptic curve cryptography. Used as an alternative to RSA algorithm.
OCSPOnline Certificate Status Protocol, an Internet protocol used for obtaining the revocation status of an X.509 digital certificate
OCSP ResponderOCSP Server, maintains a store of CA-published CRLs and an up-to-date list of valid and invalid certificates. After the OCSP responder receives a validation request (typically an HTTP or HTTPS transmission), the OCSP responder either validates the status of the certificate using its own authentication database or calls upon the OCSP responder that originally issued the certificate to validate the request. After formulating a response, the OCSP responder returns the signed response, and the original certificate is either approved or rejected, based on whether or not the OCSP responder validates the certificate.
PAdES (.pdf)Term is used to denote a digitally signed PDF file format which is based on PAdES standards.
SKSK ID Solutions AS. Certificate Authority in Estonia
time-markMechanism used for adding certificate validity and signing time information with the signature. The information is provided with a special OCSP confirmation (also referred to as time-mark) - hash value of the binary value of the signature (along with hash algorithm identifier in case of BDOC 2.1 document format) must be present in the "nonce" field of the OCSP confirmation. In this case, signature creation time is the issuance time of the OCSP confirmation (producedAt value in the confirmation), additional time-stamp service is not required. The respective signature profile is TM profile (supported in case of DIGIDOC-XML 1.3 and BDOC 2.1 document formats).
time-stampMechanism used for adding certificate validity and signing time information with the signature. The certificate validity information is added to the signature with an OCSP confirmation; the signing time information is added with a time-stamp token retrieved form a time-stamping service. In this case, signature creation time is the issuance time (genTime value in the time-stamp) of the time-stamp token. The respective signature profile is TS profile (supported only in case of BDOC 2.1 document format).
archive time-stampMechanism used for providing long term validity of a XAdES signature. The signature and validation data values are time-stamped. The respective signature profile is TSA profile (supported only in case of BDOC 2.1 document format).
TSATime-Stamping Authority. Time-stamping service provider.
TSLTrust Service status List. Signed list that provides information about the status and the status history of the trust services (including certification, OCSP confirmation and time-stamping services). Used as a trust anchor in case of signature creation and validation to check the trustworthiness of the certificates that are included in the signature. See also Trusted Lists
X.509an ITU-T standard for a public key infrastructure (PKI) and Privilege Management Infrastructure (PMI) which specifies standard formats for public key certificates, certificate revocation lists, attribute certificates, and a certification path validation algorithm
XAdESXML Advanced Electronic Signatures, a set of extensions to XML-DSIG recommendation making it suitable for advanced electronic signature. Specifies precise profiles of XML-DSIG for use with advanced electronic signature in the meaning of European Union Directive 1999/93/EC.
XML-DSIGa general framework for digitally signing documents, defines an XML syntax for digital signatures and is defined in the W3C recommendation XML Signature Syntax and Processing
+

+Supported functional properties

+

Libdigidocpp is a library of C++ classes offering the functionality of handling digitally signed files in supported DigiDoc formats. The following functions are implemented:

    +
  • creating containers in supported DigiDoc formats and adding data files;
  • +
  • creating digital signatures using smart cards or other supported cryptographic tokens;
  • +
  • adding time marks and validity confirmations to digital signatures using OCSP and time-stamping protocols;
  • +
  • validating the digital signatures;
  • +
  • using trust service status lists (TSL) as trust anchors for certificate validation;
  • +
  • extracting data files from a container;
  • +
  • removing signatures and data files from a container.
  • +
+

The following table gives overview of functional features that are supported with Libdigidocpp.

+ + + + + + + + + + + + + + +
Feature Supported values
DigiDoc document format
    +
  • BDOC 2.1 - the main document format to be used, described in BDOC2.1:2013.
  • +
+
Note
BDOC 1.0 file format is not supported (more info can be found from https://www.id.ee/en/article/digidoc-container-format-life-cycle-2/).
+
Signature profile Signature profiles are based on the profiles defined by XAdES (XAdES).
    +
  • time-stamp (TS) - signature profile in case of which the certificate validity information is added to the signature with an OCSP confirmation; the signing time information is added with a time-stamp token (see also RFC6960) retrieved from a time-stamping service. In this case, signature creation time is regarded as the issuance time of the time-stamp token (genTime value in the time-stamp). The profile is supported only in case of BDOC 2.1 document format, the "SignatureTimeStamp" element is added to the signature (see also BDOC2.1:2013). Supported since v3.9 of the library.
  • +
  • time-mark (TM) - certificate validity and signing time information is added to the signature with a time-mark - a special OCSP confirmation in case of which the hash value of the binary value of the signature (along with hash algorithm identifier in case of BDOC 2.1 document format) must be present in the "nonce" field of the OCSP confirmation. In this case, signature creation time is regarded as the issuance time of the OCSP confirmation (producedAt value in the confirmation), additional time-stamp token is not required.
  • +
  • archive time-stamp (LTA) - the signature and all the accompanying validation data is time-stamped in order to provide long term validity. The profile is supported only in case of BDOC 2.1 document format, the "ArchiveTimeStamp" element is added to the time-stamp or time-mark signature (see also BDOC2.1:2013). In Libdigidocpp, validation of BDOC 2.1 time-stamp signatures with archive time-stamps is supported since v3.11 of the library.
  • +
+
Trust anchors Information of trusted CA certificates (trust anchors) is used to validate the trustworthiness of certificates used in the signature. The signer certificate's CA, OCSP responder certificate and time-stamping service's certificate (in case of TS signature profile) must be trusted. Trusted certificates' information is obtained from TSL list (Trust Service status list), the trusted certificates' list is retrieved from a signed TSL list that provides information about the status and the status history of the trust services (including certification, OCSP confirmation and time-stamping services). The European Commission's TSL list is used, more information of which can be found from https://ec.europa.eu/information_society/policy/esignature/trusted-list/. For the TSL specification document, see also Trusted Lists. For more information about the TSL implementation and configuration possibilities in Libdigidocpp library, see TSL list usage in Libdigidocpp and Trust anchor/TSL settings. The TSL functionality is supported since v3.9 of the library.
Signature creation module
    +
  • PKCS#11 – in Linux and macOS environments, the default module for singing with smart card (e.g. Estonian ID card or any other smartcard provided that you have the external native PKCS#11 driver for it).
  • +
  • Windows CryptoAPI – the default module for signing with smart card in Windows environment. By default, a dialog window is opened for the user to choose the signing certificate and enter PIN code.
  • +
+
Cryptographic token type
    +
  • Smart card, e.g. Estonian ID card. Supported signature creation modules are PKCS#11 and Windows CryptoAPI.
    Note
    Usage of USB cryptostick (Aladdin eToken with Digital Stamp certificate (https://www.skidsolutions.eu/en/services/Digital-stamp)) has been tested indirectly with Libdigidocpp - testing has been carried out via DigiDoc desktop application which uses Libdigidocpp as a base layer.
    +
  • +
+
Public-key algorithm
    +
  • RSA
  • +
  • ECDSA
  • +
+
+

+Component model

+

The figure below describes the architecture of software and hardware components that are used when creating signatures with Libdigidocpp library.

+ +
+Components used in Libdigidocpp implementation when signing with smart card
+ + + + + + + + + + + + + + + +
ComponentDescription
PKCS#11Widely adopted platform-independent API to cryptographic tokens (HSMs, smart cards and USB tokens), a standard management module of the cryptographic token and its certificates
CryptoAPIMicrosoft Cryptography API. Programming API for implementing cryptographic functions in Windows environment.
PC/SCStandard communication interface between the computer and the smart card, a cross-platform API for accessing smart card readers
IFDHandlerInterface Device Handler for CCID readers
CCIDUSB driver for Chip/Smart Card Interface Devices
ReaderDevice used for communication with a smart card
+

+Dependencies

+

+Software libraries

+

Libdigidocpp library depends on the software libraries listed below.

+ + + + + + + + + + + + + + + + + + + + + + +
Base ComponentRequired/optionalDescription
OpenSSLrequiredUsed for validating certificates and digest values.
XercesCrequiredUsed for validating the documents according to XML Schema, reading and writing XML.
XalanCrequiredUsed for handling XPath references in XML
XmlSecurityCrequiredUsed for handling signature related components.
XSDrequiredUsed for dynamically generating C++ source code according to XML Schemas, only used during building process of the library. Required when building the library from source code.
ZLIBrequiredUsed when compressing and extracting ASiC files in ZIP format.
MiniziprequiredUsed when creating and opening ZIP container for BDOC file. If the component is not found from system then bundled version with source code is used. Forms a part of ZLIB component.
PKCS11optionalUsed for searching for default PKCS#11 driver in the system so that its path could be registered in configuration entries.
DoxygenoptionalUsed for generating API documentation from source code.
SWIGoptionalUsed for creating C# and Java bindings.
+

+XML Schemas

+

Several XML schemas are used when creating digitally signed documents in BDOC 2.1 file format and validating their structure. The schemas are included in etc/schema/ subdirectory of the Libdigidocpp distribution package, their description is given in the table below.

+
Note
Some modifications have been made to some of the schemas. Differences in comparison with the original schemas are listed in section XML schema modifications of the current document.
+ + + + + + + + + + + + + + + + + + + + + +
Schema fileDescription
OpenDocument_manifest.xsdOASIS OpenDocument v1.0 (OpenDocument) Defines the structure of META-INF/manifest.xml file in BDOC container. https://www.oasis-open.org/committees/download.php/12570/OpenDocument-manifest-schema-v1.0-os.rng
OpenDocument_dsig.xsdOASIS OpenDocument v1.0 (OpenDocument) Defines the structure of META-INF/signature.xml file in ADOC container. https://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-dsig-schema.rng
en_31916201v010101.xsdAssociated Signature Containers (ASiC) Defines the format of container for encapsulating the signed documents, signatures and additional information. http://www.etsi.org/deliver/etsi_ts/102900_102999/102918/01.02.01_60/
xmldsig-core-schema.xsdXML Signature Core Schema Instance (XML-DSIG) Defines XML syntax for digital signatures. http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/xmldsig-core-schema.xsd
XAdES01903v132-201601.xsdXML Advanced Electronic Signatures (XAdES EN) Defines a set of extensions to XML-DSIG making it suitable for advanced electronic signature. http://uri.etsi.org/01903/v1.3.2/XAdES01903v132-201601.xsd
XAdES01903v132-201601-relaxed.xsdRelaxed version of XML Advanced Electronic Signatures (XAdES EN) Allows to list child elements of the SignatureProductionPlace element in any sequence. Schema is used when validating the BDOC documents in order to accept documents produced by DigiDoc4j library version 1.0.3 and earlier.
XAdES01903v141-201601.xsdDefines XML syntax for additional elements of XAdES signatures that were added with version 1.4.1 of the (XAdES EN) standard. Needed for implementing archive time-stamp support in the future. http://uri.etsi.org/01903/v1.4.1/XAdES01903v141-201601.xsd
ts_119612v020201_201601xsd.xsd
+ts_119612v020101_additionaltypes_xsd.xsd
+ts_119612v020101_sie_xsd.xsd
Defines the format of Trust Service status Lists (TSL) that contain information about trusted CA, OCSP and TSA certificates.
conf.xsdConfiguration properties’ schema. Defines the Libdigidocpp configuration file’s digidocpp.conf structure (see also Configuring Libdigidocpp).
+

The following figure describes dependencies between the abovementioned schemas (direction of the arrow indicates the direction of dependency).

+ +
+Dependencies between XML Schemas
+

+XML schema modifications

+

The following section describes modifications that have been made to XML schemas used in Libdigidocpp. The library uses several XML schemas when creating digitally signed documents and validating their structure. The schemas are included in etc/schema/ subdirectory of the Libdigidocpp distribution package, their description has been provided in section XML Schemas.

+

Modifications are marked between xml comment tags.

+

Schema en_31916201v010101.xsd

+

1) The schema’s location has been altered so that the imported schema file is looked up from the local file system.

<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
+
schemaLocation="xmldsig-core-schema.xsd"/> <!-- originally "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" -->
+

Schema xmldsig-core-schema.xsd

+

1) The XMLSchema.dtd reference has been commented out due to implementation issues (otherwise a warning message would be produced).

+
␂U
+
␗E␂U
+
␂U
+
␂U
+
M%Z␅
+
!␇
+
␂U
+
␂U
+
+
-->
+

2) The initial integer data type used in the original schema is converted into long data type when generating C++ source code from the current schema. However, as the SK issued certificates’ serial numbers are too long to fit into long type variable then the data type has been changed to string.

<complexType name="X509IssuerSerialType">
+
<sequence>
+
<element name="X509IssuerName" type="string"/>
+
<element name="X509SerialNumber" type="string"/> <!-- originally type="integer" -->
+
</sequence>
+
</complexType>
+

Schema XAdES01903v132-201601.xsd

+

1) The schema’s location has been modified so that the file is looked up from the local file system.

<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#"
+
schemaLocation="xmldsig-core-schema.xsd"/> <!-- originally "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" -->
+

2) The "type" attribute has been added, otherwise a warning message would be produced.

<xsd:complexType name="SignaturePolicyIdentifierType">
+
<xsd:choice>
+
<xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
+
<xsd:element name="SignaturePolicyImplied" type="AnyType"/> <!-- added type="AnyType" -->
+
</xsd:choice>
+
</xsd:complexType>
+

3) The "type" attribute has been added, otherwise a warning message would be produced.

<xsd:complexType name="CommitmentTypeIndicationType">
+
<xsd:sequence>
+
<xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
+
<xsd:choice>
+
<xsd:element name="ObjectReference" type="xsd:anyURI"
+
maxOccurs="unbounded"/>
+
<xsd:element name="AllSignedDataObjects" type="AnyType"/> <!-- added type="AnyType" -->
+
</xsd:choice>
+
<xsd:element name="CommitmentTypeQualifiers"
+
type="CommitmentTypeQualifiersListType" minOccurs="0"/>
+
</xsd:sequence>
+
</xsd:complexType>
+

Schema XAdES01903v132-201601-relaxed.xsd

+

1) Change child elements of type SignatureProductionPlaceType from "xsd:sequence" to "xsd:all" in order to allow the child elements to be listed in any order.

<xsd:complexType name="SignatureProductionPlaceType">
+
<xsd:all>
+
<xsd:element name="City" type="xsd:string" minOccurs="0"/>
+
<xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
+
<xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
+
<xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
+
</xsd:all>
+
</xsd:complexType>
+

Schema XAdES01903v141-201601.xsd

+

1) The schema's location has been modified so that the file is looked up from the local file system.

<xsd:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="XAdES01903v132-201601.xsd"/> <!-- originally "http://uri.etsi.org/01903/v1.3.2/XAdES01903v132-201601.xsd" -->
+

Schema ts_119612v020201_201601xsd.xsd

+

1) The schemas' locations have been modified so that the file is looked up from the local file system.

<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> <!-- originally "http://www.w3.org/2001/xml.xsd" -->
+
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> <!-- originally http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" -->
+

+Configuring Libdigidocpp

+

+Loading configuration settings

+

Libdigidocpp uses XML configuration file named digidocpp.conf. Configuration file's structure is defined with XML schema "conf.xsd" - the file is included in etc/schema/ subdirectory of Libdigidocpp package. For a sample configuration file, see Sample configuration file.

+

It is possible to use two types of configuration files: global and user's file. Global file can be used to determine system-wide settings that cannot be altered by a user's file – it can be done separately for each parameter in the file by setting the parameter's "lock" attribute value to "true". User's file can be used to determine user-specific parameter values.

+

It is possible to use only one configuration file (either global or user's file) or two files in parallel. In the latter case, the matching user file's parameter entries overwrite global file's entries, if the respective parameter is not defined as locked in the global file.

+

By default, the configuration file's settings are loaded during the library's initialization – Libdigidocpp looks for global and user configuration files from their default locations depending on the environment:

    +
  • in case of Windows environment:
      +
    • the global configuration file is looked up from the directory where digidocpp.dll library file is located. If the directory doesn't contain /schema subdirectory then the configuration file is looked up from the current working directory.
    • +
    • user configuration file is looked up from the system directory containing application data for the current user: %APPDATA%\digidocpp\digidocpp.conf
    • +
    +
  • +
  • in case of macOS:
      +
    • the global configuration file is looked up from a location in the file system: digidocpp.framework/Resources/digidocpp.conf
    • +
    • user configuration file is looked up from $HOME/.digidocpp/digidocpp.conf
    • +
    +
  • +
  • in case of Linux environment:
      +
    • the global configuration file is looked up from a location in the file system: /etc/digidocpp/digidocpp.conf
    • +
    • user configuration file is looked up from $HOME/.digidocpp/digidocpp.conf
    • +
    +
  • +
+

It is also possible to load global configuration file from a non-default location. In this case, call out the configuration file's initialization method before initializing the library:

// Initialize global configuration settings from a non-default location
+
digidoc::Conf::init(new digidoc::XmlConf("<file-path-and-name>"));
+
// then initialize the library
+ +
static void init(Conf *conf)
Definition: Conf.cpp:63
+
XML Configuration class.
Definition: XmlConf.h:30
+
DIGIDOCPP_EXPORT void initialize(const std::string &appInfo="libdigidocpp", initCallBack callBack=nullptr)
Definition: Container.cpp:87
+

Local configuration settings can also be set or modified during runtime by calling out the respective set methods of XmlConf class. The digidoc::XMLConf class must be used in order to access all the configuration methods that are available.

+

+Configuration parameters

+

Configuration file's elements and their attribute names are defined in conf.xsd file. Below is a description of the configuration file's parameters. The attribute "lock", when set to "true" can optionally be used to determine parameter values which should not be overwritten by another configuration file (e.g. when using global and user's configuration files in parallel; see also the previous section for more information).

+

+Logging settings

+ + + + + + + +
Parameter name Comments
log.file Location of the log file where the logging output is written, e.g. /tmp/digidocpp.log or C:\Temp\digidocpp.log If left unspecified then the logging output is written to standard output stream.
log.level Used for controlling the level of detail of the logging output messages, higher number value indicates higher level of detail. Possible values are: 1 – error messages, 2 – warning messages, 3 – info messages, 4 – debug messages.
+

+Time-stamping service settings

+ + + + + +
Parameter name Comments
ts.url Specifies the URL of the time-stamping service that is used during signature creation, needed only in case of TS signature profile. By default, the RIA's time-stamping service is used by the library (https://eid-dd.ria.ee/ts)
+
Note
For testing purposes, the SK's test time-stamping service can be used. The service is available at http://demo.sk.ee/tsa/ additional information can be found at https://www.id.ee/en/rubriik/timestamping-service/.
+

+Signature Verify Service settings

+ + + + + +
Parameter name Comments
verify.serivceUri Specifies the URL of the signature-verify service that is used during signature validation. By default, the RIA's signature-verify service is used by the library (https://siva.eesti.ee/V3/validate)
+

+PKCS#11 settings

+ + + + + +
Parameter name Comments
pkcs11.driver.path PKCS#11 driver library to be used when communicating with the smart card. With Estonian ID cards for example, the following PKCS#11 libraries are used: opensc-pkcs11.so (used in Linux environment) opensc-pkcs11.dll (used in Windows environment)
+

+Trust anchor/TSL settings

+

Information of trusted CA certificates (trust anchors) is used to validate the trustworthiness of certificates used in the signature during signing and signature validation processes. The signer certificate's CA, OCSP responder certificate and time-stamping service's certificate (also referred to as time-stamping authority, TSA) must be trusted.

+

Libdigidocpp library uses Trust Service Status List (TSL) as a source of trust anchor information (see also TSL list usage in Libdigidocpp and TSL standard for more information). A TSL list is a signed XML file that contains data of trusted CA certificates, OCSP responder service and time-stamping service certificates. Note that since v3.10, only TSL lists' based trust anchors are supported by the library.

+

By default, the trusted certificates' information is obtained from European Commission's official TSL list (https://ec.europa.eu/tools/lotl/eu-lotl.xml). The default TSL behaviour can be changed by altering the configuration parameters listed below.

+
Note
- The TSL URL and TSL signing certificate values are not configurable via the digidocpp.conf configuration file. The default values are fixed in source code and can be accessed via methods digidoc::Conf::TSLCerts() and digidoc::Conf::TSLUrl(). The library's user has to create a subclass and override the methods in order to define other values. See also Initialization.
+
+- When using digidoc-tool utility program then it is possible to specify necessary TSL parameters on the command line. See also Libdigidocpp utility program.
+
+- For information about using test TSL lists with Libdigidocpp library, please refer to https://github.com/open-eid/libdigidocpp/wiki/Using-test-TSL-lists
+ + + + + + + + + + + +
Parameter name Comments
tsl.autoupdate Determines if TSL validity is checked during every initialization of the library and if new TSL lists are downloaded if the existing list is expired. By default, the automatic update functionality is enabled and can be disabled by setting the parameter's value to "false". Note that when setting the parameter to "false" then you should copy the necessary TSL files to the "tsl.cache" location manually.
tsl.cache Directory in the file system where the TSL lists are saved and read in by the library. Set this parameter with your own value to change the default directories:
    +
  • in Windows environment: %APPDATA%\digidocpp\tsl,
  • +
  • in Linux ja OSX environments: $HOME/.digidocpp/tsl
  • +
+
tsl.onlineDigest

Additional feature to optimize TSL updating process. By default, the value is "true", meaning that during each initialization of the library, it is checked if there is a newer TSL list published, even if the existing TSL list is not yet expired.

+

The check is based on the TSL list's HTTP HEAD request ETag field or SHA-256 digest value.

+
    +
  • HTTP HEAD request is made to TSL's URL to get remote ETag and if the value doesn't correspond with the existing local TSL's ETag value then a newer version of the TSL list is downloaded. Otherwise, the existing TSL is used.
  • +
  • SHA-256 digest that is (optionally) published online by the TSL's owner/manager. The URL of the digest matches the TSL's URL, but extension .sha2 is used instead of .xml. If the digest can be read and the value doesn't correspond with the existing local TSL's SHA-256 digest then a newer version of the TSL list is downloaded. Otherwise, the existing TSL is used.
  • +
+
tsl.timeOut TSL downloading timeout for each TSL list. The default value is 10 seconds.
+

+HTTP proxy settings

+ + + + + + + + + + + + + + + +
Parameter name Comments
proxy.host Specifies the proxy hostname, e.g. proxy.example.net
proxy.port Specifies the proxy port, e.g. 8080
proxy.user Specifies the proxy username.
proxy.pass Specifies the proxy password.
proxy.tunnelSSL May be used to enable downloading TSL-s in case of HTTPS connections and proxy. If enabled, the library tries to download use the proxy tunnel also for the HTTPS session.
proxy.forceSSL May be used to enable downloading TSL-s in case of HTTPS connections and proxy. If enabled then the library tries to pass by the proxy connection in case of HTTPS sessions.
+

+Digest type settings

+ + + + + + + +
Parameter name Comments
signer.signatureDigestUri Specifies the digest algorithm that is used when calculating the hash that is being signed. By default, the SHA-256 algorithm (with URI http://www.w3.org/2001/04/xmlenc#sha256) is used
signer.digestUri Specifies the digest algorithm that is used for calculating all the hash values in the signature. By default, the SHA-256 algorithm is used
+

+OCSP responder settings

+

The default OCSP responder that the library uses for retrieving the OCSP confirmation during signature creation depends on the signer's certificate chain. In case of no issuer is configured AIA extension is used for OCSP responder settings

+

You change the default behaviour in the configuration file with the following parameter.

+ + + + + +
Parameter name Comments
ocsp issuer The "issuer" parameter's name stands for the signer certificate issuer's Common Name (CN) value, e.g. ESTEID-SK 2015. The element's value specifies OCSP responder server's URL address that is used for certificates issued from the respective CA chain.
+

+Sample configuration file

+
1 <?xml version="1.0" encoding="UTF-8"?>
+
2 <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema/conf.xsd">
+
3  <!--Logging settings-->
+
4  <!--<param name="log.level" lock="false">2</param>-->
+
5  <!--<param name="log.file" lock="false">/tmp/digidocpp.log</param>-->
+
6  <!--<param name="log.file" lock="false">C:\Users\All Users\Documents\digidocpp.log</param>-->
+
7 
+
8  <!--Digest algorithm settings-->
+
9  <!--<param name="signer.digestUri" lock="false">http://www.w3.org/2001/04/xmlenc#sha256</param>-->
+
10  <!--<param name="signer.signatureDigestUri" lock="false">http://www.w3.org/2001/04/xmlenc#sha256</param>-->
+
11 
+
12  <!--PKCS#11 driver’s location, if not using default driver-->
+
13  <!--<param name="pkcs11.driver.path" lock="false">opensc-pkcs11.so</param>-->
+
14 
+
15  <!--HTTP proxy settings, if needed-->
+
16  <!--<param name="proxy.forceSSL" lock="false">false</param>-->
+
17  <!--<param name="proxy.tunnelSSL" lock="false">true</param>-->
+
18  <!--<param name="proxy.host" lock="false"></param>-->
+
19  <!--<param name="proxy.port" lock="false"></param>-->
+
20  <!--<param name="proxy.user" lock="false"></param>-->
+
21  <!--<param name="proxy.pass" lock="false"></param>-->
+
22 
+
23  <!--Time-stamping service settings-->
+
24  <!--<param name="ts.url" lock="false">https://eid-dd.ria.ee/ts</param>-->
+
25 
+
26  <!--TSL settings-->
+
27  <!--<param name="tsl.autoupdate" lock="false">true</param>-->
+
28  <!--<param name="tsl.cache" lock="false"></param>-->
+
29  <!--<param name="tsl.onlineDigest" lock="false">true</param>-->
+
30  <!--<param name="tsl.timeOut" lock="false">10</param>-->
+
31 
+
32  <!--Verify service settings-->
+
33  <!--<param name="verify.serivceUri" lock="false">https://siva.eesti.ee/V3/validate</param>-->
+
34 
+
35  <!--OCSP BDoc-TM validation settings-->
+
36  <!--<param name="ocsp.tm.profile" lock="false">1.3.6.1.4.1.10015.4.1.2</param>-->
+
37 
+
38  <!--OCSP responder URL-->
+
39  <!--<ocsp issuer="ISSUER NAME">http://ocsp.issuer.com</ocsp>-->
+
40 </configuration>
+

+Using Libdigidocpp API

+

Note that Libdigidocpp uses internal memory buffers in case of all the operations, so that intermediary data is not written to temporary files on the disk. Also, the data files to be added to a DigiDoc container can be read from a data stream and later extracted from the container to a stream so that the data can be kept in memory.

+

+Initialization

+

Libdigidocpp's initialization method conducts the following operations:

    +
  1. initializes dependent libraries (see also Software libraries)
  2. +
  3. loads configuration settings from default configuration files
  4. +
  5. initializes trust anchors: initializes TSL lists. See TSL initialization process for more information about the TSL initialization process.
  6. +
+

If you would like to use non-default configuration settings then call out the configuration file's initialization before initializing the library, for example:

// Optionally initialize global configuration file to use non-default settings
+
digidoc::Conf::init(new digidoc::XmlConf("<file-path-and-name>"));
+
// Initialize the library
+ +

The digidoc::XmlConf class must be used in order to access all the configuration methods that are available.

+
Note
If you would like to use different configuration values that are fixed as constants in the digidoc::Conf configuration class then it is possible to extend the class and override the values that need to be reset.
+

+Creating and signing a DigiDoc document (local signing)

+

+Creating a DigiDoc container

+

Create a new container object and specify the DigiDoc document's type, for example:

auto doc = digidoc::Container::createPtr("<output-file's-path>"); // create new container
+
static std::unique_ptr< Container > createPtr(const std::string &path)
Definition: Container.cpp:296
+

Container class is used to incorporate the data of a DigiDoc document.

+

+Adding data files

+

Data files can be added to a DigiDoc container in two alternative ways:

    +
  1. adding the data from an input stream (i.e. the data file contents can be read from internal memory buffer):
    std::unique_ptr<std::istream> is = ...;
    +
    void digidoc::Container::addDataFile(std::move(is), // input stream
    +
    const std::string &fileName, // file name that is written to the container
    +
    const std::string &mediaType); // mime type of the data file
    +
    virtual void addDataFile(const std::string &path, const std::string &mediaType)=0
    +
  2. +
  3. adding the data by reading the it from file system
    void digidoc::Container::addDataFile(const std::string &path, //data file's name and path in file system
    +
    const std::string &mediaType); // mime type of the data file
    +
  4. +
+

Parameter mediaType in the methods above stands for a MIME type of the data file, for example "text/plain" or "application/msword". Value "application/octet-stream" is used by default. Calling out any of the methods listed above shall create a new DataFile object and add it to the DigiDoc container's data file collection. Note that in order to add a data file to a container, the container has to be unsigned and there shouldn't be an existing data file with the same name in the container. If a container is signed then it is possible to add data files to it only after the signatures are removed.

+
Warning
- In case of BDOC 2.1 documents, it is important to pay attention that the data file's mime type value in manifest.xml file and in signatures*.xml file's <DataObjectFormat><MimeType> element are the same, otherwise the signature is invalid! In case of the ordinary signature creation process, the library sets the correct value automatically. However, if you create a BDOC 2.1 container with Libdigidocpp library and want to add signatures*.xml file that you have received from another source then make sure that the data files' mime-type values in manifest-xml file and in signatures*.xml file are the same.
+
+- Data file’s mime-type value must be formatted as specified in RFC2045, section 5.1 (https://tools.ietf.org/html/rfc2045#section-5.1), i.e. the "type" and "subtype" values must be separated with a forward slash character.
+
+- It is recommended not to use special characters in the data file’s name, i.e. it is suggested to only use the characters that are categorized as "unreserved" according to RFC3986 (http://tools.ietf.org/html/rfc3986).
+
Note
By default, it is recommended to use data file mime-type value "application/octet-stream" for all file types.
+

+Adding signatures

+

It is possible to add a signature to a container only if it contains at least one data file, multiple signatures can be added to a single container. The signer's certificate and PIN code to access the private signature key are required during signing.

+
Note
In case of BDOC 2.1 documents, Libdigidocpp library uses TSL lists (Trust Service Status list) to obtain information about trusted certificates during signature creation process. See also TSL overview, TSL standard and Configuring TSL settings.
+

Signing can be done by using PKCS#11 module for accessing the signature token. PKCS#11 module is the default module for singing with smart card (e.g. Estonian ID card or any other smart card provided that you have the external native language PKCS#11 driver for it). See also PKCS#11 settings.

digidoc::PKCS11Signer *signer = new digidoc::PKCS11Signer("<PKCS11-driver-path>");
+
// optionally specify PKCS#11 driver's location. If left unspecified then location is
+
// looked up from configuration file's parameter "pkcs11.driver.path".
+
std::string pin = "<pin-code>"; //PIN2 in case of Estonian ID cards
+
signer->setPin(pin);
+
Implements Signer interface for ID-Cards, which support PKCS#11 protocol.
Definition: PKCS11Signer.h:27
+
void setPin(const std::string &pin)
Definition: PKCS11Signer.cpp:306
+

If you would like to add PIN insertion dialog window for the signer to enter the PIN code then you can write a new class which extends the PKCS11Signer class, overwrite the std::string pin(const X509Cert &cert) method and write your own PIN dialog implementation code there.

+

+Optionally specify the signature profile

+

The supported signature profiles are (see also Supported functional properties, under "Signature profiles"):

    +
  • "time-stamp" (TS) - signature profile in case of which the certificate validity information is added to the signature with an OCSP confirmation (retrieved from OCSP server); the signing time information is added with a time-stamp token (retrieved from a time-stamping service). Signature creation time is the issuance time of the time-stamp token (value of the getTime field in the token). The profile is supported only in case of BDOC 2.1 document format, since v3.9 of the library.
  • +
+
Warning
When adding signature to an existing BDOC 2.1 container then the profile of the existing signature should be used for all of the new signatures in the same container. Signature's profile can be determined with method digidoc::Signature.profile().
+

If the signature profile value is not specified then then a "time-stamp" profile is used by default.

+

Set the profile value as follows:

std::string profile = "time-stamp"; // or "time-stamp-archive"
+
signer->setProfile(profile);
+
void setProfile(const std::string &profile)
Definition: Signer.cpp:164
+

+Optionally specify additional signer's data

+

Signature production place and signer role are optional signed meta-data about the signature. If left unspecified then the respective elements in the signatures*.xml file are created with no contents.

std::string city, state, postalCode, country;
+
std::vector<std::string> roles;
+
signer->setSignatureProductionPlace(city, state, postalCode, country); // location where the signature is created
+
signer->setSignerRoles(roles); // role(s) of the signer
+
void setSignatureProductionPlace(const std::string &city, const std::string &stateOrProvince, const std::string &postalCode, const std::string &countryName)
Definition: Signer.cpp:75
+
void setSignerRoles(const std::vector< std::string > &signerRoles)
Definition: Signer.cpp:186
+

+Optionally specify signature digest method

+

By default, the hash that is being signed is calculated with SHA-256 algorithm in case of BDOC documents. In case of BDOC format, you can also use a different digest algorithm for calculating the hash that is signed (this does not affect calculating other hash values). For that, use the digidoc::Signer::setMethod(const std::string &method) method.

+

+Create the signature

+

The signing method also adds validation data from external services (OCSP and/or time-stamping servers). Note that the OCSP responder and time-stamping server settings (in case of TS profile) should be configured before calling out the following method (see also Initialization and Configuration parameters). By default, the RIA's time-stamping service https://eid-dd.ria.ee/ts is used. Container holds the Signature object reference and there is no need cleanup memory.

+
Signature *signature = doc->sign(signer);
+

+Validating the created signatures

+

After the signature has been added to the container, it should be validated before writing the signed container to an output file. For validating the signature, do as follows:

signature->validate();
+

The validation method above validates the signed data files', signer certificate's and OCSP confirmation's correspondence to the signature value. Note that the validation method above does not validate other signatures which may belong to the same container.

+
Note
See also Validating signature containers and signatures about more information for validating existing signatures and signature containers.
+

+Save container changes

+

After the signature has been added and validated, container changes should be saved (Reading and writing DigiDoc documents):

doc->save();
+

+Creating and signing a DigiDoc document (external signing, e.g. in browser)

+

External signing (two-step signing) can be used in case of signing in web applications, where the signature value is calculated externally, via a browser plug-in or extension.

+

In order to conduct web signing with Libdigidocpp library, do as follows: Container holds the Signature object reference and there is no need cleanup memory.

+
    +
  1. In Container class, prepare signature XML structure:
    Signature *signature = doc->prepareSignature(signer);
    +
  2. +
  3. In Signature class, get the hash to be signed in browser:
    std::vector<unsigned char> dataToSign = signature->dataToSign();
    +
    std::vector<unsigned char> signatureMethod = signature->signatureMethod();
    +
    std::string id = signature->id();
    +
    ID can be used when container is saved with digidoc::Container::save and later reloaded to locate signature object.
  4. +
  5. Sign the hash in browser (e.g. use the hwcrypto.js library)
  6. +
  7. Add RSA or ECDSA signature value to the signature XML structure: When container was stored on disk before reload container with digidoc::Container::open and use digidoc::Container::signatures() to enumerate signatures to locate correct object with previosly selected ID.
    std::vector<unsigned char> signatureValue = ...;
    +
    signature->setSignatureValue(signatureValue);
    +
  8. +
  9. Add time-stamp and OCSP data to Signature object, according to the signature's profile (see also section Optionally specify the signature profile for more information):
    signature->extendSignatureProfile(signer->profile());
    +
    std::string profile() const
    Definition: Signer.cpp:145
    +
  10. +
  11. Write the document to output, as specified in section Reading and writing DigiDoc documents
  12. +
+

+Reading and writing DigiDoc documents

+

In order to read an existing DigiDoc file from the file system, do as follows:

auto doc = digidoc::Container::openPtr("<input-file's-path>");
+
static std::unique_ptr< Container > openPtr(const std::string &path)
Definition: Container.cpp:350
+

The method above reads in the DigiDoc file from the specified location in file system and creates the respective Container object representing the document's data. The file's structure is also validated during its parsing according to the corresponding standards (see also for DIGIDOC XML 1.3 documents, for BDOC 2.1 documents and for BDOC 2.1.2 documents).

+

Write a DigiDoc file (represented with a Container object) to file system with the following method:

digidoc::Container::save("<output-file's-path>");
+
virtual void save(const std::string &path="")=0
+
Note
In case of read-only formats (e.g. ASiC-S documents), the save will throw a digidoc::Exception.
+

+Validating signature containers and signatures

+

Validation of a signed DigiDoc document consists of three main steps:

    +
  1. Call out the main validation method of the library. If there are multiple validation errors then get the errors list.
  2. +
  3. Check for additional errors/warnings (separate implementation);
  4. +
  5. Determine the validation status of the document (according to the returned error codes and validation status priorities).
  6. +
+

+Using the main validation method

+

You can validate a signature and its validation data - OCSP confirmation and time-stamp (in case of TS profile) - with method:

+
virtual void validate() const =0
+

If an exception is thrown from the validation method then the signature can be either INVALID or VALID WITH WARNINGS; otherwise the signature is VALID. Before determining the final validation status, additional errors must be checked, as described in the following chapters.

+

If an exception is thrown then its causes can be retrieved with the following method:

std::vector<digidoc::Exception> digidoc::Exception::causes();
+
Causes causes() const
Definition: Exception.cpp:183
+

+Checking for additional errors/warnings

+

There is a validation case that is not checked in the default validation method of the library, instead, separate method for checking this specific situation has to be implemented by the library’s user. In Libdigidocpp library, checking for an old file format must be done separately.

+

The following subchapter describes how this check can be implemented. After checking for old signature format errors/warnings, collect all of the error codes and continue with determining the validation status as described in the next chapter. It is possible to check the source code of digidoc-tool or DigiDoc desktop application, accessible from https://github.com/open-eid/DigiDoc4-Client.

+

+Determining the validation status

+

After validating the signed DigiDoc document, the validation result must be determined by the library's user. Final validation result must be one of the possible validation statuses that are described in the table below, the status must be chosen according to its priority. The validation status priorities have to be applied in two cases:

    +
  1. Returning a validation result of a single signature:
    + If there are more than one validation errors that occur when validating a single signature in DigiDoc container then the overall status of the signature should be chosen according to the status priorities.
  2. +
  3. Returning a validation result of the whole DigiDoc container:
    + If there are more than one signatures in a DigiDoc container and the signatures have different validation statuses or validation of the container structure returns a different status then the overall status of the DigiDoc file should be chosen according to the status priorities.
  4. +
+

NB! User of the library has to determine the validation status according to the error code that is returned by the library's validation method.

+ + + + + + + + + + +
Priority Status Error code Description
1 INDETERMINATE/UNKNOWN 10 CertificateIssuerMissing (signer's certificate is unknown) 6 CertificateUnknown (OCSP responder certificate is unknown)

Validation process determines that one or more of the certificates included in the document are unknown or not trusted, i.e. the certificates have been issued by an unknown Certificate Authority (the CA has not been added to trusted list). Notes:

    +
  • The file and signature(s) are not legally valid.
  • +
  • If the CA will later be added to the trusted list/trust store then the validation status can change to any of the other statuses described in the current table.
  • +
+

Suggested warning message (also displayed in DigiDoc desktop application): "Signature status is displayed as unknown if you don't have all validity confirmation service certificates and/or certificate authority certificates installed into your computer"
+

+

More info: https://www.id.ee/en/article/digidoc4-klient-viga-36-failed-to-validate-signature-libdigidoc-code-36-message-signers-cert-not-trusted-missing-ca-cert/
+

+
    +
  • Sample file: unknown_CA_TS.asice (BDOC 2.1, time-stamp profile)
  • +
  • Sample file: unknown_CA_TM.asice (BDOC 2.1, time-mark profile)
  • +
+
2 INVALID All errors except of the ones that are regarded as warnings by the library's user.

Validation process returns error(s), the errors have not been explicitly determined as minor error(s) by the library's user.

+
Note
    +
  • The file and signature(s) are not legally valid.
  • +
  • No further alterations should be made to the file, i.e. no signatures should be added or removed.
  • +
+
+
3 VALID WITH WARNINGS See the next section. Validation process returns error(s) that have been previously explicitly categorized (by the library's user) as minor technical errors. Note that this status is used only in exceptional cases, more details of which are given in the next chapter.
Note
    +
  • The file and signature(s) are handled as legally valid.
  • +
  • The error(s) are regarded as validation warnings.
  • +
  • Validation warnings should be displayed to the user.
  • +
  • No further alterations should be made to the file, i.e. no signatures should be added or removed.
  • +
  • Creator of the file should be informed about the error situation.
  • +
+
+
4 VALID N/A Validation process returns no errors. The signature is legally valid.
+

The error codes described in the table above are defined in Exception.h source file.

+

Sample code of DigiDoc file validation can be found from digidoc-tool.cpp utility program, from the following method:

open(int argc, char* argv[]); //utility program's command "open"
+

+Validation status VALID WITH WARNINGS

+

In special cases, validation errors can be regarded as minor technical errors and the file's validation status can be regarded as VALID WITH WARNINGS instead.

+
Warning
User of the DigiDoc library has to decide on his/her own when to use VALID WITH WARNINGS status instead of INVALID: there may be different interpretations of the severity of validation errors in different information systems then the final decision when to use this status has to be made by the library's user according to the requirements of the specific information system.
+

It is recommended to use the validation status VALID WITH WARNINGS in case of the error situations that are included in the table below - these error situations are regarded as VALID WITH WARNINGS in DigiDoc applications and software libraries, including:

    +
  • DigiDoc desktop application,
  • +
  • Libdigidocpp and DigiDoc4j software libraries' utility programs.
  • +
+

Table 1. Validation error codes recommended to be handled as VALID WITH WARNINGS

+ + + + + + + + + + + + + +
Error code Related DigiDoc file format Description
12 RefereneceDigest Weak
+ 13 SignatureDigestWeak
BDOC 2.1

Weaker digest method (SHA-1) has been used than recommended when calculating either <Reference> or <Signature> element's digest value.

+

Suggested warning message (also displayed in DigiDoc desktop application): "The current BDOC container uses weaker encryption method than officially accepted in Estonia."

+
    +
  • Sample file: weak-sha1-warning-TS.asice (time-stamp profile)
  • +
  • Sample file: weak-sha1-warning-TM.bdoc (time-mark profile)
  • +
+
16 ProducedATLateWarning BDOC 2.1 TS

The difference between time-stamp issuance time (genTime value) and OCSP response's issuance time (producedAt value) exceeds 15 minutes but is less than 24 hours.

+

Suggested warning message: "Time-stamp and OCSP issuance time difference is over 15 minutes."

+
    +
  • Sample file: TS_OCPS_difference_exceeds_15min.asice
  • +
+
14 DataFileNameSpaceWarning DDOC 1.0
+ DDOC 1.1
+ DDOC 1.2
+ DDOC 1.3

<DataFile> element's xmlns attribute is missing.

+

Suggested warning message (also displayed in DigiDoc desktop application): "This DigiDoc documents has not been created according to specification, but the digital signatures is legally valid. You are not allowed to add or remove signatures to this container."

+

More info: https://www.id.ee/en/article/digital-signing-and-electronic-signatures/

+
    +
  • Sample file: datafile_xmlns_missing.ddoc
  • +
+
15 IssuerNameSpace Warning DDOC 1.1
+ DDOC 1.2
+ DDOC 1.3

<IssuerSerial><X509IssuerName> and/or <IssuerSerial><X509SerialNumber> element's xmlns attribute is missing.

+

Suggested warning message (also displayed in DigiDoc desktop application): "This DigiDoc documents has not been created according to specification, but the digital signatures is legally valid. You are not allowed to add or remove signatures to this container."

+

More info: https://www.id.ee/en/article/digital-signing-and-electronic-signatures/

+
    +
  • Sample file: issuerserial_xmlns_missing.ddoc
  • +
+
N/A (Separate error code has not been determined. DDOC 1.0
+ DDOC 1.1
+ DDOC 1.2

DigiDoc file's version is older than currently supported. Note that the error situation affects only the container and not the signatures, therefore, in DigiDoc libraries, it is returned and displayed only at container level.

+

Suggested warning message (also displayed in DigiDoc desktop application): "The current file is a DigiDoc container that is not supported officially any longer. You are not allowed to add or remove signatures to this container"

+

More info: https://www.id.ee/en/article/digidoc-container-format-life-cycle-2/

+
    +
  • Sample file: old_digidoc_format_1.0.ddoc
  • +
+
+

+Additional information about validation

+

+Overview of validation activities

+

Overview of validation activities is as follows:

    +
  1. checking that all the data files and signature’s meta-data (signer’s role, etc.) are included in the signature by calculating the data objects’ digest values and comparing them with the <Reference> element values in the signature;
  2. +
  3. checking that the claimed signer’s certificate is the actual certificate that was used for signing; checking that the "Non-repudiaton" value is set in the "Key Usage" extension of the signer’s certificate;
  4. +
  5. checking that the signature value is correct by decrypting the value with the signer’s public key and comparing the result with digest calculated from <SignedInfo> element block;
  6. +
  7. case of time-stamp corresponds to the signature value (by comparing the digest value of <SignatureValue> element’s value and TS response’s digest value);
  8. +
  9. checking that the OCSP response confirms the signer certificate’s validity and case of time-mark corresponds to the signature value (by comparing the digest value of <SignatureValue> element’s value and OCSP response’s nonce value);
  10. +
  11. checking that the signer’s, TSA and OCSP responder’s certificates are trusted (i.e. the certificates’ issuers are registered in trust store).
  12. +
+
Note
Libdigidocpp library uses TSL lists (Trust Service Status list) to obtain information about trusted certificates during signature validation process. See also TSL overview, TSL standard and Configuring TSL settings.
+

+Extracting data files

+

A data file can be extracted from container and written to the specified location in the file system or to an output stream.

    +
  1. You can write the data file to a stream and keep it in memory:
    void digidoc::DataFile::saveAs(std::ostream &os);
    +
    virtual void saveAs(std::ostream &os) const =0
    +
  2. +
  3. The file can be written to file system with the following method:
    void digidoc::DataFile::saveAs(const std::string &path);
    +
  4. +
+

List of all the document’s data files can be retrieved with the following method:

std::vector<digidoc::DataFile> digidoc::Container::dataFiles();
+
virtual std::vector< DataFile * > dataFiles() const =0
+

For example, read in a DigiDoc document and write its data files to file system as follows:

digidoc::Container doc("<input-file’s-path>"); // read in a document
+
for(const digidoc::DataFile &file: doc.dataFiles()){ // get the data files’ list
+
try {
+
std::string dst = file.fileName(); // get the data file’s name
+
file.saveAs(dst); // save the data file to working directory
+
} catch(const digidoc::Exception &e) {
+
printf(" Document %s extraction: FAILED\n", file.fileName().c_str());
+
}
+
}
+
Offers functionality for handling data files and signatures in a container.
Definition: Container.h:49
+
Data file wrapper providing methods for handling signed files or files to be signed in Container.
Definition: DataFile.h:30
+
Base exception class of the digidoc implementation.
Definition: Exception.h:30
+

+Removing signatures and data files

+

In order to remove a signature from DigiDoc document, use the following method:

+
virtual void removeSignature(unsigned int index)=0
+

Data files can be removed from a container only after all of its signatures have been removed. Use the following method to remove a data file from DigiDoc container:

void digidoc::Container::removeDataFile(unsigned int id);
+
virtual void removeDataFile(unsigned int index)=0
+

"Id" parameters of the abovementioned methods represent the signature’s and data file’s sequence numbers in the container. The identifiers are determined when a data file or signature is added to the container, counting starts from zero.

Note
The functionality of modifying files in DigiDoc file format ASiC-S is not supported.
+

+Shutting down the library

+

After finishing work with Libdigidocpp, then the last task is to shut down the library:

+
DIGIDOCPP_EXPORT void terminate()
Definition: Container.cpp:155
+

The termination method closes libraries used in Libdigidocpp implementation and deletes temporary files that may have been written to disk when working with the library.

+

+Exception handling

+

The Libdigidocpp library may throw exceptions that are instances of Exception class (defined in Exception.h source file). The code which uses Libdigidocpp’s API should be wrapped in a try/catch block as follows:

try {
+
+
// code implementation
+
+
} catch(const digidoc::Exception &e) {
+
printf("Exception:%s\n", parseException(e).c_str()); // Sample exception handling method
+
}
+

An Exception instance thrown by the library may contain a stack trace of the hierarchy of exceptions. For example, to parse the whole stack trace, do as follows:

std::string parseException(const digidoc::Exception &e)
+
{
+
std::string result = e.msg() + "\n"; // the error message is retrieved
+
// Iteration through the list of causes:
+
for(const digidoc::Exception &ex: e.causes())
+
result += parseException(ex); // Parsing the exceptions recursively
+
return result; // The error message is returned
+
}
+
std::string msg() const
Definition: Exception.cpp:173
+

+Libdigidocpp utility program

+

The command line utility program digidoc-tool.exe which is included in the Libdigidocpp distribution can be used to test the library or simply use it directly to handle digitally signed documents.

+
Note
The utility program is intended for testing and presentation of sample implementation of the library’s API. The interface of the utility program is not fixed and its long-term stability is not guaranteed.
+

The general format for executing the program is:

> digidoc-tool [command] [options] [input/output file]
+
Definition: Conf.h:29
+

Available optional options on all commands:

+ + + + + + +
--nocolor Disable terminal colors
--loglevel=[0,1,2,3,4] Log level: 0 - none, 1 - error, 2 - warning, 3 - info, 4 - debug
--logfile= File to log, empty to console
+

+Creating and signing a document (local signing)

+

Command "create" can be used to create a new DigiDoc container, add data files, optionally some meta-info about the signer and sign the document. Documents can be created only in BDOC 2.1 format. General form of the command is:

> digidoc-tool create --file=<data-file> <output-bdoc-file>
+

Available options:

+ + + + + + +
--file= Required

Data file(s) to be signed. The option can occur multiple times.

+
Warning
It is recommended not to use special characters in the data file’s name, i.e. it is suggested to only use the characters that are categorized as "unreserved" according to RFC3986 (http://tools.ietf.org/html/rfc3986).
+
--mime= Optional

Specifies the data file's mime-type value. When used then must be written right after the "--file" parameter. If left unspecified then the default mime-type value "application/octet-stream" is used.

+
Warning
Data file’s mime-type value must be formatted as specified in RFC2045, section 5.1 (https://tools.ietf.org/html/rfc2045#section-5.1), i.e. the "type" and "subtype" values must be separated with a forward slash character.
+
--dontsign OptionalDon't sign the newly created container.
+

Additional options for the "create" command are the same as for "sign" command (see Adding signatures).

+

Sample commands for creating and signing DigiDoc files:

+
Sample: creating new BDOC file, adding multiple data files and signing via PKCS#11 driver
+
> digidoc-tool create --file=file1.txt --mime=text/plain --file=file2.pdf --mime=application/pdf --country=Estonia
+
--state=Harjumaa --city=Tallinn --postalCode=12345 --pkcs11 demo-container.bdoc
+
+
Input:
+
--file=file1.txt - a data file to be added to container
+
--mime=text/plain - data file 'file1.txt' mime-type
+
--file=file2.pdf - a data file to be added to container
+
--mime=application/pdf - data file 'file2.pdf' mime-type
+
--country=Estonia - country where the signature is created
+
--state=Harjumaa - state where the signature is created
+
--city=Tallinn - city where the signature is created
+
--postalCode=12345 - postal code of the signature creation location
+
--pkcs11 - signing is done via PKCS#11 module
+
demo-container.bdoc - container to be created (in BDOC 2.1 format)
+
Sample: creating new BDOC file on Windows, adding data file and signing via CNG API
+
> digidoc-tool create --file=file1.txt --cng demo-container.bdoc
+
+
Input:
+
--file=file1.txt - a data file to be added to container
+
--cng - CNG API is used for signing
+
demo-container.bdoc - container to be created (in BDOC 2.1 format)
+
Sample: creating new BDOC file on Windows, adding data file and signing via CNG API, dialog windows for certificate selection and PIN insertion are not displayed
+
> digidoc-tool create --file=file1.txt --cng --selectFirst --pin=01497 demo-container.bdoc
+
+
Input:
+
--file=file1.txt - a data file to be added to container
+
--cng - CNG API is used for signing
+
--selectFirst - the first signing certificate in store is used for signing
+
--pin=01497 - PIN code (PIN2 in case of Estonian ID cards)
+
demo-container.bdoc - container to be created (in BDOC 2.1 format)
+

+Creating and signing multiple documents

+

Takes folder as argument folder/content/to/sign and sign them separate containers. For additional options look sign command.

+

+Add additional files to container

+

Adding additional files to existing unsigned container. Available options are –file and –mime look create command for info.

+

+Creating and signing a document (external signing, e.g. in browser)

+

Command "websign" can be used to create a new DigiDoc container, add data files, optionally some meta-info about the signer and sign the document. Documents can be created only in BDOC 2.1 format. External signing use case may be used when signing is done in web applications, the communication with the signer's token and signing the hash is done via a web browser's signing module (plug-in or extension). See also https://github.com/open-eid/hwcrypto.js for implementing signing in browser environment.

+

External signing process with websign command is as follows:

    +
  1. After executing the websign command, the utility program outputs the value of hash to be signed (in HEX) to console and waits until user enters the respective signature value
  2. +
  3. Send the hash to be signed to the signing token (e.g. by using the web signing demo page at https://open-eid.github.io/hwcrypto.js/sign.html)
  4. +
  5. Conduct signing, enter PIN2, retireve the signed hash (signature value) from the signing token
  6. +
  7. Enter the signature value (also in HEX) to the console
  8. +
  9. Utility program continues with signing process and outputs the signed container
  10. +
+

General form of the command is:

> digidoc-tool websign --cert=<signer-certificate> --file=<data-file> <output-bdoc-file>
+

Available options:

+ + + + + + +
--cert= RequiredSigner's certificate, in PEM format.
--file= RequiredData file(s) to be signed. The option can occur multiple times.
--mime= OptionalSpecifies the data file's mime-type value. When used then must be written right after the "--file" parameter. If left unspecified then the default mime-type value "application/octet-stream" is used.
+

Additional options for the "websign" command are the same as for "sign" command (see Adding signatures).

+

Sample command for creating and external signing of BDOC files:

+
Sample: creating new BDOC-TS file, specifying signers certificate, adding data files and other meta-data and calculating the RSA signature value in browser
+
> digidoc-tool websign --cert=signer.cer --file=file1.txt --file=file2.pdf --country=Estonia --state=Harjumaa --city=Tallinn --postalCode=12345 --profile=time-stamp demo-container.bdoc
+
+
Input:
+
--cert=signer.cer - signers certificate
+
--file=file1.txt - a data file to be added to container
+
--file=file2.txt - a data file to be added to container
+
--profile=time-stamp - profile of the signature
+
--country=Estonia - country where the signature is created
+
--state=Harjumaa - state where the signature is created
+
--city=Tallinn - city where the signature is created
+
--postalCode=12345 - postal code of the signature creation location
+
demo-container.bdoc - container to be created (in BDOC 2.1 format)
+

+Opening document, validating signatures and extracting data files

+

Command "open" enables to read in an existing DigiDoc document, print out a list of its contents and validate signatures. By specifying the additional option –extractaAll, then the data files are extracted from the container and stored on the disk. All DigiDoc file formats are supported with this command (except of BDOC1.0). General form of the command is:

> digidoc-tool open <input-container-file>
+

Available options:

+ + + + + + + + + + +
--extractAll OptionalIf set, then all of the input container’s data files are extracted and written to disk without validating signatures. If an output directory is not specified with the value of this parameter then the extracted files are written to the same directory where the input file is located.
–validateOnExtract OptionalIf set, then validates container before extracting files.
--policy=(POLv1,POLv2) Optional

Signature Validation Policy

+

Default POLv2

+

http://open-eid.github.io/SiVa/siva/appendix/validation_policy/

+
--offline Optionalopen container offline (eg. Don't send to SiVa)

--warnings=

+

(ignore, warning, error)

+
OptionalEnables to choose the displaying of validation warnings (if present) of the file being opened. Can be used to test the warnings system of the utility program (see also "Validation status VALID WITH WARNINGS"). The options include:
    +
  • warning – the default value used. The minor technical errors that are considered as warnings, are printed out as warnings.
  • +
  • error – the errors that are otherwise considered as warnings (by the utility program), are printed out as errors.
  • +
  • ignore – the errors that are otherwise considered as warnings (by the utility program), are not printed out. If there are any other errors present then these are treated as usual.
  • +
+
+

Output of the default command contains the following data of the container:

Container file: <container’s file name>
+
Container type: <container’s mime-type>
+
Documents (<number of data files in container>):
+
Document (<data file’s mime-type>): <file’s name> (<file’s size> bytes)
+
Signatures (<number of signatures in container>):
+
Signature <signature’s sequence number> (<signature’s profile>):
+
Validation: <signature validation result: OK/FAILED>
+
EPES policy: urn:oid: <signature policy identifier OID>
+
SPUri: <URL to the BDOC 2.1 specification document>
+
Signature method: <signature method URI>
+
Signing time: <signing time according to computer’s settings (not the official signing time)>
+
Signing cert: <subject CN field’s value>
+
Signed by: <subject CN field’s value>
+
Produced At: <time of OCSP response’s issuance, i.e. official signing time>
+
OCSP Responder: <OCSP responder certificate CN field’s value>
+
Message imprint (<length in bytes>): <OCSP responses nonce field’s or TSA messageImprint value (has to correspond to the &lt;SignatureValue&gt; element’s hash)>
+
TS: <TSA certificate CN field’s value>
+
TS time: <time of TSA issuance, i.e. official signing time>
+
TSA: <archive TSA certificate CN field’s value>
+
TSA time: <time of archive TSA issuance, i.e. official signing time>
+
Warnings: <possible validation related warnings (see explanation below)>
+
Note
By default, if the signature validation process discovered errors that are regarded as minor technical errors in digidoc-tool.cpp utility program then the document is considered as VALID WITH WARNINGS, the errors are printed out as warnings to the end user. See also chapter Determining the validation status.
+

Sample commands for validating signatures and extracting data files:

Sample: opening BDOC container, listing its contents and validating signatures
+
> digidoc-tool open demo-container.bdoc
+
+
Input:
+
demo-container.bdoc - input DigiDoc file which contents are listed and signatures validated
+
+
Output:
+
Container type: application/vnd.etsi.asic-e+zip
+
Documents (2):
+
Document (application/octet-stream): file1.txt (434 bytes)
+
Document (application/octet-stream): file2.pdf (476841 bytes)
+
Signatures (1):
+
Signature 0 (EPES/time-mark):
+
Validation: OK
+
EPES policy: urn:oid:1.3.6.1.4.1.10015.1000.3.2.1
+
SPUri: https://www.skidsolutions.eu/repository/bdoc-spec21.pdf
+
Signature method: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
+
Signing time: 2013-03-13T08:48:13Z
+
Signing cert: MÄNNIK,MARI-LIIS,47101010033
+
Signed by: MÄNNIK,MARI-LIIS,47101010033
+
Produced At: 2013-05-14T23:41:20Z
+
OCSP Responder: TEST of SK OCSP RESPONDER 2011
+
Message imprint (51): 30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 10 35 D7 45 F1 42 C1 0C 4D 96 EA 1A 13 C4 34 28 B0 8A 0A 07 47 AA 96 72 0D 3B 1C C9 02 D0 4B 15
+
TS:
+
TS time:
+
TSA:
+
TSA time:
+
Sample: opening BDOC container, listing its contents and validating signatures (warnings are displayed as SHA-1 hash function is used in a BDOC file)
+
> digidoc-tool open weak-sha.bdoc
+
+
Input:
+
weak-sha.bdoc - input BDOC 2.1 file which contents are listed and signatures validated
+
+
Output:
+
Container type: application/vnd.etsi.asic-e+zip
+
Documents (1):
+
Document (application/octet-stream): test.txt (314 bytes)
+
Signatures (1):
+
Signature 0 (EPES/time-mark):
+
Validation: OK
+
EPES policy: urn:oid:1.3.6.1.4.1.10015.1000.3.2.1
+
SPUri: https://www.skidsolutions.eu/repository/bdoc-spec21.pdf
+
Signature method: http://www.w3.org/2000/09/xmldsig#rsa-sha1
+
Signing time: 2012-11-13T11:04:32Z
+
Signing cert: MÄNNIK,MARI-LIIS,47101010033
+
Signed by: MÄNNIK,MARI-LIIS,47101010033
+
Produced At: 2012-11-13T11:04:45Z
+
OCSP Responder: TEST of SK OCSP RESPONDER 2011
+
Message imprint (51): 30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 10 35 D7 45 F1 42 C1 0C 4D 96 EA 1A 13 C4 34 28 B0 8A 0A 07 47 AA 96 72 0D 3B 1C C9 02 D0 4B 15
+
TS:
+
TS time:
+
TSA:
+
TSA time:
+
Warnings: RefereneceDigestWeak, SignatureDigestWeak,
+
Sample: opening container, extracting its data files
+
> digidoc-tool open --extractAll demo-container.bdoc
+
+
Input:
+
--extractAll=demo - Extract all files into current folder
+
demo-container.bdoc - input DigiDoc file that is extracted
+
+
Output:
+
Extracting documents:
+
Document(application/octet-stream) extracted to file1.txt (434 bytes)
+
Document(application/octet-stream) extracted to file2.pdf (476841 bytes)
+
Sample: opening container, extracting its data files to a specific directory
+
> digidoc-tool open --extractAll=demo demo-container.bdoc
+
+
Input:
+
--extractAll=demo - Extract all files into folder "demo"
+
demo-container.bdoc - input DigiDoc file that is extracted
+
+
Output:
+
Extracting documents:
+
Document(application/octet-stream) extracted to demo/file1.txt (434 bytes)
+
Document(application/octet-stream) extracted to demo/file2.pdf (476841 bytes)
+

+Adding signatures

+

Command "sign" enables adding signatures to existing DigiDoc containers. The supported DigiDoc document format is BDOC 2.1.

> digidoc-tool sign <modified-digidoc-container>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
--pin= OptionalIf PIN is not provided with this parameter value and (the default) PKCS#11 module is used for signing then the utility program asks for the user to insert PIN code to command line during the program’s execution time.
--profile= Optional

Profile of the signature. Possible values are:

    +
  • TS - a time-stamp and OCSP confirmation will be added to the signature as validation data.
  • +
  • TSA - a time-stamp and OCSP confirmation will be added to the signature as validation data. Additional time-stamp is added for notarize all certificate and revocation info.
  • +
+
Warning
When adding signature to an existing BDOC 2.1 container then the profile of the existing signature should be used for all of the new signatures in the same container.
+
--XAdESEN OptionalUse XAdES EN profile.
--city= OptionalCity where the signature is created.
--street= OptionalstreetAddress of production place in XAdES EN profile.
--state= OptionalState or province where the signature is created.
--postalCode= OptionalPostal code of the place where the signature is created.
--country= OptionalCountry of origin. ISO 3166-type 2-character country codes are used (e.g. EE)
--role= OptionalSigner’s role(s). The option can occur multiple times.
--sha(224,256,384,512) OptionalUsed for testing purposes. Specifies the hash function that is used when calculating digest values. If not specified then SHA-256 is used by default.
--sigsha(224,256,384,512) OptionalUsed for testing purposes. Specifies the hash function that is used for calculating the hash that is being signed. If not specified then SHA-256 is used by default.
--sigpsssha(224,256,384,512) OptionalUsed for testing purposes. With RSA keys RSA-PSS padding is used. Specifies the hash function that is used for calculating the hash that is being signed. If not specified then SHA-256 is used by default. Same as --sigsha* with --rsapss
--rsapkcs15 OptionalOption to change RSA Signature padding (RSA PKCS1.5).
--rsapss OptionalOption to change RSA Signature padding (RSA PSS).
--tsurl OptionalOption to change TS URL.
--dontValidate OptionalDon't validate container on signature creation.
+

Options for specifying module used for accessing the signing token - possible alternatives are PKCS#11, CryptoAPI/CNG and PKCS#12 (for testing purposes). When signing module is not specified then PKCS#11 module is used by default.

+ + + + + + + + + + +
--pkcs11[=] OptionalSigning is done via PKCS#11 module - the default module for singing with smart card in Linux and macOS. When signing via PKCS#11 module then the parameter’s value can be used to specify the path and filename of PKCS#11 driver in your file system. For example, "opensc-pkcs11.dll" in Windows environment and "opensc-pkcs11.so" in Linux and OSX. If the parameter’s value is left unspecified then PKCS#11 driver’s location is looked up from configuration file (see also chap. Configuration parameters).
--cng OptionalSet the parameter to sign via Microsoft CNG API (in Windows environment). If "--pin" parameter’s value is not set then PIN insertion dialog is displayed to the user. Parameter "--cng" may optionally be used along with parameter "--selectFirst".
--selectFirst OptionalAdditional parameter that can optionally be used along with parameter "–cng". When the parameter is set then the first certificate in Windows certificate store is chosen for signature creation. If the parameter is not set then certificate selection dialog window is displayed to user.
--thumbprint OptionalAdditional parameter that can optionally be used along with parameter "–cng". When the parameter is set then the certificate by thumbprint in Windows certificate store is chosen for signature creation. If the parameter is not set then certificate selection dialog window is displayed to user.
--pkcs12= OptionalSigning is done via PKCS#12 module - can be used for testing purposes, currently has been used for testing signature creation with ECC keys. Enables to use a PKCS#12 software token (containing the signing certificate and private key) for signature creation. Note that the created signature is not a valid signature and it is not equal to handwritten signature as the PKCS#12 software token is not considered a secure signature creation device.
+

Sample commands for adding signatures:

Sample: adding a signature via PKCS#11 driver
+
> digidoc-tool sign --pkcs11 demo-container.bdoc
+
+
Input:
+
--pkcs11 - PKCS#11 module is used for signing
+
demo-container.bdoc - container to be modified
+
Sample: adding a signature via CNG API
+
> digidoc-tool sign --cng demo-container.bdoc
+
+
Input:
+
--cng - CNG API is used for signing
+
demo-container.bdoc - container to be modified
+
Sample: adding a signature via CNG API, no dialog windows are displayed
+
> digidoc-tool sign --cng --selectFirst --pin=12345 demo-container.bdoc
+
+
Input:
+
--cng - CNG API is used for signing
+
--selectFirst - the first signing certificate is used for signing
+
--pin=12345 - PIN code (PIN2 in case of Estonian ID cards)
+
demo-container.bdoc - container to be modified
+

+Removing signatures and data files

+

Signatures and data files can be removed from a DigiDoc container with the command "remove". Note that it is possible to remove data files only from an unsigned container (i.e all signatures must be removed before removing data files). The command is supported with DigiDoc formats DIGIDOC-XML 1.3 and BDOC 2.1. General format of the command is:

> digidoc-tool remove --document=<doc-id> --signature=<sig-id> <modified-digidoc-container>
+

Available options:

+ + + + +
--document= OptionalSpecifies the sequence number of the data file that is removed from the container. The sequence numbers are counted from zero.
--signature= OptionalSpecifies the sequence number of the signature that is removed from the container. The sequence numbers are counted from zero.
+

Sample commands for removing signatures and data files:

Sample: removing signature from container
+
> digidoc-tool remove --signature=1 demo-container.bdoc
+
+
Input:
+
--signature=1 - sequence number of the signature that is removed
+
demo-container.bdoc - container to be modified
+
Sample: removing data files from container
+
> digidoc-tool remove --document=0 --document=1 demo-container.bdoc
+
+
Input:
+
--document=0 - sequence number of the data file that is removed
+
--document=1 - sequence number of the data file that is removed
+
demo-container.bdoc - container to be modified
+

+National and cross-border support

+

+TSL list usage in Libdigidocpp

+

In case of BDOC 2.1 documents, Libdigidocpp library uses Trust Service status Lists (TSL) as trust anchors. TSL lists are a standardized way to add support for cross-border trust-service providers, e.g. CA's that issue qualified certificates, OCSP service and time-stamping service providers (see also TSL specification). TSL list is a digitally signed a document in XML format, the list is accompanied with a TSL signing certificate that is used to validate the list's signature.

+

Libdigidocpp library uses the European Commission’s TSL list as the basis of retrieving data of trusted certificates. The European Commission's TSL list is also referred to as List of Trusted Lists (LOTL), meaning that it is central list that contains references to other TSL lists, in this case the national TSL lists of the European Union's member states.

Note
The European Commission's TSL that contains URL's and certificates of the national TSL lists can be downloaded here: https://ec.europa.eu/tools/lotl/eu-lotl.xml
+

Each of the national TSL list contains data (including the certificates) of the trust service providers that are approved in this particular country. Libdigidocpp supports all national TSL lists that are referred to in the LOTL (more than 30 countries).

+

Note that TSL lists are supported since v3.9 of the library. Since v3.10 of the library, TSL lists are the only supported source of trusted certificates (i.e. in case of BDOC 2.1 document format).

+
Note
For information about using test TSL lists with Libdigidocpp library, please refer to https://github.com/open-eid/libdigidocpp/wiki/Using-test-TSL-lists
+

+TSL initialization process

+

TSL lists' initialization process is done during each initialization of the library. By default, the TSL itself and its freshness is checked on-line:

    +
  1. It is checked if LOTL (the master TSL list, tl-mp.xml) is present at the tsl.cache location
  2. +
  3. If there is no such list present in the cache directory and the online updating mechanism is enabled (see Trust anchor/TSL settings, "tsl.autoupdate") then the TSL list is downloaded from the list's URL (https://ec.europa.eu/tools/lotl/eu-lotl.xml) and saved to tsl.cache directory
    Note
    tsl.autoupdate can be disabled but then the TSL list(s) must be manually saved to the tsl.cache location.
    +
    +the TSL lists are not distributed along with the library's installation package, meaning that during the first initialization of the library, the TSL lists need to be downloaded on-line or must be manually copied to the tsl.cache location.
    +
  4. +
  5. If there is an existing LOTL in the tsl.cache location and the tsl.onlineDigest check is enabled (see Trust anchor/TSL settings, "tsl.onlineDigest") then the freshness of the TSL list is checked based on the list's SHA-256 hash value:
      +
    • The existing TSL list’s hash is calculated over the binary representation of the list
    • +
    • The officially published hash value is downloaded (from the same address as the TSL's URL but with .sha2 extension)
    • +
    • The hash of existing TSL and the value downloaded on-line are compared
        +
      • If values are different then a new version of the TSL list is downloaded
      • +
      • If the hash values are the same or it was not possible to download the hash value from external URL then new version of the TSL is not downloaded. TSL parsing/validation process is continued.
      • +
      +
    • +
    +
  6. +
  7. The LOTL is validated:
      +
    • the list's validity is checked in by comparing the user's computer time with the list's <NextUpdate> value.
        +
      • if the list is not valid then the library attempts to download a new list from the list's URL
      • +
      +
    • +
    • the list's signature is validated by using its signing certificate
    • +
    +
  8. +
  9. National TSLs' data (URLs and certificates) are read from the LOTL.
  10. +
  11. For each of the national TSL list, the following is done:
      +
    • step 1-3 of the current process is repeated with the national TSL list
    • +
    • appropriate trust services are found from the national TSL lists, their certificates are added to the library's internal trusted certificates' store.
    • +
    +
  12. +
+

+Identity tokens in Libdigidocpp

+

Libdigidocpp library supports the following identity tokens:

    +
  • Estonian national eID card and Digi-ID
  • +
+

The library is also tested with the following tokens (indirectly via the DigiDoc desktop application that uses Libdigidocpp as a base component):

    +
  • Finnish national eID card
  • +
  • Latvian national eID card
  • +
  • Lithuanian national eID card
  • +
  • Aladdin eToken USB authenticator with SK issued certificates for organizations
  • +
+

+Interoperability testing

+

+DigiDoc framework cross-usability tests

+

Automated cross-usability tests of digitally signed and encrypted files are periodically carried out between different DigiDoc software libraries:

    +
  • Cross-usability of BDOC 2.1 (.bdoc or .asice) file format with TM (time-mark) profile is tested between DigiDoc4j and Libdigidocpp libraries.
  • +
  • Cross-usability of BDOC 2.1 (.bdoc or .asice) file format with Ts (time-stamp) profile is tested between DigiDoc4j and Libdigidocpp libraries.
  • +
+

The interoperability tests are executed through the command line utility tools of the software libraries (for example, in case of Libdigidocpp library, the utility program which is described in chapter Libdigidocpp utility program of the current document).

+

+Libdigidocpp implementation notes

+

The following section describes properties of a BDOC 2.1 file that are not strictly defined in the BDOC 2.1 specification BDOC2.1:2013 but are used in Libdigidocpp library’s implementation (and also in other DigiDoc software libraries) of the file format.

+

+Digital signature related notes

+
    +
  1. The supported BDOC 2.1 signature profiles are BDOC-TM (XAdES-EPES signature with time-mark) and BDOC-TS (XAdES-BES signature with time-stamp and OCSP confirmation). The basic BDOC-TM profile is XAdES-EPES as BDOC 2.1 specification requires that <SignaturePolicyIdentifier> element is present (BDOC2.1:2013, chap. 5.2). The basic BDOC-TS profile is XAdES-BES as the <SignaturePolicyIdentifier> element is not supported in case of BDOC 2.1 signatures with time-stamps. It is expected that either a time-mark or time-stamp and OCSP confirmation have been added to the signature as according to BDOC 2.1 specification (BDOC2.1:2013, chap. 6) a signature is not considered complete or valid without validation data from external services (i.e. a time-mark or time-stamp).
  2. +
  3. For better international compatibility reasons, the library also accepts BDOC-TS signatures that are based on XAdES-EPES basic profile during validation time (i.e. the signature contains <SignaturePolicyIdentifier> element and a time-stamp).
  4. +
  5. One time-mark is allowed for each signature in case of TM profile; one time-stamp and one OCSP confirmation are allowed for each signature in case of TS profile (due to security reasons and in order to maintain testing efficiency).
  6. +
  7. In case of BDOC signature with time-mark, the OCSP confirmation's (i.e. time-mark's) nonce field’s value is calculated as follows:
      +
    • the contents of <SignatureValue> element (i.e. the value without XML tags) is taken and decoded from base64 encoding;
    • +
    • digest of the value found in the previous step is calculated by using SHA-256 algorithm.;
    • +
    • the digest value found in the previous step and the digest algorithm that was used are transformed as defined by the following ASN.1 structure:
      TBSDocumentDigest ::= SEQUENCE {
      +
      algorithm AlgorithmIdentifier,
      +
      digest OCTET STRING
      +
      }
      +
    • +
    • the ASN.1 block value produced in the previous step is included in the OCSP request’s "nonce" field and must be present in the respective field of the OCSP response.
    • +
    +
  8. +
  9. In case of signing with ECC keys (by using ECDSA algorithm), concatenation method is used for creating signature value.
  10. +
  11. In case of BDOC 2.1 documents, SHA-256 hash function is used by default when calculating data file digests and the digest that is signed.
  12. +
  13. When a hash function that is weaker than SHA-256 (or SHA-224 in the special case with pre-2011 ID-cards) has been used then a warning message about weak digest method is produced to the user. It is recommended to regard the error as a validation warning (identically to DigiDoc desktop application and digidoc-tool.cpp utility program).
  14. +
  15. During signature creation, it is checked that there is only one <ClaimedRole> element in the signature, which contains the signer’s role and optionally the signer’s resolution. If the <ClaimedRole> element contains both role and resolution then they must be separated with a slash mark, e.g. "role / resolution". Note that when setting the resolution value then role must also be specified.
  16. +
  17. The signature policy document’s hash value in <SigPolicyHash> element is checked during validation process (even though it is not mandatory according to BDOC 2.1 specification BDOC2.1:2013, chap. 5.2). The hash value must correspond to the hash value of the document that is located at https://www.skidsolutions.eu/repository/bdoc-spec20.pdf.
  18. +
  19. <Transforms> element is allowed in the signature since v3.10 of the library for interoperability purposes. The transformation algorithms are not applied during signature validation.
  20. +
  21. XML namespace prefixes are used in case of all XML elements (e.g. "asic:", "ds:", "xades:").
  22. +
  23. The data file’s MIME type that is used in case of Libdigidocpp’s utility program is always "application/octet-stream" for testing purposes.
  24. +
  25. The <ds:Signature> element’s Id attribute value is set to "S<seq_no>" during signature creation where sequence numbers are counted from zero. Other Id values that are used in the sub-elements of the <ds:Signature> element contain the signature’s Id value as a prefix. During verification, different Id attribute values are also supported but are not tested periodically.
  26. +
  27. signatures*.xml file's XML structure validation is done on the basis of XAdES XML Schema (XAdES), however, there are additional checks to determine any unsupported elements that are allowed by the XAdES specification but are not allowed by the BDOC 2.1 specification (BDOC). The unsupported elements are CounterSignature, CompleteCertificateRefs, CompleteRevocationRefs, AttributeCertificateRefs, AttributeRevocationRefs, SigAndRefsTimeStamp, RefsOnlyTimeStamp, AttrAuthoritiesCertValues, AttributeRevocationValues, CommitmentTypeIndicationType, AllDataObjectsTimeStamp, IndividualDataObjectsTimeStampType.
  28. +
  29. Special characters in URI attribute values are handled according to RFC3986 (since v3.9 of the library): the characters are percent-encoded, except of unreserved characters and delimiters. Both percent-encoded and non-percent-encoded characters are supported during signature's validation. Note that as a result, the files that contain special characters in URI values and have been created with v3.9 might not be compatible with v3.8 of the library.
  30. +
  31. When validating a BDOC-TS document then the difference between OCSP validity confirmation's production time (producedAt field) and time-stamp's production time (getTime field) is checked. An exception is thrown if the OCSP confirmation's time is earlier than time-stamp's time. If the OCSP confirmation's time is later than time-stamp's time by more than 15 minutes then a warning is returned. If the difference is more than 24 hours then exception is thrown.
  32. +
  33. During BDOC signature creation, it is checked that the difference between the signer's computer time and the OCSP response's production time (producedAt value) would not exceed 15 minutes. If the difference exceeds 15 minutes then an exception is returned and signing is cancelled.
  34. +
  35. In case of BDOC-TS signature, the time-stamping authority's (TSA's) certificate is not added to the <CertificateValues> element (differently from the requirements of BDOC specification, chap 6) to avoid duplication of the certificate in the signature. It is expected that the TSA certificate is present in the time-stamp token itself.
  36. +
+

+Certificate related notes

+
    +
  1. Valid signatures (qualified electronic signatures) can be created with a certificate that has "Non-repudiation" value (also referred to as "Content Commitment") in its "Key usage" field. The requirement is based on the following sources: +
  2. +
  3. Signature can be created with a certificate that doesn’t have "Non-repudiation" value in its "Key-Usage" field when specific parameters have been set but validation of such signature will produce a respective error message and the signature is not considered as a qualified electronic signature.
  4. +
  5. During signature validation, it is checked that the validity periods of the signer’s certificate and all the certificates in its CA chain include the signature creation time (value of the producedAt field in OCSP response).
  6. +
+

+Container related notes

+
    +
  1. BDOC 2.1 files are created with .bdoc file extension. Extensions .asice and .sce are supported and recognized only when reading in an existing BDOC 2.1 file which has the respective extension value.
  2. +
  3. Signatures are stored in META-INF/signatures*.xml files where ‘*’ is a sequence number, counting is started from zero.
  4. +
  5. There can be only one signature in one signatures*.xml file due to BDOC format’s legacy issues. Multiple signatures in one signatures*.xml file is not supported in order to maintain testing efficiency. The <ds:Signature> element’s Id attribute values in different signatures*.xml files are generated in the form of "S<seq_no>", the sequence numbers are always unique within one BDOC container.
  6. +
  7. It is not allowed to add two data files with the same name to the container as the signed data file must be uniquely identifiable in the container.
  8. +
  9. All data files in the container must be signed. All signatures in the container must sign all of the data files.
  10. +
  11. The META-INF/manifest.xml file’s version attribute value is "1.0" (instead of "1.2") as the results of ASiC plug-tests event shows that version 1.0 is used only. The requirement of the OpenDocument version attribute value comes from OpenDocument standard which is referred to in ASiC standard.
  12. +
  13. Relative file paths are used, for example "META-INF/signatures*.xml" and "document.txt" instead of "/META-INF/signatures*.xml" and "/document.txt" to ensure better interoperability with third party applications when validating signatures.
  14. +
  15. The ZIP container’s comment field contains version number of the library that was used for creating the file. The value can be useful, for example, when trying to determine the origin of an erroneous file.
  16. +
  17. "mimetype" file is not compressed in the BDOC 2.1 file’s ZIP container as the results of ASiC plug-tests event shows that this solution is most widely used.
  18. +
  19. When a data file is added to the container then the modification time of the file (as it is registered in the file system) is preserved also in the ZIP container file. There is an exception if the file is added by reading it from an input stream - in that case, the current timestamp value is registered as "last modified" time in the ZIP file.
  20. +
+
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..2fe2214f2 --- /dev/null +++ b/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..5fb1c5622 --- /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:"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_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"x",url:"functions_func_x.html#index_x"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html",children:[ +{text:"c",url:"functions_eval.html#index_c"}, +{text:"d",url:"functions_eval.html#index_d"}, +{text:"e",url:"functions_eval.html#index_e"}, +{text:"g",url:"functions_eval.html#index_g"}, +{text:"h",url:"functions_eval.html#index_h"}, +{text:"i",url:"functions_eval.html#index_i"}, +{text:"k",url:"functions_eval.html#index_k"}, +{text:"m",url:"functions_eval.html#index_m"}, +{text:"n",url:"functions_eval.html#index_n"}, +{text:"o",url:"functions_eval.html#index_o"}, +{text:"p",url:"functions_eval.html#index_p"}, +{text:"r",url:"functions_eval.html#index_r"}, +{text:"s",url:"functions_eval.html#index_s"}, +{text:"t",url:"functions_eval.html#index_t"}, +{text:"u",url:"functions_eval.html#index_u"}, +{text:"v",url:"functions_eval.html#index_v"}, +{text:"w",url:"functions_eval.html#index_w"}]}]}]}]} diff --git a/namespacedigidoc.html b/namespacedigidoc.html new file mode 100644 index 000000000..04b3cd40a --- /dev/null +++ b/namespacedigidoc.html @@ -0,0 +1,513 @@ + + + + + + + +libdigidocpp: digidoc Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  Conf
     Configuration class which can reimplemented and virtual methods overloaded. More...
     
    class  ConfV2
     Verison 2 of configuration class to add additonial parameters. More...
     
    class  ConfV3
     Verison 3 of configuration class to add additonial parameters. More...
     
    class  ConfV4
     Verison 4 of configuration class to add additonial parameters. More...
     
    class  ConfV5
     Verison 5 of configuration class to add additonial parameters. More...
     
    struct  ContainerOpenCB
     Used on container open to provide additional info. More...
     
    class  Container
     Offers functionality for handling data files and signatures in a container. More...
     
    class  PKCS11Signer
     Implements Signer interface for ID-Cards, which support PKCS#11 protocol. More...
     
    class  PKCS12Signer
     Implements Signer interface for PKCS#12 files. More...
     
    class  Signer
     Signer interface. Provides interface for signing documents. More...
     
    class  WinSigner
     Implements Signer interface for Windows Crypto backends. More...
     
    class  X509Cert
     Wrapper for OpenSSL X509 certificate structure. More...
     
    class  DataFile
     Data file wrapper providing methods for handling signed files or files to be signed in Container. More...
     
    class  DataFilePrivate
     
    class  Exception
     Base exception class of the digidoc implementation. More...
     
    class  Signature
     Signature interface. Provides interface for handling a signature and the corresponding OCSP response properties. More...
     
    class  XmlConf
     XML Configuration class. More...
     
    class  XmlConfV2
     Version 2 of XML Configuration class. More...
     
    class  XmlConfV3
     Version 3 of XML Configuration class. More...
     
    class  XmlConfV4
     Version 4 of XML Configuration class. More...
     
    class  XmlConfV5
     Version 5 of XML Configuration class. More...
     
    struct  unique_xml
     
    struct  unique_xml< void(T *)>
     
    struct  XMLElem
     
    struct  XMLName
     
    struct  XMLNode
     
    struct  XMLDocument
     
    + + + + + + + + + + +

    +Typedefs

    using ConfCurrent = ConfV5
     
    using initCallBack = void(*)(const Exception *e)
     
    using XmlConfCurrent = XmlConfV5
     
    template<typename T >
    using unique_xml_t = typename unique_xml< T >::type
     
    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int initXmlSecCallback ()
     
    DIGIDOCPP_EXPORT std::string appInfo ()
     
    DIGIDOCPP_EXPORT void initialize (const std::string &appInfo="libdigidocpp", initCallBack callBack=nullptr)
     
    DIGIDOCPP_EXPORT void initialize (const std::string &appInfo, const std::string &userAgent, initCallBack callBack=nullptr)
     
    DIGIDOCPP_EXPORT void terminate ()
     
    DIGIDOCPP_EXPORT std::string userAgent ()
     
    DIGIDOCPP_EXPORT std::string version ()
     
    template<class T , typename D >
    constexpr std::unique_ptr< T, D > make_unique_ptr (T *p, D d) noexcept
     
    static std::string to_base64 (const std::vector< unsigned char > &data)
     
    +

    Typedef Documentation

    + +

    ◆ ConfCurrent

    + +
    +
    +

    Reference to latest ConfV5 class.

    + +
    +
    + +

    ◆ initCallBack

    + +
    +
    + + + + +
    initCallBack
    +
    +
    Parameters
    + + +
    edigidoc::Exception that occured on initialization
    +
    +
    +

    Used in digidoc::initialize to notfiy if the initalization has completed

    + +
    +
    + +

    ◆ unique_xml_t

    + +
    +
    +
    +template<typename T >
    + + + + +
    using digidoc::unique_xml_t = typedef typename unique_xml<T>::type
    +
    + +
    +
    + +

    ◆ XmlConfCurrent

    + +
    +
    +

    Reference to latest XmlConfV5 class

    + +
    +
    +

    Function Documentation

    + +

    ◆ appInfo()

    + +
    +
    + + + + + + + +
    string digidoc::appInfo ()
    +
    +

    Returns registered application name

    + +

    Referenced by initialize().

    + +
    +
    + +

    ◆ initialize() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void digidoc::initialize (const std::string & appInfo,
    const std::string & userAgent,
    initCallBack callBack = nullptr 
    )
    +
    +

    Libdigidocpp’s initialization method: initializes dependent libraries, loads configuration settings from default configuration files (see Configuring Libdigidocpp) and initializes certificate store using TSL lists

    +
    Parameters
    + + + + +
    appInfoApplication name for container comments
    userAgentApplication info for user agent string
    callBackCallback when background thread TSL loading is completed
    +
    +
    + +

    References appInfo(), digidoc::Conf::init(), initXmlSecCallback(), digidoc::Conf::instance(), and userAgent().

    + +
    +
    + +

    ◆ initialize() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void digidoc::initialize (const std::string & appInfo = "libdigidocpp",
    initCallBack callBack = nullptr 
    )
    +
    +

    Libdigidocpp’s initialization method: initializes dependent libraries, loads configuration settings from default configuration files (see Configuring Libdigidocpp) and initializes certificate store using TSL lists

    +
    Parameters
    + + + +
    appInfoApplication name for user agent string and container comments
    callBackCallback when background thread TSL loading is completed
    +
    +
    + +

    References appInfo().

    + +
    +
    + +

    ◆ initXmlSecCallback()

    + +
    +
    + + + + + + + +
    int digidoc::initXmlSecCallback ()
    +
    + +

    Referenced by initialize().

    + +
    +
    + +

    ◆ make_unique_ptr()

    + +
    +
    +
    +template<class T , typename D >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr std::unique_ptr<T, D> digidoc::make_unique_ptr (T * p,
    d 
    )
    +
    +constexprnoexcept
    +
    +
    + +

    ◆ terminate()

    + +
    +
    + + + + + + + +
    void digidoc::terminate ()
    +
    +

    The termination method closes libraries used in Libdigidocpp implementation and deletes temporary files that may have been written to disk when working with the library.

    + +

    References digidoc::Conf::init().

    + +
    +
    + +

    ◆ to_base64()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static std::string digidoc::to_base64 (const std::vector< unsigned char > & data)
    +
    +static
    +
    + +

    References make_unique_ptr().

    + +

    Referenced by digidoc::XMLNode::operator=().

    + +
    +
    + +

    ◆ userAgent()

    + +
    +
    + + + + + + + +
    string digidoc::userAgent ()
    +
    +

    Returns user-agent info

    + +

    Referenced by initialize().

    + +
    +
    + +

    ◆ version()

    + +
    +
    + + + + + + + +
    string digidoc::version ()
    +
    +

    Returns libdigidocpp library version

    + +
    +
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..691809501 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,111 @@ + + + + + + + +libdigidocpp: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..f59a35891 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,99 @@ + + + + + + + +libdigidocpp: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..76b910634 --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,87 @@ + + + + + + + +libdigidocpp: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + 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_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@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libdigidocpp: Related Pages + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 000000000..e1ad0fe3b --- /dev/null +++ b/resize.js @@ -0,0 +1,140 @@ +/* + @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() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/schemas.svg b/schemas.svg new file mode 100644 index 000000000..48a4c042b --- /dev/null +++ b/schemas.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + ASiC Schema + + + + + + + + + + + + + OpenDocument + Schema + + + + + + + + + + + + + XAdES Schema + + + + + + + + + + + + + XAdESv141 + Schema + + + + + + + + + + + + + XML-DSig + Schema + + + + + + + + + + + + + TSL Schema + + + + + + + + + + + + + + + + + + + + + + + + + + + + (Archive time-stamp) + + + (TSL) + + + + + + + BDOC 2.1 + document + + + + + + + + + + + + diff --git a/security.svg b/security.svg new file mode 100644 index 000000000..328f09c8e --- /dev/null +++ b/security.svg @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OCSP + + + CA + database + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'I just signed the + document using + this certificate' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Doc, Cert + + + + + + + + + + + + + + + + + + + + + Secure Log + + + 'When I saw this + signed document, the + corresponding certificate + was valid' + + + (Doc, Cert, time) ok + + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{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/structdigidoc_1_1ContainerOpenCB-members.html b/structdigidoc_1_1ContainerOpenCB-members.html new file mode 100644 index 000000000..bd3eac178 --- /dev/null +++ b/structdigidoc_1_1ContainerOpenCB-members.html @@ -0,0 +1,82 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::ContainerOpenCB Member List
    +
    +
    + +

    This is the complete list of members for digidoc::ContainerOpenCB, including all inherited members.

    + + + +
    validateOnline() constdigidoc::ContainerOpenCBinlinevirtual
    ~ContainerOpenCB()=defaultdigidoc::ContainerOpenCBvirtual
    +
    + + + + diff --git a/structdigidoc_1_1ContainerOpenCB.html b/structdigidoc_1_1ContainerOpenCB.html new file mode 100644 index 000000000..972d77bb2 --- /dev/null +++ b/structdigidoc_1_1ContainerOpenCB.html @@ -0,0 +1,155 @@ + + + + + + + +libdigidocpp: digidoc::ContainerOpenCB Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc::ContainerOpenCB Struct Reference
    +
    +
    + +

    Used on container open to provide additional info. + More...

    + +

    #include <Container.h>

    + + + + + + +

    +Public Member Functions

    virtual ~ContainerOpenCB ()=default
     
    virtual bool validateOnline () const
     
    +

    Detailed Description

    +

    Used on container open to provide additional info.

    +

    ContainerOpenCB struct is used on digidoc::Container::openPtr(const std::string &path, digidoc::ContainerOpenCB *cb) when additional info is requested.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ~ContainerOpenCB()

    + +
    +
    + + + + + +
    + + + + + + + +
    digidoc::ContainerOpenCB::~ContainerOpenCB ()
    +
    +virtualdefault
    +
    +

    Releases resources.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ validateOnline()

    + +
    +
    + + + + + +
    + + + + + + + +
    digidoc::ContainerOpenCB::validateOnline () const
    +
    +inlinevirtual
    +
    +

    Called when requested access online resources.

    + +
    +
    +
    The documentation for this struct was generated from the following files:
      +
    • Container.h
    • +
    • Container.cpp
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1ContainerOpenCB.js b/structdigidoc_1_1ContainerOpenCB.js new file mode 100644 index 000000000..3bad5feb3 --- /dev/null +++ b/structdigidoc_1_1ContainerOpenCB.js @@ -0,0 +1,5 @@ +var structdigidoc_1_1ContainerOpenCB = +[ + [ "~ContainerOpenCB", "structdigidoc_1_1ContainerOpenCB.html#aa4fa7a8d22e47f4fde32e34008b096ee", null ], + [ "validateOnline", "structdigidoc_1_1ContainerOpenCB.html#a0b17c06cfd390cdcc125d520c5c5a0ef", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLDocument-members.html b/structdigidoc_1_1XMLDocument-members.html new file mode 100644 index 000000000..aa8987c53 --- /dev/null +++ b/structdigidoc_1_1XMLDocument-members.html @@ -0,0 +1,130 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::XMLDocument Member List
    +
    +
    + +

    This is the complete list of members for digidoc::XMLDocument, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addNS(sv href, sv prefix={}) const noexceptdigidoc::XMLNodeinline
    begin() const noexceptdigidoc::XMLNodeinline
    C14D_ID_1_0digidoc::XMLDocumentstatic
    C14D_ID_1_0_COMdigidoc::XMLDocumentstatic
    C14D_ID_1_0_EXCdigidoc::XMLDocumentstatic
    C14D_ID_1_0_EXC_COMdigidoc::XMLDocumentstatic
    C14D_ID_1_1digidoc::XMLDocumentstatic
    C14D_ID_1_1_COMdigidoc::XMLDocumentstatic
    c14n(Digest *digest, std::string_view algo, XMLNode node)digidoc::XMLDocumentinline
    children(P p, xmlElementType type=XML_ELEMENT_NODE) const noexceptdigidoc::XMLElem< xmlNode >inline
    create(std::string_view name={}, std::string_view href={}, std::string_view prefix={}) noexceptdigidoc::XMLDocumentinlinestatic
    ddigidoc::XMLElem< xmlNode >
    end() const noexceptdigidoc::XMLNodeinline
    erase(iterator pos) noexceptdigidoc::XMLNodeinlinestatic
    find(C n, xmlElementType type) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    find(C n, sv name, sv ns) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    name() const noexceptdigidoc::XMLElem< xmlNode >inline
    ns() const noexceptdigidoc::XMLElem< xmlNode >inline
    openStream(std::istream &is, const XMLName &name={}, bool hugeFile=false)digidoc::XMLDocumentinlinestatic
    operator bool() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator std::vector< unsigned char >()digidoc::XMLNodeinline
    operator sv() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator+(const XMLName &name) const noexceptdigidoc::XMLNodeinline
    operator+(const char *name) const noexceptdigidoc::XMLNodeinline
    operator+(int n) noexceptdigidoc::XMLNodeinline
    operator++() noexceptdigidoc::XMLElem< xmlNode >inline
    operator++(int) noexceptdigidoc::XMLElem< xmlNode >inline
    operator/(sv name) const noexceptdigidoc::XMLNodeinline
    operator/(const XMLName &name) const noexceptdigidoc::XMLNodeinline
    operator=(sv text) noexceptdigidoc::XMLNodeinline
    operator=(const std::vector< unsigned char > &data)digidoc::XMLNodeinline
    pcxmlChar typedefdigidoc::XMLElem< xmlNode >
    pointer typedefdigidoc::XMLElem< xmlNode >
    property(sv name, sv ns={}) const noexceptdigidoc::XMLNodeinline
    safe(C c, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    save(std::string_view path) const noexceptdigidoc::XMLDocumentinline
    save(std::ostream &os) const noexceptdigidoc::XMLDocumentinline
    schemaValidationError(void *ctx, const char *msg,...) noexceptdigidoc::XMLDocumentinlinestatic
    schemaValidationWarning(void *, const char *msg,...) noexceptdigidoc::XMLDocumentinlinestatic
    searchNS(sv ns) const noexceptdigidoc::XMLNodeinline
    setProperty(sv name, sv value, sv ns) const noexceptdigidoc::XMLNodeinline
    setProperty(sv name, sv value, xmlNsPtr ns={}) const noexceptdigidoc::XMLNodeinline
    sv typedefdigidoc::XMLElem< xmlNode >
    to_string_view(C d, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    validateSchema(const std::string &schemaPath) constdigidoc::XMLDocumentinline
    value_type typedefdigidoc::XMLElem< xmlNode >
    verifySignature(XMLNode signature, [[maybe_unused]] Exception *e={}) noexceptdigidoc::XMLDocumentinlinestatic
    whitespacedigidoc::XMLElem< xmlNode >static
    XMLDocument(element_type *ptr={}, const XMLName &n={}) noexceptdigidoc::XMLDocumentinline
    XMLDocument(std::string_view path, const XMLName &n={}) noexceptdigidoc::XMLDocumentinline
    +
    + + + + diff --git a/structdigidoc_1_1XMLDocument.html b/structdigidoc_1_1XMLDocument.html new file mode 100644 index 000000000..c37c36311 --- /dev/null +++ b/structdigidoc_1_1XMLDocument.html @@ -0,0 +1,771 @@ + + + + + + + +libdigidocpp: digidoc::XMLDocument Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    + +

    #include <XMLDocument.h>

    +
    +Inheritance diagram for digidoc::XMLDocument:
    +
    +
    + + +digidoc::XMLNode +digidoc::XMLElem< xmlNode > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     XMLDocument (element_type *ptr={}, const XMLName &n={}) noexcept
     
     XMLDocument (std::string_view path, const XMLName &n={}) noexcept
     
    void c14n (Digest *digest, std::string_view algo, XMLNode node)
     
    bool save (std::string_view path) const noexcept
     
    bool save (std::ostream &os) const noexcept
     
    void validateSchema (const std::string &schemaPath) const
     
    - Public Member Functions inherited from digidoc::XMLNode
    constexpr iterator begin () const noexcept
     
    constexpr iterator end () const noexcept
     
    xmlNsPtr addNS (sv href, sv prefix={}) const noexcept
     
    xmlNsPtr searchNS (sv ns) const noexcept
     
    constexpr sv property (sv name, sv ns={}) const noexcept
     
    void setProperty (sv name, sv value, sv ns) const noexcept
     
    void setProperty (sv name, sv value, xmlNsPtr ns={}) const noexcept
     
     operator std::vector< unsigned char > ()
     
    XMLNodeoperator= (sv text) noexcept
     
    constexpr XMLNode operator/ (sv name) const noexcept
     
    constexpr XMLNode operator/ (const XMLName &name) const noexcept
     
    XMLNode operator+ (const XMLName &name) const noexcept
     
    XMLNode operator+ (const char *name) const noexcept
     
    constexpr auto operator+ (int n) noexcept
     
    XMLNodeoperator= (const std::vector< unsigned char > &data)
     
    - Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr auto children (P p, xmlElementType type=XML_ELEMENT_NODE) const noexcept
     
    constexpr sv name () const noexcept
     
    constexpr sv ns () const noexcept
     
    constexpr operator bool () const noexcept
     
    constexpr auto & operator++ () noexcept
     
    constexpr auto operator++ (int) noexcept
     
    constexpr operator sv () const noexcept
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    static XMLDocument openStream (std::istream &is, const XMLName &name={}, bool hugeFile=false)
     
    static XMLDocument create (std::string_view name={}, std::string_view href={}, std::string_view prefix={}) noexcept
     
    static bool verifySignature (XMLNode signature, [[maybe_unused]] Exception *e={}) noexcept
     
    static void schemaValidationError (void *ctx, const char *msg,...) noexcept
     
    static void schemaValidationWarning (void *, const char *msg,...) noexcept
     
    - Static Public Member Functions inherited from digidoc::XMLNode
    static iterator erase (iterator pos) noexcept
     
    - Static Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr static auto safe (C c, P p) noexcept
     
    constexpr static C find (C n, xmlElementType type) noexcept
     
    constexpr static C find (C n, sv name, sv ns) noexcept
     
    constexpr static sv to_string_view (C d, P p) noexcept
     
    + + + + + + + + + + + + + + + + +

    +Static Public Attributes

    static constexpr std::string_view C14D_ID_1_0 {"http://www.w3.org/TR/2001/REC-xml-c14n-20010315"}
     
    static constexpr std::string_view C14D_ID_1_0_COM {"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"}
     
    static constexpr std::string_view C14D_ID_1_1 {"http://www.w3.org/2006/12/xml-c14n11"}
     
    static constexpr std::string_view C14D_ID_1_1_COM {"http://www.w3.org/2006/12/xml-c14n11#WithComments"}
     
    static constexpr std::string_view C14D_ID_1_0_EXC {"http://www.w3.org/2001/10/xml-exc-c14n#"}
     
    static constexpr std::string_view C14D_ID_1_0_EXC_COM {"http://www.w3.org/2001/10/xml-exc-c14n#WithComments"}
     
    - Static Public Attributes inherited from digidoc::XMLElem< xmlNode >
    static constexpr sv whitespace
     
    + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from digidoc::XMLElem< xmlNode >
    using value_type = xmlNode
     
    using pointer = value_type *
     
    using sv = std::string_view
     
    using pcxmlChar = const xmlChar *
     
    - Public Attributes inherited from digidoc::XMLElem< xmlNode >
    pointer d
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ XMLDocument() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    digidoc::XMLDocument::XMLDocument (element_type * ptr = {},
    const XMLNamen = {} 
    )
    +
    +inlinenoexcept
    +
    + +
    +
    + +

    ◆ XMLDocument() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    digidoc::XMLDocument::XMLDocument (std::string_view path,
    const XMLNamen = {} 
    )
    +
    +inlinenoexcept
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ c14n()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void digidoc::XMLDocument::c14n (Digest * digest,
    std::string_view algo,
    XMLNode node 
    )
    +
    +inline
    +
    +
    + +

    ◆ create()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static XMLDocument digidoc::XMLDocument::create (std::string_view name = {},
    std::string_view href = {},
    std::string_view prefix = {} 
    )
    +
    +inlinestaticnoexcept
    +
    + +
    +
    + +

    ◆ openStream()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static XMLDocument digidoc::XMLDocument::openStream (std::istream & is,
    const XMLNamename = {},
    bool hugeFile = false 
    )
    +
    +inlinestatic
    +
    + +
    +
    + +

    ◆ save() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool digidoc::XMLDocument::save (std::ostream & os) const
    +
    +inlinenoexcept
    +
    + +
    +
    + +

    ◆ save() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool digidoc::XMLDocument::save (std::string_view path) const
    +
    +inlinenoexcept
    +
    + +
    +
    + +

    ◆ schemaValidationError()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void digidoc::XMLDocument::schemaValidationError (void * ctx,
    const char * msg,
     ... 
    )
    +
    +inlinestaticnoexcept
    +
    + +

    References digidoc::Exception::addCause().

    + +

    Referenced by validateSchema().

    + +
    +
    + +

    ◆ schemaValidationWarning()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static void digidoc::XMLDocument::schemaValidationWarning (void * ,
    const char * msg,
     ... 
    )
    +
    +inlinestaticnoexcept
    +
    + +

    Referenced by validateSchema().

    + +
    +
    + +

    ◆ validateSchema()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void digidoc::XMLDocument::validateSchema (const std::string & schemaPath) const
    +
    +inline
    +
    +
    + +

    ◆ verifySignature()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static bool digidoc::XMLDocument::verifySignature (XMLNode signature,
    [[maybe_unused] ] Exceptione = {} 
    )
    +
    +inlinestaticnoexcept
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ C14D_ID_1_0

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_0 {"http://www.w3.org/TR/2001/REC-xml-c14n-20010315"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    + +

    ◆ C14D_ID_1_0_COM

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_0_COM {"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    + +

    ◆ C14D_ID_1_0_EXC

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_0_EXC {"http://www.w3.org/2001/10/xml-exc-c14n#"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    + +

    ◆ C14D_ID_1_0_EXC_COM

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_0_EXC_COM {"http://www.w3.org/2001/10/xml-exc-c14n#WithComments"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    + +

    ◆ C14D_ID_1_1

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_1 {"http://www.w3.org/2006/12/xml-c14n11"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    + +

    ◆ C14D_ID_1_1_COM

    + +
    +
    + + + + + +
    + + + + +
    constexpr std::string_view digidoc::XMLDocument::C14D_ID_1_1_COM {"http://www.w3.org/2006/12/xml-c14n11#WithComments"}
    +
    +staticconstexpr
    +
    + +

    Referenced by c14n().

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1XMLDocument.js b/structdigidoc_1_1XMLDocument.js new file mode 100644 index 000000000..3326fa54a --- /dev/null +++ b/structdigidoc_1_1XMLDocument.js @@ -0,0 +1,20 @@ +var structdigidoc_1_1XMLDocument = +[ + [ "XMLDocument", "structdigidoc_1_1XMLDocument.html#a85e6f09f024c08ac2f0e8e167ef783ca", null ], + [ "XMLDocument", "structdigidoc_1_1XMLDocument.html#ae6d0842900ed91c2cee63b6840d719f1", null ], + [ "c14n", "structdigidoc_1_1XMLDocument.html#ad4d4f13a29ffe09a30cd6fe75bc93873", null ], + [ "create", "structdigidoc_1_1XMLDocument.html#a49e64c118198db5266d65ca5a9510b1a", null ], + [ "openStream", "structdigidoc_1_1XMLDocument.html#a81ee7a48dcc595710022189a5ea2ef95", null ], + [ "save", "structdigidoc_1_1XMLDocument.html#a97b0e038613b555391328eb0cc41b8b6", null ], + [ "save", "structdigidoc_1_1XMLDocument.html#a028a4b8c92381dc04c0514ed192036bb", null ], + [ "schemaValidationError", "structdigidoc_1_1XMLDocument.html#a13f0bbd634b43bba8b0719e379bcd309", null ], + [ "schemaValidationWarning", "structdigidoc_1_1XMLDocument.html#af3e40d861a5aefe137963aff2aa30bc1", null ], + [ "validateSchema", "structdigidoc_1_1XMLDocument.html#ad93989b29d753c1fb8bc7ee9071962da", null ], + [ "verifySignature", "structdigidoc_1_1XMLDocument.html#a79528b4e978dfe97a579ee3642e10e14", null ], + [ "C14D_ID_1_0", "structdigidoc_1_1XMLDocument.html#ac7b4225e4698ccfbefd41c8890932c93", null ], + [ "C14D_ID_1_0_COM", "structdigidoc_1_1XMLDocument.html#ae6cf470351498d32ab900cd101378be7", null ], + [ "C14D_ID_1_0_EXC", "structdigidoc_1_1XMLDocument.html#a2a3b419a8ec180a08377ef5bf19cf920", null ], + [ "C14D_ID_1_0_EXC_COM", "structdigidoc_1_1XMLDocument.html#a2a0a82cc1a1ecefddfbea2a42063a4d9", null ], + [ "C14D_ID_1_1", "structdigidoc_1_1XMLDocument.html#afda501bd5fd92ff39344b17bbb8b9e3c", null ], + [ "C14D_ID_1_1_COM", "structdigidoc_1_1XMLDocument.html#ad93ca8c02b150d9328358ffc192fcd5a", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLDocument.png b/structdigidoc_1_1XMLDocument.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb5217d3970599a8a942dd39d7b577422780d15 GIT binary patch literal 1671 zcmcJQdoM&Gs?BuU!C1^^w0jW=j?mV_kBL^`@HWz&-*>kn~L*v zQHJZl0RT|Ox;l9QfPw(xD;w5AbFi_S9uyF`Bi_z(xg5f&cXP3sZPy_BCN7r?OBLxu z%MC;?&*K1e=<9ge<81{1ikeubL*8);5~eu2+)_<(pT5t;%FFpKGdpS;BYfm^B{6HA z72!qxGK{U#Zn=rCz*b2{<@4!o*#`K#DDAdY&|`MQOf`*BQr;)zQANtaaB?Xs)>Y|k zSSOW@!#ay4qoWxaQgucOX3F23KPQB1!Dn?;>7$J?Sp%Q=xBR_k?h4|uX+s4%QI$1* zTPuQ2W}v3E&FlNFl{U1V8@`uLG`_LRIZowwHue|FwxmTl3gi`jyc=kSMdAsC7j!So zm6FpVX%p7zB?G{vC%xarQ`|yzL^b@ ztV;KN+K{`sBti_oky98x^*nsamvB$Yw615j!n@Z;uN+*#I5;Yh;!#9V#jV3WQKkvK zuTPfxmo^#IHVH_%-sor-!b;mk6t+Ja%zpBE9GO#M0oBFJF~HAodgc|zux$Kb>h+SS z)wNnxz3S~mM9M>3K!xkVR@e>LMuPx}Jt8uqXyc72$oB_Ej3^oq8RO9u11SElN;*W? zV1Pi&pPfc1j;V#DKej2wVXdwz-9R})PiRH^2RbqYj=9oyW>{g_Qb&^Py-Se zMFAwMGICht2Y+N}#`n`SKj+4dyJnAu{%F&Y=U?~1W1Bfy$iG>ZRX-8eP#l8G?@a9f@58#r9Dji=)M5&I56b|(yLh~^lRo$HED2~mmM|+*v;h&%BKby{-Dp^aWo4fe$cxds(sOg z;I()Ob3A2x;VFV99?#E2wf6tIsmh6t=>25l$OwqU*d3)I8ml+~or@EjJSN}tVhpFl zb1-6S6DG(bHU;eL5UCV{6#^DO4vC_%b|qM^h`-wM_IXcHW)WD?8WQfybT6xDn4=Ho zi%g3w#Aj=c75E>e+13qUaUPAZaZ_;Yx0>Nm8UNfKhhyld(mh&Fi92d`xMa(=pCY91 zWZ84H&ZIkl_oU&iHCGb~aM&g$PTz1kRAnRcOJIcNftJl@(h~o%}H&eVpFkRQ-DY08!*e&>*HRuR!t)Tj|~5NaGOh4}{} zpt?;XsZt46+b$s)+&(d1XTF82^0_z;`8RLTDrXOU+f{=y|Ek7e2?+`4QLcYr!YpY@ z|4H+D2DD&3ia1z4$-x1T!&i&aDbgB`b&o;|>;p`@Ml6$njOgVh4vx|()0Dt;CefM= zbOCvE2BWZbmajdKebS2oc$yz}U*gbIw9P6a7X=&@E zlQMW?+I}8u^|ruR z!fFQB=skq)_vk+}gIX;-_9xi98{UZPUa6t}>e2-eNP$|-cVZU^)G)QmT#H%NWbc>M U^Bwo2p + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::XMLElem< T > Member List
    +
    +
    + +

    This is the complete list of members for digidoc::XMLElem< T >, including all inherited members.

    + + + + + + + + + + + + + + + + + + +
    children(P p, xmlElementType type=XML_ELEMENT_NODE) const noexceptdigidoc::XMLElem< T >inline
    ddigidoc::XMLElem< T >
    find(C n, xmlElementType type) noexceptdigidoc::XMLElem< T >inlinestatic
    find(C n, sv name, sv ns) noexceptdigidoc::XMLElem< T >inlinestatic
    name() const noexceptdigidoc::XMLElem< T >inline
    ns() const noexceptdigidoc::XMLElem< T >inline
    operator bool() const noexceptdigidoc::XMLElem< T >inline
    operator sv() const noexceptdigidoc::XMLElem< T >inline
    operator++() noexceptdigidoc::XMLElem< T >inline
    operator++(int) noexceptdigidoc::XMLElem< T >inline
    pcxmlChar typedefdigidoc::XMLElem< T >
    pointer typedefdigidoc::XMLElem< T >
    safe(C c, P p) noexceptdigidoc::XMLElem< T >inlinestatic
    sv typedefdigidoc::XMLElem< T >
    to_string_view(C d, P p) noexceptdigidoc::XMLElem< T >inlinestatic
    value_type typedefdigidoc::XMLElem< T >
    whitespacedigidoc::XMLElem< T >static
    +
    + + + + diff --git a/structdigidoc_1_1XMLElem.html b/structdigidoc_1_1XMLElem.html new file mode 100644 index 000000000..770c58241 --- /dev/null +++ b/structdigidoc_1_1XMLElem.html @@ -0,0 +1,655 @@ + + + + + + + +libdigidocpp: digidoc::XMLElem< T > Struct Template Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    + +

    #include <XMLDocument.h>

    + + + + + + + + + + +

    +Public Types

    using value_type = T
     
    using pointer = value_type *
     
    using sv = std::string_view
     
    using pcxmlChar = const xmlChar *
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    template<typename P >
    constexpr auto children (P p, xmlElementType type=XML_ELEMENT_NODE) const noexcept
     
    constexpr sv name () const noexcept
     
    constexpr sv ns () const noexcept
     
    constexpr operator bool () const noexcept
     
    constexpr auto & operator++ () noexcept
     
    constexpr auto operator++ (int) noexcept
     
    constexpr operator sv () const noexcept
     
    + + + + + + + + + + + + + +

    +Static Public Member Functions

    template<class C , typename P >
    constexpr static auto safe (C c, P p) noexcept
     
    template<class C >
    constexpr static C find (C n, xmlElementType type) noexcept
     
    template<class C >
    constexpr static C find (C n, sv name, sv ns) noexcept
     
    template<class C , typename P >
    constexpr static sv to_string_view (C d, P p) noexcept
     
    + + + +

    +Public Attributes

    pointer d {}
     
    + + + +

    +Static Public Attributes

    static constexpr sv whitespace {" \n\r\f\t\v"}
     
    +

    Member Typedef Documentation

    + +

    ◆ pcxmlChar

    + +
    +
    +
    +template<class T >
    + + + + +
    using digidoc::XMLElem< T >::pcxmlChar = const xmlChar *
    +
    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<class T >
    + + + + +
    using digidoc::XMLElem< T >::pointer = value_type*
    +
    + +
    +
    + +

    ◆ sv

    + +
    +
    +
    +template<class T >
    + + + + +
    using digidoc::XMLElem< T >::sv = std::string_view
    +
    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<class T >
    + + + + +
    using digidoc::XMLElem< T >::value_type = T
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ children()

    + +
    +
    +
    +template<class T >
    +
    +template<typename P >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr auto digidoc::XMLElem< T >::children (p,
    xmlElementType type = XML_ELEMENT_NODE 
    ) const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ find() [1/2]

    + +
    +
    +
    +template<class T >
    +
    +template<class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    constexpr static C digidoc::XMLElem< T >::find (n,
    sv name,
    sv ns 
    )
    +
    +inlinestaticconstexprnoexcept
    +
    +
    + +

    ◆ find() [2/2]

    + +
    +
    +
    +template<class T >
    +
    +template<class C >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr static C digidoc::XMLElem< T >::find (n,
    xmlElementType type 
    )
    +
    +inlinestaticconstexprnoexcept
    +
    +
    + +

    ◆ name()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr sv digidoc::XMLElem< T >::name () const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ ns()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr sv digidoc::XMLElem< T >::ns () const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ operator bool()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr digidoc::XMLElem< T >::operator bool () const
    +
    +inlineconstexprnoexcept
    +
    + +

    References digidoc::XMLElem< T >::d.

    + +
    +
    + +

    ◆ operator sv()

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr digidoc::XMLElem< T >::operator sv () const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ operator++() [1/2]

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + +
    constexpr auto& digidoc::XMLElem< T >::operator++ ()
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ operator++() [2/2]

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + + + + + +
    constexpr auto digidoc::XMLElem< T >::operator++ (int )
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ safe()

    + +
    +
    +
    +template<class T >
    +
    +template<class C , typename P >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr static auto digidoc::XMLElem< T >::safe (c,
    p 
    )
    +
    +inlinestaticconstexprnoexcept
    +
    +
    + +

    ◆ to_string_view()

    + +
    +
    +
    +template<class T >
    +
    +template<class C , typename P >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr static sv digidoc::XMLElem< T >::to_string_view (d,
    p 
    )
    +
    +inlinestaticconstexprnoexcept
    +
    +
    +

    Member Data Documentation

    + +

    ◆ d

    + + + +

    ◆ whitespace

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr sv digidoc::XMLElem< T >::whitespace {" \n\r\f\t\v"}
    +
    +staticconstexpr
    +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1XMLElem.js b/structdigidoc_1_1XMLElem.js new file mode 100644 index 000000000..4144df277 --- /dev/null +++ b/structdigidoc_1_1XMLElem.js @@ -0,0 +1,20 @@ +var structdigidoc_1_1XMLElem = +[ + [ "pcxmlChar", "structdigidoc_1_1XMLElem.html#acc757c68ae4c0a0921e1460e3c348fe9", null ], + [ "pointer", "structdigidoc_1_1XMLElem.html#a86c6704302fe9e8b230121d9c2b50109", null ], + [ "sv", "structdigidoc_1_1XMLElem.html#a63ba9e33e3a9318b2a39b1b675ffc3bc", null ], + [ "value_type", "structdigidoc_1_1XMLElem.html#a5212a34259364f32b0b2dc54568e6b46", null ], + [ "children", "structdigidoc_1_1XMLElem.html#ad645b44209c9ca68973ac5517e4a7d43", null ], + [ "find", "structdigidoc_1_1XMLElem.html#afe2c03216346957d23aa36f1b5f1cdda", null ], + [ "find", "structdigidoc_1_1XMLElem.html#aaa9a7da547bfe8c13fc49404cf74bd29", null ], + [ "name", "structdigidoc_1_1XMLElem.html#af3bc6b02308792b71d526c3d58b309b4", null ], + [ "ns", "structdigidoc_1_1XMLElem.html#a6f4caafdba2051121ac4daad7f0c6f7c", null ], + [ "operator bool", "structdigidoc_1_1XMLElem.html#a5fa34c169f7221a76e010c60382f95d6", null ], + [ "operator sv", "structdigidoc_1_1XMLElem.html#a6dc901af934cff31abc44cd75b74f35d", null ], + [ "operator++", "structdigidoc_1_1XMLElem.html#adfa906d27c332df3c5782535ab729c92", null ], + [ "operator++", "structdigidoc_1_1XMLElem.html#a1902f1eb23f43325ca7be21410367b7b", null ], + [ "safe", "structdigidoc_1_1XMLElem.html#a6f34279405399126601991dec7f20d95", null ], + [ "to_string_view", "structdigidoc_1_1XMLElem.html#a6d484911692e0a96809a2e3e1f25e52e", null ], + [ "d", "structdigidoc_1_1XMLElem.html#a7c8339a462876637f3516eee7e911ed9", null ], + [ "whitespace", "structdigidoc_1_1XMLElem.html#a80d90eaa85221fa6d53709032d6e3d51", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLName-members.html b/structdigidoc_1_1XMLName-members.html new file mode 100644 index 000000000..10c08553e --- /dev/null +++ b/structdigidoc_1_1XMLName-members.html @@ -0,0 +1,82 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::XMLName Member List
    +
    +
    + +

    This is the complete list of members for digidoc::XMLName, including all inherited members.

    + + + +
    namedigidoc::XMLName
    nsdigidoc::XMLName
    +
    + + + + diff --git a/structdigidoc_1_1XMLName.html b/structdigidoc_1_1XMLName.html new file mode 100644 index 000000000..b83e4c368 --- /dev/null +++ b/structdigidoc_1_1XMLName.html @@ -0,0 +1,123 @@ + + + + + + + +libdigidocpp: digidoc::XMLName Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc::XMLName Struct Reference
    +
    +
    + +

    #include <XMLDocument.h>

    + + + + + + +

    +Public Attributes

    std::string_view name
     
    std::string_view ns
     
    +

    Member Data Documentation

    + +

    ◆ name

    + +
    +
    + + + + +
    std::string_view digidoc::XMLName::name
    +
    + +
    +
    + +

    ◆ ns

    + +
    +
    + + + + +
    std::string_view digidoc::XMLName::ns
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1XMLName.js b/structdigidoc_1_1XMLName.js new file mode 100644 index 000000000..b5d6a3feb --- /dev/null +++ b/structdigidoc_1_1XMLName.js @@ -0,0 +1,5 @@ +var structdigidoc_1_1XMLName = +[ + [ "name", "structdigidoc_1_1XMLName.html#a497cbf129c9c310f2b0801f2453cb101", null ], + [ "ns", "structdigidoc_1_1XMLName.html#acf416f4cd576327754a977267cca0b5d", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLNode-members.html b/structdigidoc_1_1XMLNode-members.html new file mode 100644 index 000000000..e917451ef --- /dev/null +++ b/structdigidoc_1_1XMLNode-members.html @@ -0,0 +1,113 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::XMLNode Member List
    +
    +
    + +

    This is the complete list of members for digidoc::XMLNode, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addNS(sv href, sv prefix={}) const noexceptdigidoc::XMLNodeinline
    begin() const noexceptdigidoc::XMLNodeinline
    children(P p, xmlElementType type=XML_ELEMENT_NODE) const noexceptdigidoc::XMLElem< xmlNode >inline
    ddigidoc::XMLElem< xmlNode >
    end() const noexceptdigidoc::XMLNodeinline
    erase(iterator pos) noexceptdigidoc::XMLNodeinlinestatic
    find(C n, xmlElementType type) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    find(C n, sv name, sv ns) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    name() const noexceptdigidoc::XMLElem< xmlNode >inline
    ns() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator bool() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator std::vector< unsigned char >()digidoc::XMLNodeinline
    operator sv() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator+(const XMLName &name) const noexceptdigidoc::XMLNodeinline
    operator+(const char *name) const noexceptdigidoc::XMLNodeinline
    operator+(int n) noexceptdigidoc::XMLNodeinline
    operator++() noexceptdigidoc::XMLElem< xmlNode >inline
    operator++(int) noexceptdigidoc::XMLElem< xmlNode >inline
    operator/(sv name) const noexceptdigidoc::XMLNodeinline
    operator/(const XMLName &name) const noexceptdigidoc::XMLNodeinline
    operator=(sv text) noexceptdigidoc::XMLNodeinline
    operator=(const std::vector< unsigned char > &data)digidoc::XMLNodeinline
    pcxmlChar typedefdigidoc::XMLElem< xmlNode >
    pointer typedefdigidoc::XMLElem< xmlNode >
    property(sv name, sv ns={}) const noexceptdigidoc::XMLNodeinline
    safe(C c, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    searchNS(sv ns) const noexceptdigidoc::XMLNodeinline
    setProperty(sv name, sv value, sv ns) const noexceptdigidoc::XMLNodeinline
    setProperty(sv name, sv value, xmlNsPtr ns={}) const noexceptdigidoc::XMLNodeinline
    sv typedefdigidoc::XMLElem< xmlNode >
    to_string_view(C d, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    value_type typedefdigidoc::XMLElem< xmlNode >
    whitespacedigidoc::XMLElem< xmlNode >static
    +
    + + + + diff --git a/structdigidoc_1_1XMLNode.html b/structdigidoc_1_1XMLNode.html new file mode 100644 index 000000000..77499627a --- /dev/null +++ b/structdigidoc_1_1XMLNode.html @@ -0,0 +1,676 @@ + + + + + + + +libdigidocpp: digidoc::XMLNode Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc::XMLNode Struct Reference
    +
    +
    + +

    #include <XMLDocument.h>

    +
    +Inheritance diagram for digidoc::XMLNode:
    +
    +
    + + +digidoc::XMLElem< xmlNode > +digidoc::XMLDocument + +
    + + + + +

    +Classes

    struct  iterator
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    constexpr iterator begin () const noexcept
     
    constexpr iterator end () const noexcept
     
    xmlNsPtr addNS (sv href, sv prefix={}) const noexcept
     
    xmlNsPtr searchNS (sv ns) const noexcept
     
    constexpr sv property (sv name, sv ns={}) const noexcept
     
    void setProperty (sv name, sv value, sv ns) const noexcept
     
    void setProperty (sv name, sv value, xmlNsPtr ns={}) const noexcept
     
     operator std::vector< unsigned char > ()
     
    XMLNodeoperator= (sv text) noexcept
     
    constexpr XMLNode operator/ (sv name) const noexcept
     
    constexpr XMLNode operator/ (const XMLName &name) const noexcept
     
    XMLNode operator+ (const XMLName &name) const noexcept
     
    XMLNode operator+ (const char *name) const noexcept
     
    constexpr auto operator+ (int n) noexcept
     
    XMLNodeoperator= (const std::vector< unsigned char > &data)
     
    - Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr auto children (P p, xmlElementType type=XML_ELEMENT_NODE) const noexcept
     
    constexpr sv name () const noexcept
     
    constexpr sv ns () const noexcept
     
    constexpr operator bool () const noexcept
     
    constexpr auto & operator++ () noexcept
     
    constexpr auto operator++ (int) noexcept
     
    constexpr operator sv () const noexcept
     
    + + + + + + + + + + + + +

    +Static Public Member Functions

    static iterator erase (iterator pos) noexcept
     
    - Static Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr static auto safe (C c, P p) noexcept
     
    constexpr static C find (C n, xmlElementType type) noexcept
     
    constexpr static C find (C n, sv name, sv ns) noexcept
     
    constexpr static sv to_string_view (C d, P p) noexcept
     
    + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from digidoc::XMLElem< xmlNode >
    using value_type = xmlNode
     
    using pointer = value_type *
     
    using sv = std::string_view
     
    using pcxmlChar = const xmlChar *
     
    - Public Attributes inherited from digidoc::XMLElem< xmlNode >
    pointer d
     
    - Static Public Attributes inherited from digidoc::XMLElem< xmlNode >
    static constexpr sv whitespace
     
    +

    Member Function Documentation

    + +

    ◆ addNS()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    xmlNsPtr digidoc::XMLNode::addNS (sv href,
    sv prefix = {} 
    ) const
    +
    +inlinenoexcept
    +
    + +
    +
    + +

    ◆ begin()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr iterator digidoc::XMLNode::begin () const
    +
    +inlineconstexprnoexcept
    +
    + +

    References digidoc::XMLElem< xmlNode >::children().

    + +

    Referenced by operator/().

    + +
    +
    + +

    ◆ end()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr iterator digidoc::XMLNode::end () const
    +
    +inlineconstexprnoexcept
    +
    + +
    +
    + +

    ◆ erase()

    + +
    +
    + + + + + +
    + + + + + + + + +
    static iterator digidoc::XMLNode::erase (iterator pos)
    +
    +inlinestaticnoexcept
    +
    + +
    +
    + +

    ◆ operator std::vector< unsigned char >()

    + +
    +
    + + + + + +
    + + + + + + + +
    digidoc::XMLNode::operator std::vector< unsigned char > ()
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator+() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    XMLNode digidoc::XMLNode::operator+ (const char * name) const
    +
    +inlinenoexcept
    +
    +
    + +

    ◆ operator+() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    XMLNode digidoc::XMLNode::operator+ (const XMLNamename) const
    +
    +inlinenoexcept
    +
    +
    + +

    ◆ operator+() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr auto digidoc::XMLNode::operator+ (int n)
    +
    +inlineconstexprnoexcept
    +
    + +
    +
    + +

    ◆ operator/() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr XMLNode digidoc::XMLNode::operator/ (const XMLNamename) const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ operator/() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr XMLNode digidoc::XMLNode::operator/ (sv name) const
    +
    +inlineconstexprnoexcept
    +
    +
    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    XMLNode& digidoc::XMLNode::operator= (const std::vector< unsigned char > & data)
    +
    +inline
    +
    + +

    References operator=(), and digidoc::to_base64().

    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    XMLNode& digidoc::XMLNode::operator= (sv text)
    +
    +inlinenoexcept
    +
    + +

    References digidoc::XMLElem< xmlNode >::d.

    + +

    Referenced by operator=().

    + +
    +
    + +

    ◆ property()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    constexpr sv digidoc::XMLNode::property (sv name,
    sv ns = {} 
    ) const
    +
    +inlineconstexprnoexcept
    +
    + +
    +
    + +

    ◆ searchNS()

    + +
    +
    + + + + + +
    + + + + + + + + +
    xmlNsPtr digidoc::XMLNode::searchNS (sv ns) const
    +
    +inlinenoexcept
    +
    +
    + +

    ◆ setProperty() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void digidoc::XMLNode::setProperty (sv name,
    sv value,
    sv ns 
    ) const
    +
    +inlinenoexcept
    +
    +
    + +

    ◆ setProperty() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void digidoc::XMLNode::setProperty (sv name,
    sv value,
    xmlNsPtr ns = {} 
    ) const
    +
    +inlinenoexcept
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1XMLNode.js b/structdigidoc_1_1XMLNode.js new file mode 100644 index 000000000..eceb7d31f --- /dev/null +++ b/structdigidoc_1_1XMLNode.js @@ -0,0 +1,20 @@ +var structdigidoc_1_1XMLNode = +[ + [ "iterator", "structdigidoc_1_1XMLNode_1_1iterator.html", "structdigidoc_1_1XMLNode_1_1iterator" ], + [ "addNS", "structdigidoc_1_1XMLNode.html#a10cd4c94b8d24fdc156c7230338800ff", null ], + [ "begin", "structdigidoc_1_1XMLNode.html#ab4e3afcdd76923965cb02d11adb7f077", null ], + [ "end", "structdigidoc_1_1XMLNode.html#ac464318eb74f040ef76ae9bc19b457c5", null ], + [ "erase", "structdigidoc_1_1XMLNode.html#a47af9191727185712a9a729b8d3326b5", null ], + [ "operator std::vector< unsigned char >", "structdigidoc_1_1XMLNode.html#a081066bce65ec6583d3a5747085422a5", null ], + [ "operator+", "structdigidoc_1_1XMLNode.html#a6b272b3b657e13dff495231e354566e8", null ], + [ "operator+", "structdigidoc_1_1XMLNode.html#aeb9d6aa563dc9e17c4c2e4c201cff0df", null ], + [ "operator+", "structdigidoc_1_1XMLNode.html#aa389da2c99c251b04f5aade378ea5d77", null ], + [ "operator/", "structdigidoc_1_1XMLNode.html#a64547535b9dcc733377746adcc71338e", null ], + [ "operator/", "structdigidoc_1_1XMLNode.html#a2474261277e8659635693e330e25e06e", null ], + [ "operator=", "structdigidoc_1_1XMLNode.html#a4f3cbb31060a9517bfe371b472f093c5", null ], + [ "operator=", "structdigidoc_1_1XMLNode.html#a5adcd6e9fdc26fca86cb05fb203e2e34", null ], + [ "property", "structdigidoc_1_1XMLNode.html#a06e46fe415847e61fa8441f08c4f92c2", null ], + [ "searchNS", "structdigidoc_1_1XMLNode.html#a72b4db3e91dddd24710ad685f35c5438", null ], + [ "setProperty", "structdigidoc_1_1XMLNode.html#a660c93adb3f61c46a08b3981a49d6f8b", null ], + [ "setProperty", "structdigidoc_1_1XMLNode.html#af87751187359bf82b03cb6bfe3e59fd9", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLNode.png b/structdigidoc_1_1XMLNode.png new file mode 100644 index 0000000000000000000000000000000000000000..6c408429f0170902c175a3fad593d1c503a38314 GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0vp^JAt@^gBeKngzicMQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^J{_!l~`1li_B|mSU>=krgX1_~}dHu1cH-F!ob9By`)z7j$ zB-e+}`d{HYH9uQ@OZuc7?Prx|cYfWQ_QxvQGGhC>x@(S`Tq0LW?pIkgWA@BfklctLnGf7p{H2_Q&9l^%?JT-PxYuIYpr6S1z#HmCyxiy@ua|mqnoCQ> zRXn987))1*KNK^mrZV47ckR3x%}bW8o$l-K*6*|bq;(&X4`>#9W?4uT?b|oudcv9e zvpj;1|DR$1{M_d6do8;yXD&axy>O;c+0H#J|9(uVGmAeI&tH34+k0i|Mm;V0RsP`~ zw+}D6HD`OMmZxm~+1~K`x26B2RvgrFEqPx3&GWZySMo%&>ur0yh8v literal 0 HcmV?d00001 diff --git a/structdigidoc_1_1XMLNode_1_1iterator-members.html b/structdigidoc_1_1XMLNode_1_1iterator-members.html new file mode 100644 index 000000000..84aa6eafc --- /dev/null +++ b/structdigidoc_1_1XMLNode_1_1iterator-members.html @@ -0,0 +1,100 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::XMLNode::iterator Member List
    +
    +
    + +

    This is the complete list of members for digidoc::XMLNode::iterator, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + +
    children(P p, xmlElementType type=XML_ELEMENT_NODE) const noexceptdigidoc::XMLElem< xmlNode >inline
    ddigidoc::XMLElem< xmlNode >
    difference_type typedefdigidoc::XMLNode::iterator
    find(C n, xmlElementType type) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    find(C n, sv name, sv ns) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    iterator_category typedefdigidoc::XMLNode::iterator
    name() const noexceptdigidoc::XMLElem< xmlNode >inline
    ns() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator bool() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator sv() const noexceptdigidoc::XMLElem< xmlNode >inline
    operator*() const noexceptdigidoc::XMLNode::iteratorinline
    operator++() noexceptdigidoc::XMLElem< xmlNode >inline
    operator++(int) noexceptdigidoc::XMLElem< xmlNode >inline
    pcxmlChar typedefdigidoc::XMLElem< xmlNode >
    pointer typedefdigidoc::XMLElem< xmlNode >
    safe(C c, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    sv typedefdigidoc::XMLElem< xmlNode >
    to_string_view(C d, P p) noexceptdigidoc::XMLElem< xmlNode >inlinestatic
    value_type typedefdigidoc::XMLElem< xmlNode >
    whitespacedigidoc::XMLElem< xmlNode >static
    +
    + + + + diff --git a/structdigidoc_1_1XMLNode_1_1iterator.html b/structdigidoc_1_1XMLNode_1_1iterator.html new file mode 100644 index 000000000..e2095dc07 --- /dev/null +++ b/structdigidoc_1_1XMLNode_1_1iterator.html @@ -0,0 +1,208 @@ + + + + + + + +libdigidocpp: digidoc::XMLNode::iterator Struct Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc::XMLNode::iterator Struct Reference
    +
    +
    + +

    #include <XMLDocument.h>

    +
    +Inheritance diagram for digidoc::XMLNode::iterator:
    +
    +
    + + +digidoc::XMLElem< xmlNode > + +
    + + + + + + + + + + + + + + + +

    +Public Types

    using iterator_category = std::forward_iterator_tag
     
    using difference_type = std::ptrdiff_t
     
    - Public Types inherited from digidoc::XMLElem< xmlNode >
    using value_type = xmlNode
     
    using pointer = value_type *
     
    using sv = std::string_view
     
    using pcxmlChar = const xmlChar *
     
    + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    constexpr XMLNode operator* () const noexcept
     
    - Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr auto children (P p, xmlElementType type=XML_ELEMENT_NODE) const noexcept
     
    constexpr sv name () const noexcept
     
    constexpr sv ns () const noexcept
     
    constexpr operator bool () const noexcept
     
    constexpr auto & operator++ () noexcept
     
    constexpr auto operator++ (int) noexcept
     
    constexpr operator sv () const noexcept
     
    + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from digidoc::XMLElem< xmlNode >
    constexpr static auto safe (C c, P p) noexcept
     
    constexpr static C find (C n, xmlElementType type) noexcept
     
    constexpr static C find (C n, sv name, sv ns) noexcept
     
    constexpr static sv to_string_view (C d, P p) noexcept
     
    - Public Attributes inherited from digidoc::XMLElem< xmlNode >
    pointer d
     
    - Static Public Attributes inherited from digidoc::XMLElem< xmlNode >
    static constexpr sv whitespace
     
    +

    Member Typedef Documentation

    + +

    ◆ difference_type

    + +
    +
    + + + + +
    using digidoc::XMLNode::iterator::difference_type = std::ptrdiff_t
    +
    + +
    +
    + +

    ◆ iterator_category

    + +
    +
    + + + + +
    using digidoc::XMLNode::iterator::iterator_category = std::forward_iterator_tag
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator*()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr XMLNode digidoc::XMLNode::iterator::operator* () const
    +
    +inlineconstexprnoexcept
    +
    + +

    References digidoc::XMLElem< xmlNode >::d.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1XMLNode_1_1iterator.js b/structdigidoc_1_1XMLNode_1_1iterator.js new file mode 100644 index 000000000..baf78b15d --- /dev/null +++ b/structdigidoc_1_1XMLNode_1_1iterator.js @@ -0,0 +1,6 @@ +var structdigidoc_1_1XMLNode_1_1iterator = +[ + [ "difference_type", "structdigidoc_1_1XMLNode_1_1iterator.html#a5dc7c8646e3b024a7504058a51f2ea0e", null ], + [ "iterator_category", "structdigidoc_1_1XMLNode_1_1iterator.html#ae314d720f9e88aa22c6e902a0305ba36", null ], + [ "operator*", "structdigidoc_1_1XMLNode_1_1iterator.html#a067ae2f8875a3f77590497648cc42faf", null ] +]; \ No newline at end of file diff --git a/structdigidoc_1_1XMLNode_1_1iterator.png b/structdigidoc_1_1XMLNode_1_1iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..58f476007ff1288ced8009e66f37a4bdcfcef429 GIT binary patch literal 763 zcmeAS@N?(olHy`uVBq!ia0vp^JApWWgBeH`S*WN0DTx4|5ZC|z{{xvX-h3_XKQsZz z0^9Q7kP61Pb8quK*5Yv$w+{OMfAVrq z&Koh8PM>+m(s?RcQN@h=xasB*JiyU+QLe&zXj+f{Ytm3Q?OHU9s;bg!Pi*tXkn=KV?g zV}kYwW!4wyiN=5CzGdxsO{nrt@s^?|kDiBKKDtTt>t`+@#Y=v^f2OQ($qPGGe(&~V z>2*a{JfgHtciCLu$(_0{U>QfyoK5p)y_&yj zrRO`Y!_RFzwwj()P0fDxXS3D%lijLPrFpaG)t-K1`L}l8y3hU9-G@Is*=Xitzdm-= zy+sRh_J0xcJht!k(McvTyhZV%lS;g|7Tx=2HK|0sbd~F*ymhX6p2=HJsAjI2_vH4r zTw|^W_LrFxynMa?Rh;Rv)BP!26ZEC>WOzQK#9CKAgRpLygf(K82O@Nf8a75fVF2o6 z1cn`R&s8OMiPdNdq7+*UmU1u%!{z0E7Mt03EIua}4+`JQi(h>`=M}EcbWQIBsjOL&Tk%ue(=znu4Y&hGCQef=78WQ*S4bYj~y_iN1L^1HzuO&^QC&7Zt{j(W~# z{{bvd-VVS literal 0 HcmV?d00001 diff --git a/structdigidoc_1_1unique__xml.html b/structdigidoc_1_1unique__xml.html new file mode 100644 index 000000000..8f1c8430b --- /dev/null +++ b/structdigidoc_1_1unique__xml.html @@ -0,0 +1,81 @@ + + + + + + + +libdigidocpp: digidoc::unique_xml< typename > Struct Template Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::unique_xml< typename > Struct Template Reference
    +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4-members.html b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4-members.html new file mode 100644 index 000000000..b13705a1d --- /dev/null +++ b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4-members.html @@ -0,0 +1,81 @@ + + + + + + + +libdigidocpp: Member List + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    digidoc::unique_xml< void(T *)> Member List
    +
    +
    + +

    This is the complete list of members for digidoc::unique_xml< void(T *)>, including all inherited members.

    + + +
    type typedefdigidoc::unique_xml< void(T *)>
    +
    + + + + diff --git a/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html new file mode 100644 index 000000000..ece434943 --- /dev/null +++ b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html @@ -0,0 +1,109 @@ + + + + + + + +libdigidocpp: digidoc::unique_xml< void(T *)> Struct Template Reference + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    libdigidocpp +  3.18.0 +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    digidoc::unique_xml< void(T *)> Struct Template Reference
    +
    +
    + +

    #include <XMLDocument.h>

    + + + + +

    +Public Types

    using type = std::unique_ptr< T, void(*)(T *)>
     
    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using digidoc::unique_xml< void(T *)>::type = std::unique_ptr<T,void(*)(T *)>
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • XMLDocument.h
    • +
    +
    +
    + + + + diff --git a/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.js b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.js new file mode 100644 index 000000000..5f9d3f163 --- /dev/null +++ b/structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.js @@ -0,0 +1,4 @@ +var structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4 = +[ + [ "type", "structdigidoc_1_1unique__xml_3_01void_07T_01_5_08_4.html#a8673868de6722fc3d7360c7ca350404e", 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_b.png b/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=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/tabs.css b/tabs.css new file mode 100644 index 000000000..7d45d36c1 --- /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:0px/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}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 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:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.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);border-radius:5px}.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{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{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{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.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:#fff;text-shadow:0px 1px 1px #000}.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;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff 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 #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;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 #555;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:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;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 #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 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;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:#fff}}