From e23fd3de9c82e73932965d13cc4b96870af9ebd5 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Tue, 7 Nov 2023 20:58:28 +0100 Subject: [PATCH 01/16] tighten text of signatures intro section --- book/source/06-signatures.md | 4 +- book/source/diag/Fingerprint.png | Bin 53192 -> 0 bytes book/source/diag/Fingerprint.svg | 304 ------------------------------- 3 files changed, 2 insertions(+), 306 deletions(-) delete mode 100644 book/source/diag/Fingerprint.png delete mode 100644 book/source/diag/Fingerprint.svg diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 946d513..1832347 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -5,9 +5,9 @@ SPDX-License-Identifier: CC-BY-SA-4.0 # OpenPGP Signatures -Signatures are perhaps the single most central mechanism in OpenPGP. They act as the syntax that allows forming and interpreting rich statements about certificates and their components, as well as data. +Signatures are a fundamental mechanism within OpenPGP. They provide the syntax for forming and interpreting comprehensive statements about certificates and their components, as well as for ensuring the integrity and authenticity of data. -Without signatures, there would only be loose keys, impossible to associate with a certificate, or their owner. Signatures are the glue that allows for components (component keys and identity components) to be assembled into hierarchical certificates, and for messages to gain authenticity. +Without signatures, keys would remain unassociated with any certificate or owner. Signatures are crucial for binding component keys and identity components into hierarchical certificates and for establishing the authenticity of messages. ## Terminology diff --git a/book/source/diag/Fingerprint.png b/book/source/diag/Fingerprint.png deleted file mode 100644 index dd54dc807a5f2a575827f9f62cbce51d1ee80053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53192 zcmeEtWmHvP^z8)!=@#jd5|r+g5Trr68>FN=r5gn41_f#9?zkW&(%mK94R7Dyf4uMS zeR^Ns7&yG#!991MefC;wt~uulS5lC|KqW?nKp+^>A0$3PAn*|o2%HNt5_rc>b8r#- zhhqOh%LxL(41@iHtMutX1aA^Kzt?nDu`_peGjcS8xVgD8TYk27GBL6@W43d&NIw)L zhCnDG(h{Po?iu@wZtnPM^GL^cLqk)h<2;Ep*vM4DO9FpIC5jnll=oY&e*R=YWt`GL zY(9ODgDj7YEbl4(L5vdd16;g3%e>pxok;@i;O9^9D988Zd#(B$POe)+HZu!ebF9+w z?~tj2u*LdQ8@9?Juvf^IsSFIbVz77X|DU`F0t{c;zLj)g5uC5^+sX$K-KdW{Q7_XLYsUW z_4S)K=LrL*pO4(`)N|AR7XM??qZRAt`d(FznMcFr#)V8ZO^6zyfjoMaE}<-EUw>3z zNYVCpk}62oq_6!9C*n6#S~GD_oHe?O5Z?d6_UU*39%TAudB&}(s>s1jye`+LsWY{LmKONLZA}>|k`=7zK0K#wmX0wKD9&Q}+a=%iO(xauq{5tE z$ad`lFXL%evji**C&F@v^=RwQk)HYL+|#=rErzD0X$J*|tV||n1t&|6FQ_?v)YtzK z&_$gxMCb11@v2y!#*|&lNnf!Wy=vWN((tw#SQq2MP-fkG1zvHW1s zQ7VD=i3q7c)=^a^TS(ZkIw6lMKGNmUUR68T!FKw$o$UgyomRE{2a%s&2I~|mNP6o& zht_Q}shb>#kSt7fE{|e$hhp~0^TdQu{(-Vkec#MiEH3$0SV*reCE2jJy=`r`>HhB| zR9W|9z{<)BlU6MObb9(Z+Ey!8{s6L{NPDF4$ebUy@pzJLgTwiU1vZm8+EOY?8C=)> zISh#VW^myccQHn(IuoHu^10wk>)zt_lffhDI2shxM$)l^IdHe@8$~J%3~#!?Wek@e zpSd6W*v6jdYEMBxL=+=2eCkrt&DV^#iB##OP2t})mzr(Khq755daF)P z@WPwfD`7{`y>fIsjmu03bz6Eu9u>MEY;xV*a3*JoM#8x;U>GvTi->e#U}Ax;i9Cu; zt=hC4FC?sJ_ut7PQ_1J%xF=do*J0>;Uk+3!@p%*zCMG6A2*tz$$mW0l{+)w??9Z(f zX#zb}{`e6-S~8Hk>{a@Hz&Htd|Hw#ir=fpE1=d_`w3xj7Thz#ig%I`h;gE$E69yKR z(2qqDcb~j|eJX8eKxq2=@%rY5ij#)$1~K?gVp6Wx^vKVW@%5cb6D0=xu+P&3y|nzK zqodDFNarLZDJeUa8+|>WoyL&6d}Cp$cy~Bv5*E7$sg()NhsHdM%lTN8qdr@4qBMmw zW1}unZ;d7$Z_g|6oGt-n&L1KnDard7mOe~?PmuY}*7hwVr>Yp$Ln`(eL|ZB(aD7C0 zV%n7Zm4Lv@+S=OVla{OLeTGsTp7gq`rOJnQDf8CpOElkWdH+g+q zAm-IXZEbDHSXfTF^Qq9wlM~UBUrHM<@z;976OPZ%-lZkp)f~i+=iq+@%xD7i=yaANSP*8S;m!KuC^`BgS;Q!>X2=f#J^&ZycH?0_GG8piz{kAJM5hnz8df;gMrj%H_fFP(m!fF99tI3HRqNx8rxl~j;bB(XmpISjaH#+pP6J2CPciI{Woiy*>@6q^E zZi^2wd@MA`X(~X%`%D~JyQcznjO+r#?nQ`2wl}`0=obd&*PVkE?VB_8ws#6P^KE#L zU&ni+Y3S4OG)5Q8Pb;zQNdja#MXGCC4kq?z*Cd^6AtI03G4eWfe3$KyQ_T?nTyZ3$ zsi9`w7#-&|8rY43TXC3UP99{n{YSIF>-pVezFoj=wZ7LcPbYcg=lGt(^@lo>Y)a&Y zgQS55hoKJ{!*)+s^fc09$s=SZe@ead;59>2F5ORN=}%7g?DBu@Ak;lJKNCm7fIz%Y zZ!~_EmO6UHii-!p{uWe?GL!TH)2=QGzs{t$Py9kL<$CiBf~PA!VE-H!=4YLR;URKa z_IT>0wo_k^5et_25#wnxH3nIrgdtdD0cB5z65!zTrZ|KJP*Z*HZ9WX3wk~LE z!J}8;gj%MbAI0clyOaBPUIq1y;}u!%GK}pWw;%bwoBzrE=>-8Q zVz^gF1~M(qY8m!qLG5^3LScl%sVZCE{Cg^HI;0<)o3M+y?k_|a7c;h8o}MWzy3s3U zc7-Rh?BU|=}I3TpTMXydD+l)jp_LBCsyAD z!hMmr5KvodqOH~m6I|;Y%m?E&R3&JOkl4K4(TS zX9|dcGjrs!2M5WQL=P6reb-!PyFjkNoIpj-gJr8Nl_xI8DJUcu=di=dj%Bu5Xh86a zU62&zq*9?`){XK7DKuBAp85FfOk8q{3O|!KJlpS11gsz$lkH$Jt3;yE$vZVgaJ7K$ znX-gC)A|0=i+Q)hzH*^EQqjs2A&|QypW1l**9iewh{dBmbD{cP!dv7-9<99zN821;GBZkDa-1io-jynbHnrZ?b8##$`sX9SU_W$>fcz>yx zVwTV2+I%e5{jdm{=Iuv}hX5y&h)Y*Zv~}CjXmJDw>4+13SX9uqw9ln@O{|CovCr6+ z`9*A{>Ev^X<5>3f``%veziDSBoAb_o2qhaEPI!2De}BLIO~=HpbMl3_YW#QETRxxD zjo0^0*I3C1usu5RsQGA58ai#@0e6spP{xN8h@;qkjLOK!SZOj%E|nDHr>;#%jNbXO)a6xH?fr$kA7&n`v=|UcTuQReYT6OTW zIF8!LUWF{K)Rn&q#p)GuQ*gT%9U0<}nmzIf14r5R55WXbE! zr3MwvWg%ez?~9vAN@z_W(M+3Dy{r;~e_^&eg3!OCM3CiVE84=rcY(xJJ&>cRTl&lp zOWby@MtF~_KH4hqK)@}(p`pjjKuL*m$>U7T-E&6#Z_R7GlUtpmT##2DubGHqMFi16 zcz%$V4Xv+#x#YFy0!3e~%$J1aP2=gTR?UYi{snfkyzxrBHItJyCq>Z}4@gJIx8dt$ zHxa|9FPu9Up2<{Lhu4*9mWZEoPR+4TUty&-N#0N!-FpGoO_mWLjs>)cK@C%v@o2WnxY1P719BP zk_fmSx_Zj{w^KyOIs^Fgep>-0<^aTje24_3!R$9ep?Z1)CfiO5cIZTn^Yq<39PEqC&8m4!E*Vnb!#gsSpyQdC+|3FBuqO_Swp6FQaa7ll}V6U}k8GgFebWs#E*`uDTJIAhI@GBU4X4`k}jbbaeV) zNWH9GBqCB)Nl#_3>PYwBzw_&z^-f7p{2 zFhXC6Fo>tH*RNmee*B2^5=VK^U#YFQIAU`0HDBWIu7PJmfrjZ=3ta`bEjv__k*bxe+jeM~WY&FVrmHJLT?~C%^Zhr`M%nZE($9GY7Xc zN*f=APf?JCS1jubj|`;4Ar2Bv!;}7ApZ0@{S+FK%Dn5a_850v)qAFv_+t;rHN!U%p z0N|qSO9`^3WYw<~t;|j3VPpHsg&IG1Rq^n;a)G}*RD6H>o6CJ`K#HtP9n@6NB=n^ycP}DESKl1oWuI*1V~PH# zQk2uG_kC660&Wr#4L*XIG}54#aPNfjQ^4?2{ZeLRw^Y^1Dm2?@ORru) z`vjnrkwveQgDwgx8Qi@2S{H!?9*fp)`V)uK`EgCnDCeW9-{ju@C` zWRjnkl+X9Z2TyJTcT-mo$sNdyAI~nFcfYN$=l;&b5x47T^5b4pbwDw1zoI&9zEW`B z`#XRmS5jP}tg=4WHA~r|Hp2(4(tnL>HxV}ExM@C$?O0nqqYx?(p3EDQkn)?l^NlpS zbQOvtU7B1=zY}-*uz9s5XGT;Fv=<@Y{5T! z#%K2JE03mHz=90{FH1~)c%ETxk=d^>_zk&V?BSsd$m-_nykECdKAC0Eutr9)iPk)q zpwn+-S>R6ZH;BeEPH{QP{8?Tux|RC|imup#m%0>?h}e3MKt9+3iQFUx)FeT^mFuDdrW1lDwcgTOKzoE3`6 zHl|r?PUd>-@HMMr`&m9^W zXMWZ``|T*pmy-{K^SMHoWFLC}ZX~j%4j-Q@nT)on0yLl>G3bmlE=*i)z7%Ztk3LK= z>lVJNOKf#__X|Lzd~{zVg6g}*6$SU}YD??NF7d~WVj9Nm2SJpCYUS>4JSgbn5@yx_0`CN@}ce6Nx*`kgbe#KuY zw<+z!Q86J(I-Zi}%u$)S--aMEW82nIx@LeTJo)D4uK4zHmxzcMAOGj2s^tcJ1rn6U z^WDLw?eRMA)H&xAfgE6oYLl~iA163TRE(pt+&;)a_m{5U5xgQ zm`aemzdRkwPJQ2`0|B>mb$WHSSD?z+T^{VxGh~kTh5*ey%gM7TQ~)$W>X9!3*?`bo+bA+V77Welc$a)=ojwezD?(q&JmRmtfBR@cOo^ya>kH4ohp*14 zje~D2TlKM|1Ll1IF$N;y`qsVsOfb7w7qlRtfp_=vYSg=xjHlVTK!W(ol<`-vfzydt z7$KXZ)Q|IXvdgNv)0C6%;j`u&f|TJyKLg@R2h#1GDG>_Ed>la6-Kltbdynul-FHH> zB+blT=zAW%c0T;(54d80`Vp@0GM#4AA|hl|)zvzo(D?%)Yj;I8#vg-(a&C8kt)@{1 zK-g&ryB#}^W_6;-SXE6;yiA>nm*LOm6#?(V(V_Qaw7$&x@(uF)&BM_5`|eNj{R>e? zG(oz&2?M&y+S;zaj(fr%WRuGl;@!^OUqhwM!`bp_I!zM{aZ9m%~I zwDmA_bV+TbrKL60G+P+8@kv5^Ha1N4^T&=SC)rbXUjIf&7wuGy$2Di*eaB_KaeOIm zN9Zl}$^MU0*0x#{n>1a5C|v@ZD0au0AfbuIJyFw(7cV|rTcmSq~*m8>S?== zTzb0QP1(%^QTRS$_}raKc-uU`zPZh7$%EhH`78+tvbaGrLe4)AQA)wOhnfv{?fQ|F z$QF8TG21uQb=-~f(-U}V`*&%=Nn*JTD_qAdt*sf_BO^V8%_~#vsd8JYSYNiOG903A zmmla1{Mf!o7pXSM-SZm2J^FTdjL2MFTzsjp8^<_#dGGrKrTxWg?uTE{thE^3c;_~~ zaR2Z?m8|!I;wq?yH=af`o(7O7;D-U9z#v#mnDxyYQ>6;>Me?_d{9o%V=VJg(PJe_D z#J^-!l4#nZ>`ytPIz&_b!91`y>Gd%D;E?K?)n3HslWfvMu{_Zq@ggw~O!1m?fw^HKBjaB;wsM_~XAu0_#bMAB_R>EubvaY6~6z;~o{@lQ`w5h{f*qWJYaYXLv(JGes=0U`{YF1?czE-_fNxdt(!l-SBPQA0@(5u9=sLDmR~^O%zhGOe_r-Mmp?db!mGv27@O!|W z2FnyleEP)dd9mX=rQY~N&HCq&^BbBLZ+eX&9yB&^z*Ou*|4rGEG%}S2TB9x|_+epT zDVW~tBt&a}$`a7uA8&>}+O=!de9+MLMbA?;;vy+FlZkmglu;Z|$>{Q8+^QBduK18o zCq|X;W0g&#Dmip;H*1w8>*9RH8F6EnKVvZVSj zPifpJtJ>cEg9F>KU1wt%nTRj~LG#L9Uq{ZM9|W``KA+=Wh#XViShCA{M)>>t6U;|^03uo39*7xabaYb?fhoT8-=t9!7fc4? zH`L(QJ-%!c;cei`sSivWVl#bvr@w^qnvHF&kI>|8rCMb#=7y}CoP;^uHLmDNnK~BH zs8=y<;BcYca@%5|d@8F{kt$=Y_5rQW8}k43Q9m=kH$@a@$H#^V^idRC#yuFXXz3)S zNhzqchTAe^PX9P%h#}XY5=Vz90u+abho=>p;^P%UFr7EkFsN06NKc4Bq*A0tV16DE z6=CJHoH@SDh>xoF?%g}tmhAtON(h94f+8%h|FFsDc1ER8rg$97e5N!C&jZgcVekbv zp$#>Jjge7isK5UcGS}N;wMyDLhN`G2^nyt%K8Ton^mlwSb;XiYH23q>I|G%XZ%cql zAq|#rINxic0qH;P2_+eN9e=z90zTNyT@>!V3OqS92qH+_9Jd$mQnS zo12rGa}3MRfU>Fd?zIAnbD&gUl6?RLGJ78TWS&e*;c?ULe{@uj7pS=VWqbycSS;(0S7_9aJ;TTy_bMP zvU0Ux$C=-p-O{5&g|7aTG3BlBxLu~8II{)=7qNU~qr-5SM4|XrZa09>Uy_rNG6m=w zd=|7E!ZC?bwSJbB1%vm<@YZy*zQ-FVh3#kPB0NXT1*`|@2U%#5O0QCh+Rop`{QMRL zjfg;^R93<$!0|~yuQdxT79-+=qF<-O!FVL-fJ$$_pfe#*kN{V-Gr`t2Ak}BKy+Osp zf@L0w*eUvDhmhjv^nUeO(Q{>W{g}TFa^C;j3vk__>F)W{f$}Zcix-K5(_l8fsP()BAU;i(fj3($58 zd0npd3?x86eP)NXe2_myDqV;obR#x(hVz$X*za-5y2Jn^pQ}6q0!kI8MYkz86%7M& zCO<7NIYx43Lgamb*!A5_uIzTq=OYVWQ8?-@9jYe1d9-3Y5SOxwMXF-V$tJfoMGxbD zabr(fG!fB?Q+1W0liF_rk|&9Al&wqb)bPi|`WWj{a*$^%_~~iQ?6u2c>Sys$IV55` z)N^xDP8{-ETU)OQ@PDO8&)Rh60o|ftSci%`?fs|&DV=-+iV9uKbBJb{`kVVzi|;m$ z%+NDI$!Nj|qI!k*-BBli2ED$ie-f8-767Otw?Sf?fhA$!xWmUSKPLxypkxXVT2Nuo zJG7j3aUi2%z(GFbh1n52B18HIgd)BT>x{V+5-}7x}x|t)~?#@36jW zghi+j9M@`S`H@pxxuh_qJ#+)y&lNS6G;~Itns721~t`#E}ko z4&mE~qAp+Fa!nUkv}uJ!r`P$HV0i<+{291)~?TxN!=yMhN z#i-`b?HHN-efi}Iu`F$mn1JJHBK3lfECSKDBj|)@E$KBLHYq-GWN$!4n_f_Hv6WP# z-OGm{a12)W_5z!aGGex~eM#5tNS{^DM!~KCvH~-7>GlW{0nv)h?C)@jpo5^dk53K{ z;jfiQJ40?A%48;1pE>-VURMZ^p@Tp$yiO6eMQv&2+A7Pf)EgNXORv418DIyhx?@;|J=KUQ^r1)IK zouXC~UuH=HArInjB>sH8vQXb2U?f1A1JQy@O2g@H#}!7D+FyU*w%Yr*vb(yfIt>)D zwHu2ph{jV}G!Y;AXnTAZV8BatTM4d~xSo-GtXl!R3@5STQ0fB`fW`Y}QW((bW#3qE z@K&aK{c?1sM--r!7bl(1k6Lzjgvr4U!UzpQbjk1Ja?l*O2YVp?foMb$#XjyE9DT*W zfDM81kq8LaMypuuE2BRKm_>`#G#R#re7jGgcE3E_t?h0bh^o18#h6-v9E!OPjTY6* zBu@>k!X_XN0R67+pF2%$^%x+QBhxEnRfYBdw~eF;R`_meXk6A;6gw7{mYccAm;<3E zmoG9uBmjY?*=Ec|p60^R7eyQcq9&;J$);mRxtr|D^J31A^y(|N*oVQj&CT956O(`z zA+9gr%V`Z6aH7>~p0?m(pYn zEk9^!X%YL$HFjtyNe9VsF%44rfUw_LY9dAop2;?~lWeM{w zqe34ls!o_Vp-+qfP9_}0^Kxg4lf073P&z&c#8+}t3>jA!jxOX~u9Bg1Io7i;}W3N^9pz&EleITnGxSZ(G~Qd}1Me zS_V-aqya$$0&cc$y5g}#GJims!p+6Tkd<&{&#CEi^wXWQ&_U;zc{SXx*t2K*Wp3@v zkKI264Jo=mai(R66*haVD7P;!y6FE5iJP{6{4SEb+Ie^6U}OE$%~#YY;i9}`{Mj!z zBXkOWLfNFUj^!ttcOYx(Hj>YdZ<8-AC@grt!ijUiR0Rv^5QtwXaC|c zLlgY5Y%6$9n`!#zUE{0{zK#sUgouc!w5lpzg#jKx-}0-I`2a_;i-gpVkJ6(%CDVU= zJO$e!>Lrs!o3h_%q|o&3?Xe+VGl0a4Nv-l1GR+Y5C~niuIYVJytuS#_V5WZ6m07>J z1qXqz)xNtxu=?u3Fj(1I`RXD;2SL=oy}kWx$1}uX9{{8C!76vN8 z7fNJ8F7F-0=}2H_Ow3g;8O!ylp`aPS%lOVFej3MC-9=f1m?$$!gsyJRN=UeG&B$%7 zX>(b=-8Zbz~RP z0Q>?rKMnW`6_3av{$HN$bEI7z3i!M1@$idj05;(IBzYMQ((2{vhT61Uq5^dXgiJ0_ zK@I$_T2=NeJtgUqDs+7uUaF4{&M#@}=;k?1+<9x0;;pS8_lsZU8)WOJ@IFdHI0|k+W5*UD&0}U z_M-8Hh8yyZUjnY50DLXOSYp>F&aQ584CVM7^`hey zpDUPJY&ckVFjH$m0bdKptELMd*$dyO8xm^17&+)+XTA6D7>Lf)N+gi#*)>87!k6=K z;-TnOPi~=v3xI7@FV~MeYI`CAI~y1pN({twaN>bIr@^VO?4^ruu-KPSi{YM73cnEf z^m-%ch!8UBL|#)tADbkba9!Yd$`IOD?3ZXU>v3-9gjs$!7_5D)#xvMbgN7=AOpQre zew{$SqUj5Fd7#(}%nuzI^~*3@oB5K<^R~xBFJNB^hIxZ9j-|A;_(08~JQn1q>**Xl zI#==^dlhQ5*Dj!>t&QYQR|!(MEI_0n&q|mwWxtYgOpFTsODEbX?I>zQz~{qYI236d z9?rw%rlupQBnR42M@M!+3?zkf6*fWyDhA&EbQ8HxntQP`7l*TCj}>kHBFS{Ggx0Z7 z(NL+92mdr%0G^Z^QS{5@=f%Utrj_Ao1K{j=3k5bw7~4&ioDZ5Jm_-mu^P=N%xDPyo zA0Jm8g@1^lU}15YvQHblz{0wl^EqsCq3}2sw)rp{H6$KN6+sO^3@h+@$PxPGtGsJ9 zx#g^}BnwY0nO+0jFK`)l%nzagLaXbW^m?YbO3Am&rvAk@b7iH=^wylr6;6c+LkixA zvPpEWE)0>tQh^JqPTAIeJUTy9EKlY~al3*WwC>1S_ozS2UXXK7|BZt7T0^}>%#Dp4 zmB!58(odIfCg`!k<^m+s}4nWKRzAC{8BuVhxXT9+6T1u2q;ZeFfkbdWHu0w>ADA z!@oi48Di9s8f%i^9ar10nF)K>c8(8?MT&~5yNgele@zroEVT$tu-|{s77>XhP0EMx zB0?!O*f|Vd@i;xwkuU{R<=Rx27xt%ly@lRx3sisqjxJhMs^sA{=<}v!f{~fA>4?Ox zg_nny_c{O?T`R$#IZ{M&@)09-ed%-{EWL5l`hzvLF$NmF)F=468;ulZy064l>yPcu4Y>Mf^zHZXUm z3D&6ClVoH}!k!f9k9Q)us5D~p@~BVdgGI<^Q>x6Gd#F^tX%ax~b$gj)t*y&yb8}Hu zfFFX3jZN8VBxifXILU8EcXAQ>#h|_p|GkoIIhIWno*^bG9 zl*rp;L$G!6o>lrJ%dDFPGS?O?tpjxprjmI&A4Px`3TSWsfbQR!Z{9X5L4);n5wG!O zL^o)@ghwTxL{&?-7*?k6l_W<`PHAiR3~dwO;B$ah-kH-7(vh0jl9=k=clI{#b5M;0 z$kM%8KF@y@KC<}%a6#_nPT<0ZE7q?Tz=qVv5i?6j@33M^mrjX78c6J4)@bdfEsJb| z4naqHcDBN+PJb$AjQdRDHqtF|l^0V{_?8mV@f79Yyzw{9WqEODy6`1xL`2TXxkT)t z9?K5jI3POGC=zJs*uqV4q0%k=?qhu@=0t@!(L;u{RUuN%+=WTl_?dulagVWhYq&}7 z_=V79M_eyk0|83N?-C_d7;`eL_W~5qC%ET*5_Asn(GKyH?8^9LCWp@ades#_W~j$g zdSs)daWNEVz?b#A44D3{3nQH{4#*oYHC8W4TRj~{qlA$=mdZ3Ja{T!YLsl0yI8->F zL`4C-L#EpBq?RsBcKyohrHTJuClV$69U5uAd)evLRr}9vcs#NGn;b6Si;!_ZCrvP{ zhRdU=OuA%A4On|2HkkC^=dHwdgJCa%8s7iU761Q>|NGsb<#aVuO1dwY z5xo!KYiXIdhx}W{y?<%VRxn=kRJ~;N=*O3eKD@7Aw9jM0C66!&!EpM}$jC7(%>-gjP#Vg2d>oL*_tyO%B^s z=H%63Zr0W^Fuv_Re8o58Mf0*&(j=c<{l3vfK>c7T(t>U|O3Or2Y{jy;cT-aIYaEB_ z)RfWI{b=RGAEUy9C^qzegrUtL%l<}s0-}9q!>Zz9$c>j;w$ycIq+NL~B)@$9h;8za zA*?AwDG%1T@oxKlSEIr)loUti<-4`fV9C+nRMl7OuC`W{M03Y4_1VVU{kAg0EMLsY zalL{OxgAb~3$Muo1$x&t9Z>Z3&(S{q{Y!SIau#E>mhNM)-Il`l04c!S4_(&xCf2vA zHJL9uMHPJPt;ePWp$jkYF>>up+6sQ+kO(udS7)p`lLn_|vY}2QWBZkbUQjzlM z{&r18VZF!Al&tgRKuLO~I?&l8Hkvd{SPhrrO$%)m<%whAPAZ30UxCwVFu6nj0x|b&p71I zMo~OTTehL<-#3FO;;^L+|D5&26fLfwab{4KX!Ub>psYyDNm?_q!^7X7jNMhQy7lcVfQ?>& zEjK(oFRW+Q>6gj&=YCW6p_Xk-xt1F`h8GdzW;7^IrORP}^@;}59jvKC`1s)opz~X6 zelOBFIEY3uk{TViva(fmX?8t&?;wo=3{qd-l@ahYdho`1VgrKt z`0PTozFZF*XX#(*)%St|0=DOO}1UkE+uZ@H)$H_*AH=1xYgnXmyYJ>+=G~}gspbU_Z1O_*=^qJT-RCXab(x_Fu|h#?`BKKKS0XUyKbYs> zPm~Ue?cL`wa6B*oiEH46lKuIfSf}oBuO^!U3i!=OEd@r;QaD%X1l^xnv4h4bd^TSs!afchIPfOu6vGDo|I&yH zr;!k@*AIB~-|O0-|7Qd3zCp_DJLWt{kJzu)mTTZ4}I?^)3F_G zLCWo?{g&uL_`}RB4h5c0kEVG0rjyuQ&p!l(AmmGEM6^$rNr7Pl z_lChrK*XScwD0h=0PQm+vG zy;TOIX0v@xb5&m6fqUusyU9d}3=iz5hsYy$nBR>b`sA(}R#DMV#*rZCeTM20S$@IOsa76r`Fa#&8pw=DB@Y~LS+nHUDa1CO3B#G7hgY=i@TxmE*KI!)@Kjwaleu37dO%Fv9}>66TCHE! zZ(oOa&hn26^LL zv32TfrN9u(^>z0Z7zHCW17m-Y76#rgfInN(S2TA%X$0gkLHlK)6yH5nXx-QDP~)}X z_2U_p(O1Bv+0OF#4A_pIL4LU{`@Yd@gLiBMlUXeX6HWZ)=g3jSZ0Ia4r$_`~f)EhL zU$H6noP`1T-Y|oCz4PFfqn=&9HzAE@KRxtZ8H`oB01`LoWS#VGYvc|eWH&l_!dNJU zN5|MlKKpkf3!Idw%s!X)MG@IS4DBje}Fu_Z}zRHe@9N^=^y#t8raF-tJ zb({wS8qmU+p<%I+E~w%Dt%DapMIjSe_B+y3pu&MM$04q^`49*o$`__sgqf#a({LkW zV06C1TEv2AR^Hk{FTvNt{Q~lr-my@VTQ3-2gM$pJH)ONj193VNwDrKZYrGFg<$c*9 zPF~M_UT`8ipz|bHBJSCP?y`VpgFRV@e`55%*%|R_bN*ln2pEj$lsA!@&Sn`u*n2Di z{&x4xi+aOKO$Y?0`n)NefXyPn<^lKmk%#Qhd|~cFGL8b^gDKUn#)M$MBnfPoAq11T z#wNeb3&F{QvwqZn4w5Qx^XjfKy$aGj`1u}G-w*4S6!~sjDNSczl_~xh&q;}wVA%V4 zN7FYs{|f_j8`Z0`IN6sLDtcL~t41+TpD7k4Qq_(62ZqJf)N1D+o;~Lj!pZYn7GCin z2V^2}(P4u)ijwmRBe73H!GCsl)f@j~@axxIVgmjt7IE<)d22q6Fm zg>v~-INddcRECCvL9$sWp_9NC4y0>ON0X!tSyzUOi_3j=lgE%V6;?y{XPYU~>ukCe z+aF^DEEcvt3UdtlRsfCQm+>U=6|}VO>CudqX7=%E8PzT~k}PRvEyl1HQ5G#yh5x1K ze0+N9Xdr3E@+u;4{y}(2ep)s+4%oVK0XE>`szpA&lCsTg^%b^gB!||jPB-kIot_4W ztv)^$eY>1e*U4|1nwo<9rD$#`SlN@AMm&86eDHeOEF_!@B4b;ROZP7^I0~ULD3 z)YIGd4iwH>8$?2r6lWY0D^S#h|10W1dH(ZB5RjaaYSvTy(b)pYA@6=Ly%n(L)3Yp6 z@u1%(G`KVf$p*8rJdKKgK`j^V;6#wIW3l_T;|$X6`%htaTo9M05Nn5nVz+wL(OGw| z`DgZG-f#3hP8zF|TzD{##75m-V^HuTj0!#Q5}Guaol0zMzohoqv>NiYV{W^*5e5`G znHfpBli^dF`*kM(4-0+q874OW+Y4ZVgDBcDybgt7!_^A2fw0Kv&c|n#ysm;2tzH-J z+)I8{lZInEw&t-Y^V&yIfkX)WO`ivo zlM<=8hL<9oe@r*cH&~+e(De=5F4Pd^(NJ-6_KeBQD79l)M1@j5aa*j2fnQsMM^;`Fj( z4K@6`LWDaXdD&6_`sA(BX^$=J5Fn+&Yy%+dz9nlI4pf;!Ec&h>Q3Ccn z6%yzQ-1i5ze}Q?OdMaZO%7WKB39t}1;!cMR?B(*HhcHCA-z{G0^`ZW|K!WY)kU0nN zY{i5f+b5goD*()T4dx~Fy4Jq#lX_pY2SfbBqqUXj6-lxB2$N_l#6U@BhUx$Z`=kCH z7H{8UcIzFcU9mR_@1uO$SS!!lYJBa>B@)v}h8+Je29^f;ys)+VMtcY~B{eECb=4KY ztk)>B%vHc)CfyN5?w3C`HKhRy*?VhE{d{gC9t!bvR~~eV=q(TCiWGKsbM?0JMn+T= z-sgN8<=>OSW-Fa|bn1^94xC;%IXg?_j{(g{E+Jgwn`C|`n8CJ5m-(@lAbq4Vxg5Kb zqA7fLN;1BuFL(kZTO}NdyNvQc~gUjY!?Qed+SkTq;*glv(ym4u4 zZmcxjMU5d9QV6}Yt*ozJzYoTS%~>iG<~!tv2tI21sdy_b@<$Qha60)JbVz0UiVkiK zf13M_gB19sTPoIRV}}i*Pk2VkWv$x&%FO#NS_1_mc4grP4V{E9ZG>!Ir7TSZ5iyul z$TMS|UeUk&@ms-m^38;%jE&|gF8u;z~5-c-wFzu~_xO0KO39M{(H z!XkMna{ukDbo?qr;@CNXE7;u0$RJH+JMbz{$Q}?8aILcGWvt$=v0aR>*Z2D|p*-d` z{`0FMo&#I_i;^j9a)+@RJz%K=5JI1nqei8J`M$cX9F7jg5! z=kN&6CpRR`(p=nzZrtA?f%;fi86H#=YGm8(sN#m zQN5Lqs`#L_pOqEU+A4Gr7$|d~bM>iR zxaQN;w=}L2orR;Foql=>g?E-}o^}b)+p8Zgky{g`THR~DOiZ*Dt%6Cb;?JG#ucg_m ztLz;davi#n3g8Hm&JSk;fi_~lHKdhiVyw)7e|@8t>uVp^E78~8ovA3Cp|qtvaHPio2RJD z%|t6UJ36`i00xLn zMh&)FnfL3G7?uk^SLIC(Y;5hc)map=S_B96WoIWRgB8f$RD5<6($Psz&l>ISZXF^7 zlakupcIy8g|Nhokn$!&l{D(`bI=$9*+CnfrI5J?g*f;!Bm9e@UUJThNoF+mH`Gmq1 z1gPublGIaM>z_}Y|BJP^jH;^p!bd>_L?omoMY_97LAnv??(R+%0qO3N?&i=3L`u55 zySw`?-rxOyzIWVlKR5=Sv-duGtu^OdGoELz{zQ&I07*nRKMIMc+b|FLiJq1Czw2tR zk2apQ3RIDjYvCtR_4c<->B<#^e<22d3x2Ue%og8padC|mv8}e9u7JR{-kc6sSeS;I zI_J}a-t84YVq*HEZ+rlgktH)4anQC2v?=lv99L#jiXa`1F04il zu6)h~S4d!pK7a5^KkE5Sz@L9VNMijjYc3j1{rbP}LdX@d{`(F`GK>2Ep9dAvHo-in zw|uoVY)}#WV5tZ+V_%CJ)u3d_z{nh7<|NAZBt6iV^uCb*hh6Wfa<%^X@8pRm!Z*IQK zwIfpz5R9v+X!Z1LO1W^FuB~ySzx(uAs%qxUU{uNdF=FX@XX)Vn=3ecE0Q6{LilofHe!=wWLw{TnIU*5-%?yW znuu7sI@nxuF8&4Oy{2GeipckU^6%(>v$%izkEjWOlvemZ*~lVfJv-fIIp7QbESg-) zqcO+4R`~Xft-B}0hc-8QjgNO>;!JR+gn}(l(9k0_Dxr_9b*N2`d4A&TwY|Vj zHg$*h2U_0b^>r*z-90{ur(vO;3kcKv6%=N?9phJ7S695hIv-te{EE|NQ3{Zu3vdaQ zXFA>AWA9uvpH7i%ms6Tr(9y+*`XC9JCU`nLf@!JR1Yn~Ke$+qT|GhFfnEf=ge0#Ni zU)Mg7Fhx$ufvFz*7rEb%IxmZGB-r=BlvmCauJ2 zWoe!bxPGZe$LLCj-rYF1&G#}6!tD&TBXZ+=_ncot)4k2UR8I=<)V1j?kEoBSdG7w4 zxlF(Tp4V2ZwxFCGA>I?|BV$>dHkLg>&W`%4li{9!{p5^--$VOlLhcr{wC!CTMGBQM z@a$}(e+1Kx@B9jp2aN>^#}j8^VPRfQlsc9NUt|~ndV$Fq!q}QcnT^c$%vE}t5bcFj z5c$a`jEr=-r=%}Ey+h^uS-Vdr94M&rkB3^DULi;PuBbqF<>H#Hv5}1FLIE3YUVZfz zV};L}$u9gvu4_3lp^$qp03T;7731-F#LloViHe>Lg{OV)?f?#0fyzXNjW#a;TpCus zAn`ZaJKbM^ghoermAOD{E0hFjneXR5DYwgz=!mWQLVjUFOVzNMrT ztLt{?ZVr+O2>9g(qPES=6?gDtXBkdcI^vFuRDxXD%G!ZwQ*9|ji;4TqjZ6j$0fD8Z zj?c-{FL{aQCLy0iyMK@E9A6a+gU&PsyGO2LQ+$ACKGQl#c4krSF6V-}^mv?Y{`6}_ zer00^_74!&8P{cWS$wV>%>=o;M8Cj@3dboO4TzaolZ*8<)RYOtrDn0)DzD4itP&i)KSbI7<1v8k6vzvq%9+!Kgpwm+A)*yIf z+_QzLr}n-+%x{syc9SJdlUwxk{6B!rf+UFT4uc4ObQk5N8D;>);FI;EQja8$W1 zn=m{)4JK2O2^qGR^#CuJ_xVKF49{}X`eUg|3PteB3hwi0q;jKMA9V%`*-QrpD;+L0 zcx!FD#Yvj`LNk1gZ+a(8zElC4f**Xy<7&tdmRGTzn#8g zAT6`#^MDUMSh@vKeT4Oj?Wxbou?W`0E{5a>$ICKK`x3F1B-WTAwimZ=nwdIJbcj z#D;AoT~nWmCs>V!Kf;tiCVz^5R%+Ej_x2DFJ}8Eh7Zz?$s?&Qr!cyt=aDdg4aSsm@ zfwnCVqEEG&Yum|^xsR=a&}XnTjK$ZR7Sz_XQ!>CzZ=0M9AoU~8H$KY)uB%)IPhVE2 z^bFKh=t%bd7tNBl|89VxiLvQfd(FF-lVzgd5yw|&Yf=`pfI$rUv5k2NT~O`9BPwQl zK$M1#R#pZxkT)@ih}y5Os8;sZJNkEowB~fb=WVVU+5h|fo!w#@CQM@h*e3M`3kCq` z*YB4u$0W9onuUen4Y#5_`g{e3#%Lu&`d4_+#@bMe(FsXw(u7UxfQ)=9b#5g2s@U{Psa0uMMrTk2bKUcz|`AI{j zWROz|Z&GP_tH@m-x4M;fHco4pTeyDfK$jk~f|_#2vaU(RRa($XcTF22^ed8Q8IgbY z2EpW>KafINH8Hv)0Htgo&4uL@15hYCW@nR0@@4WoAVqoJ5IBpG8c8x8uL}mBjMhld z!(eT7zaJBhWaEs9s@iH}7b7SO_>mjC&eT}1)A6p&l8i%|u{yIleY2HmZicQ2kZ$uTixAi$K#U`?|4`Y2uef0#xsE1m z=gact+%yW0y;|~03y(V6w6hs~8jd}qTyNbj+$?=1DYc#r zp@Ws^8_0a>FWmRtf}20+Yk7x#h4}7*zQbFheCpZRl9t7Qt+jeUgtmPI9jykUI}E@| zpGaJlt#52qdqz}#@!66ivU7Ca0C|tWbUs@g-|K%YSy_f=izSjl9eZLabyni#Q)87P zeAVQYiP?T|m`g;alj2p08o8^TEJG<2K`@{JhF_cBZ{H;yoV(o#Fz?fb{>6 zcaR$g5xcO+dr3>n+hrgl3bKsY%$!FWyOvvrn9CAdOIAMMU_@~q!&3Jw*DX~iCG`ET; z$8mIa)}M~?gPpz{3ZHBJ)7K0I zbw@uq1cX@+Nzn@*h&f3v4{d9SUECZn;CvsWywb`rq$zs$R-glKR~glse8`ZWw3H0) zLJTwV4ewkwcmv8RA|r(EqJ3QtV1EO{LlOP?+pyglnv<6oztGUlz-nc5%$Lwg{VpFj zU_fCbE{zY5kkx7pATxhLHi{=<=4&|Lz9*;eSFQ~%QtF&qm7?l24h^Gw@K9pZoLbl{IZ-V(LZtT zl(be+nM|X$Xc#ZhIYod2EjZxl=;(rjg9~&99N66KTL-{=jn%FW8R_UO$_mBkui)A? z%wPSzaD3vKnNB>IBd}*kA{o!&A=7}se=JryS-_O9TJ2EGD%0ZZ6r3zr^`&~E0A`7& zUHolSbbrgMHB%#3H)=zi$HC^PY`QwT)jSY`uA=t#_kLg$%j8kr z&Y7h1bEn4zNZ&FDp&Vt z#&@pQtC?n;AzjL)Du&kHrL9_`I#;LvpviW#v$L`IU+$B!cAd7J8ZrDhr3h$BCh^t| zH+Wm*2IHq_RcPb#K96*EI>?+jYwIqq4y}Xq4Y%W^R?^mBPY;cwuQ45Uqsm-vCF@gR zfAe8ic0kk3){InPPI7SyjbeYj2p0`nW9p9=jJmF0VE+X(p#8T~`vsuB>lh~Wv)RJ~ zJqfPeJkK81nWk&K5gmO}hGI!f75IL~n^z#KM467RZq@zO-=9%5!O-0|I$7TMtX4V@S+;i# z?9Wz56g@u5By%tBU%01z5Tq5_JVJ~nTybWGrR6VTU!>>zFf#VTK*1&T{aLiCcbw?Ix26v zDEf^e*nEEL`g|bYnUy_X&SSVPdHN$oA4kpfUrd@;)G9QVFVi*Eosu6YAbD3?3gkg= zG+!6cpEztMUw#WqsZ&x=P?%kzr?t`1fw~B&tIw1yRlMWV)bzO6w~sN!$L50C%-4kd zRl0qbtIY+GaM$t`;F2Tyl3cwNdPa&$I9&cY`c>|fhB{4{u6JWr@I@3Y<67fIic}g* zgIiJZ>U5K+`vpEw1se?aqndh;0nf|*t=_nCDaL_=hL#2%8n$*T-PYTwyk4Gn1R@z3 zK6(>9hWGY%Bnx>mlvfr8g$mT$OBE+jnq%+%PNA(c`F{|>5sgIOf5Hq}O`ma_ zF}VW~t1agr zWi}-qD-h2{tgL#0(Q~kk4T7xckl^DtTpjlq0ne-I?ef-lkK^c|nvvnn9#yyW@Z2cN zetp^=~ z#?gT-mP_O5OF5Ex|Jy`1oRDwux=uIWChZT#Nhcu@(ap6Vl1%D34V_A<@m3j>-FoyN zdxU|L484^9576*13Z$m{ybtRB0=Er#L_FS`gypRl04`EXM#=)XXYxAk_WjxduIiL6 zT;WrT9tmf-!fr0-A>+tpA%NL1qs~LfXaA$WpB_|o{>vTjZYrqndT6I?F@Z=kGUw$B zfiSr6k_ihH=rO)Pp0~7cz((>}{DkH4Sw+-UP6-!gd}_x(cSmkalD=zVs5{gWtvb({ z8Few~atLShU@1h-w={mXb29uW-7Q)UA}wd^M9T7g=gG!!BFONKRbP*W0#uwqp$NB&wB@~0#xJcqUV;Z;N!mZW`CNz-9jU~`F!M` zS=f74Lr^{$G@Lqwf;H{;xB zSm2~po{GhAlF4eRGUkBK`#!4DTDQ_l+t+~5KRUj357gWy_4<%o@cP>EFB#+M73&(m za~hvB$Zs)*fsDV9e8yj(*j1q9`CQWqiphsHbm05#t1BjS)$g4~{-UN(9hojSI;(hW z*{aoUF_!wp_*LoOC?paV^MTj#gaStR%d30q{nMyv@0PN;CgbMCCqT&VI3*OS`^Yr| z-}PM#QYI41Obq3!}8%g{f@Fn8=ym%hH|^d^IEZd|los?cbpppyNR&U2T+{z*~U zgbn_iaHaw(F~8bdOw4S1r}OHbiLFMO^V?n7WcGd5$I>av>+65}2djrOj+gv?LK#*b zTJ3Wo0!zM%G{%zhL!hr3NGRMXsftRL-DyphJaBzgpH}h+0Yxk?5(Zpxyesq#~ z0}l_cT)Z2Rwg55r4A!+obFEWC%msZMF|e`ybaa1~M?@6%eak(iAjeB#0+k>7OTeh2 ze!p>wJx=?zkgQ#r&jnC7B_(NqJxxxYfMsQ?{@368cW@Giib{O!5_n~-tZbDKNZU-0 z!-1Ta@CyVuH|;dqEipc+-huyv1=!#bQ&fB#m5>FBoZTS02l3H}8F4CQ_ol9QZ&ZN< zOykQ*<2!;ihA!-Fr;fb*%*v|2-90zqlx-u0s%q}5)I8Yxfp01{=GAMpxixnmVbJ8O zkWUBVY3V~Us*&;If`7%Xv#w#ihQHJ(o!LGnK|t9EE8EzE(^m8rx=%HnlC5Lk8c5g~ zTYb!kreiB)ag+|8I)-#;6hpX?oLHbbw(({}AO#2(@wv)aomZy{XJTzFtFTa| zI#W?u+18bJZf-0^_@y{kPVXjO=nE|tV9h0!_PpsTH0za;glNbX%61q-CxHh`+l*IHQ>4WL-qzZh_Gv>W-N^jE#l^u@t@x>Gr{-Yd_TJv2ad$G3mmzJUt~x1}p#zjZ$|?b+r+vswS~#D@esCaIo37v3#&?G^tD+pQ`+Ua=Lq} zW?#?clc01sVb<~Px5C7lXt>ze*YL2!Iwsz1CRlN z!^_Kl!rM1+1RTbTj{;uJHgPk(Y%mZ3=ykymOhB!fu?pF(+|?rgQ@3s2&xXX9FqENM zo1wn6My0v2kO$oMq-J9>I(b5ll()ad6$J8xZqBWB{R;R&jpYP=c*kj9$S$(}`sFiM z8ZRXfWbl7>Qe6K;@5-Ab9nh%SjFQCTxml1{C-#_QBTb62r zBBsi+0-E^Bop!r^saRLGmhp-2;X~9oH;sj3Fm7z-D8Y^*g2LqrY7rx=_MLtr&olUf zHZFL{C#kIkF7Vf{`d=E^d9uavI9tS6!dh&Zrn-;34v`Aygs`tE&X(4oNhL{A0J^}s&eLXm42^#7p_)3Zl-LU{{qy3P6Ry8v{F#( zXJ+DNUMPauQy0lt8S{xyR8am|E!(MTi*bbuvMO#8YMPp3xnB?)l}`)QNQucWyo;G@ zy-iK_=TZL*R-g+mRRl!bq5`{~(PEgQ9z9(ucWg}&H04;s=$oO>%&DJ{kS{XxPzuJi z>j%n|zgWEhjERB(r)#6p{ae>05k>E2b%bhr>bK&%A*|KI$p7x64y+{N zJ-f+{NFm-sK@e1frV@{}RC815i)uHg3WI8iyYB?+STHk8#<^$cmB(en!5XqXoe?u2 z=)O{v!}PppADK<&N?_!qaGYaI&28HvVa@ZVTHF~S5ZX#9=XZks40Xyon(n%qK6<$T?0%sS|Iut?ojoS|!=O0H-ivIP+ z{~JnOrg!PAmAf@z{;I*X_Y$!Rq0ryXKAH`WvV1?X2Lkrh&Twrr70B%ZLjii-$N&8h zs@d{hx2rsV5BMkfS&9{rjEp-0UEXOIyXy3;hmO9Zy$zNLQM{<3afI~!ae65MLr3ZV zs^s=si4plT;k$L1uFE!79el339(GF*7Q9#qlgoGMfzE^gwL&G z-(KOXQ0l%FT_O9E?DG#Ve&b{qARd~lN}Ip`@xNa_r3N_w=P}M|Yq+`EqMXrt*XJjC z`0>?r4ve&&bF(m{9mSUxbzp#gR`p4?k2;b@2GKi}PzXnRlT%3t#sk-X*K=y19HF?+ zTg{a?r%bzDt5L*(epH{;UDA2``XK}ZwX$xzK^SmYod?f#bUm{KR442CKj&(|guBer zs~ia_2jzlOcI>kcy5(7R??^^;xkN;#x=`F|#S^6HCwvn?u^$F__awUbvS3VOwZduP z3Hd{t-Cy^pV{fqi(X*6xP!Kk)=6ef{@>4Fz%2y6LuMEXNd`VmB^rQ{M$v!RwD$pn7 zm0$wPAv+g*?$L5@$pfYI>CKF+kfKjR7v^u4({Aqg7SWe)w?`tu4NmqlGCDV@IB5>#_ zDahJuj@&v#!=JpO>|6V@%UVfFcPI0T0{IwGFY9@yvlV+XV$p?_l{3qJ(Iu&C_4Jcp zo?@eFzgj!bmEI0Mr!Yv{x4N;L)(dbsd_OR7_3ge0Niq2QfyPL#qIX`YM)#_(YfOBc z^{i^nl;frnmMNp?R|6z}bTBME!}dtI1GkG2!O?LqG_aF7M3BLBnzG<-U2zc_~sAVYA zSqQCE^o@$q*BUMIIBuej!+(8>5rmY2@-4=bZoZiW_C1RS&CJeLXyvCh1&tYn$P5{o zZF(5Oh2*uvF@kS7+Z#r?8L+=K7V0XLW)#)z{I?@BLMzK;?XM0jL&MZ1Rc2{miYDEO z;%47!f5KNJ6?(C}Jo+kvHsVDjVN*c=_!`VLV#^PWwI5~7F$Kt90G7WjB7f;4jMD04 zjQz$hmfB0{0*DP3_J-Zgyla%NpVL#`d`mOb zZZ1OQ?4q(TF7gldif#AqO9@dV+p3l6;6Q)3EkEe$7D>L4? z7XO(LjMcv7>KAWrm_kWD3E5frZ?*$bYI7>^?^n-FRSk>RzIgv+;dI9>4B~@1E@XK@ z(6kHleA^oYfyvs(>q##h<|nONWs-m}Zw8nTLq7gGy1yp75@;dmi0=iAg%U7pVV1QI zB&~>EgjH@)W;6AQSgy&&X*?l*?Aj2?>9BqIr+8OypD--@iYe_W{DU?sz9riI3mxVz z9Uft+c@M*qC(LOccsO)t{nw3uWyUqQ?k!tiel*#&k2aiwSq9*r%Rv;FU#K@xe}Ax# zB7IKJHV1;p@Tgx7$reW=<1pt&Y(l5;u!5zBnlMJDsbnk`g)Ec#xZySoWnF`L@0s4_#&JyeEyBL1V*B}1+81_t za{-R(Y7z#>k(7@Op;T`2Zrc%TWD2&N*ZKz-Eojrq{vyt|`d>>ueL-TG6WZ`UDbJp(N-KMvfIyogM|6xHhBH!Lv~*W%}UXGn${oq`SfG0X!~ zkvevLs|$lb5EsTY!lmBB8UFpssDT5kNLXdtQKmvs&rlc@rxz-W++nHx*&*ylgK>;1 zHbxi)0XKfB-1r~OfmP?vmcPw zu*yM{lVbuq4i|=`!fu#jG_QA%uDB1{I0=JKFyEkG1o$6F5Z_byz`aXABQUgV{iU%N zUe5+nB4`3}T}e5K*kEK?$`-OnDqV5ep9Aq*w}YLMs7pgF`MR}JOH~HPC>mkgc>? z6d0aWX6X`RSaJAkVpt-L$<8T=g#)S!jczWS6lzE#zK%B*4y()a=%uA3jX#{elvIl& zmXuSf1u05PhO<#pxyZFmPk+sqNN{GDgraa>a=;p5q+%J$a07*@bbj@*e2A@+x3Tum zWM(Z`Bc32dUjoAeOZ`1HL_ZzVU}rmX3#kf>Y}H6S2p)`Olf^XO1RQhcEFV|L;7Fn# zMR&;uK?hhEjTBn$diF+qJ~+Qmfl$K=nl`C$P3y+YVKvXS?PM1Y7fKIr;#$=2c`xaB zTu>_Cc6EF#brw-gM8bx`8~@0C5Nqy8;j_YP1Jt}*oyX% ziA25Jj&d&Tz_{7;tgQLs?g#(BKd?%yi)`12H}!Z z#Vi@`ILK4;R|02nrT!5Fk_?P<0mmV?u55);jBBz1EHfU^KnkWU3|dGvcxmZH!(a|P zr{Bz+$(^G2Vm2->Y2%>a^H#5AjS@i;e+!qN(nh0cxErNs?d6_*^}WW zVvutki7QZlH8M?a#Ysu{DRtn)af!xShG!cOv^-PUqG#X@^swnYDx?dWc`-CEcONd4 zt44*E&!L)3w$hy^A{nFPS~^5RdJ*MYwI`o4KGms1R{0&{c1YLk-mX1vOmYnzGi9Dd z7#)1W$&@!P|BuNoTxK6zExGyE-?A+o*(cMn)~Qkqw4sfekPEo?G`F^6vSEIXhBdV< zT?A9BM<@}4YI9%Nh`B6iXzVS+HlT+HTJwVbE4w7xx!9o7)&E1r>RQ?2rlXy7tyj^> z{~Z?^K$F_*j%j!rZaF;-ITGOFnyOXU_2gcp)DnKo6jD_-;?7q_FYKaKET78R+A2PS z%&z|>;&a(XK@jN?EkAk-Y9qjr{`K_IujSkJaK^u$H--CI_oe{1MeH$>$;J(}{cMa2 z+5~i1(~fRo67i<(hn~f0$3DH0#Of50S51`rq+{^k1wZSL{=3Nn!lprR)XNwEo;qh_ zY%C2`X-yK#3z?(JPVW>MD!&ZjZiGa)(F08Hw=dKsb`F*dV{7xDl>U1UfIkBf1OGX& zA@&=)MxDShA=cv6ro7`Er{Zz3Hpbl$0zvr6uynYlrAE*5YxxaufA`Fl<-5*!h5&-= zA2G4iR+dLQYVgDAy;&1Q`Oo>i?*1~+D>!XP;jAQtj_qFG)UU1`7}N?0umx5ezXbl) z3plUJ$`LhwfUr@dF2Ncv-_teF6&9wQX@EDGv$AHV82n1CKI5+SDlEG|LjEI)t(NwI zbO(995xP4K5*E5zA1)Qu90m(d1H9I&pxoaI;sd)nZuNZe9)qF%S|6AwR@c@70#ii% z``)0xO_ESiVRU}+Fl-_9)Z5#`@SdI@Ro<1V+1AaQmDLe&4#e~6vXWa7!KoA!>AD4U zAIRC`L;LxQt{asm%2(4?4A+=q67uOP7Z!Cw5&}cU;R=*w>p1gW@S}laui2Vd7@hH#pA~dDNbArJO$6CVxvQ2 zZkb9amNR}t`Ede~laa|bL9yLGD3P68!&K^NSZV4X6f?ZlgnCiL)SMH-j9bw0&l5^N z4AO_h^~NJu;|QSBRr6DmD>h4m+FLyqw(P}j-KFuVt`oqZ_wYrdBMMWyzqnXH$ z*b?rei3%gzrq$}76@@X5LS+?xz7jTXPfj+XE$~U+Lvwm+suxV`Yqt_zIx+rh0# z{+WN@+cQJ)7vse5*vl1?V9!0^GQ1!^fsieFG>{O@A|&AR*^UTVE&BYRx~<#X$>&W@ z7cyN`som!ek~7tkR|6R6Vok%Y&|Q5Go6klcbiL|Q`&3zF=QJR%jOOVcq{(fKlQ=B} zNcB%BYF*7RJ2cDB5to;v6nyU8MS>C=grGk|s@+co_pTUHxv_h)y_4B2+@>&wc-(oT z{e6!p$?3z1wee3zx6?Nmizz%&wU+11i(eJ&w6719$qKg`b?Vd}a;tx6Dazpc(&`gl zQo`Tm&0Idd=JU`q_7dUxdB%M->(gp#tj1dKC-`r+p`_eA@y#@qpKY0A-OH|)JW_E6 zUcmecYU*FjZJKdCe(}|7A@OqH%%oEP?TJhVG)j7;C(oML2G#5O5dFTmK91W3sPU0^ zbL3xPBI(Tt5%aH)N0*89efQUA2*Q6?W#&=|t=*pvx{=--b6EHFFz8)2Gwjbg;y@R# z>&$kb0zS0SOfA|05J#=82-IRX$o-5vtGd7UFOMkP3Xb;gYb7P|u$Snj znU+a+Skbv9XsZ<%PRRviI_ZAkFF1}| zBo$Tmi-v9LpkT_+#YYy2_pF|BHqsJ zDcI$Z*}J19K@UumnzhLRWC2=wg1aZGoP%d)F@4M4|&vY zpEPu`AdyL%?do`_gP$AOLy>uMVb>v+E17Xhya{>S_!GrE3n}`N$*OvGwLDSj-CsL1 zr+cS3@Q-=2-g+sjcw`oBcOt_r-WZ1ahdHHRi+; zQ*sw4=XRUNBg{Uj(C=R@(N6lA`?v_WlxVSVh9E9u`YuO&@}VE~EL$DCm0Ttk$6P>lZb(s>y2;r7zVz z|9UqD67If~myw(x6?zF6Q-HZP=vB>@u@{ojZ7+0G1V^uu)!4lK1x@2<;2Q6MCFI2j zNC;#L>M>8{b`07KvsC9l`rGQ7WD{*8dUB_urq&Vk1y{Y+f`rAM#*4+ATSa9PI;B#= zqgT24E;Qqg62+3)OG12%lMgvVbIl$*wE=xVx9^hmWK7iSs_lcjNVfwy2q87K~Wgo@wpxAgD?0$ zu+8t-iuex8!U=hCY;I5aohgHX5l%EfBSy;AQTPg&sN8n-Mp=nbanjJn$MK>S=e{Xb zHMP&5zK45!dgSKCi}{upW?AL=RJAxgH%~+C_yJ)nyV3 zd#7ihhl+Z5X#CA=vm^tsYLX^-Hz>+JKBSJDw%PJSd4TIX#E|f?9EGl>y}vVC2un9b zoKqnYaT`FApY=hYdebJ)v`)nl_zx$rd*2HZv8s)l9lJfQ@0!N) zMBfj!a6|uYG>>Gpx~}XS1*W9H6&B7=T++q%DwRv;R?${6(eXvZm}YM;He}L7S&#qb z4Z~OF>U267|E7y;MRw!RlXqP;?^Y(P{kB_PbQC5M`&SW8MjIWlg zu&_nYT8*`O;3UHf*;2tW#>;W!Q!0A?%+LGjaJbyK7}7&FVQP>=1^-^;;omx6eQsT9 zcC>8DP}yxYLVR5_atkCP;^Ly&wz9ar_){yhJ%+QT$;KRQOQ7JKU$BH?36~e#ZsehU zfg%i)!7I3!(=`X&@^8!rqBlJ0v`m@W4ME_s=#poS5swC=d758&&VanJ%+@8rT^qnJdc!oH6M;oMrW>=b9`Ea-L8k78F) zRyjg{*YAKFAjI(#F!0syw~lN}GVyo}@Cc?Dw?=%tZ5(O>MF6&Nrox4%yqSBmHoO{~ z7TeW)j?cnU>6)kaQU4R|4Uat++RJdl5SZntvM}kepkFeeg@qf zx$e}a2U|$Ru^T>Df!tUZ2e&I}e91oln2%rEM->&~aJkx?T;r5vPrBYo73l{(-`XQ? zNvnJ8(a|dP>J{d%Uh`7c0i!#?++OsAXs+VT{9%$6QpTcVd9eHQuJOPl1GQb_jYc@P zdLDFzzN!5iX_b9Z^V}TOcjaH)fq4^K3joJ{*Mpuq@Tr2{g`fKyWyKq!<2xg}XBE}l z&XQxmoR63(k2jPxlz%;&O%)(%Us+qh!r28Uq!I&fZU7%~Ugd@XpoBVSdeZ0TUnq@L z4HMA2MhbxSvUntRvLg7YlD)dTqEP(+3@Q*3M1Ns>O%5@={j)mzJ(hHm5o~Q9o%Yk| z(;>;%ubs|!Mry_rV@w&NVl+Rt-%i->X*FG?kufl&EKa2XiOo{IqAZx81$6O3?Jw007kqNw zouHYS(kSPOjEf72$qqYd>K8^Sq+m#aUtYBu$~0VY&Dmd_ln7g8c!pi;=%jOn(aDFY z0*17UOKpKNmoFVFTNs1@6_o;!R4r?4=U?w&*We(kGfy}gcw!h7x*>Pw?(Pm4`OE9d zEvRRrqM}$>SbBzrC7rZGdr?VA{wl?vvKt=qYEG33iAKx>da+X?V-dbZ__v{Vh6a7B zlppAIM(i0JG(G=!2vkPy)|tZ=G2*BG$4}K=95mF!ET)T`s3gewj-G4U9&&Q902k!T zFlX2(g7&)PZ%DSM`o7TDcrM-DZdIX@<*+Ls5ir*#988qqd#YJa3qa9$NbseNlv!aR z%{R+wkv6ee{|5{3iMs60-qYPlz9qdX*q)@nU85MF>%!!zP&q7df`cXXF9OYR;A1@K(+>k=>Wt>3#fM_YPl#HnCku?k z`v^@*vhV^?l!T0&;q*2Q3^(80$@tpA_RN8XlD1mT)^^Y<4_Dh@jnXWAsKvezp@m9_ zcRo0U$YfwaCb0I?%c%?TRtH@gdk?wvaQ3;)%}q6fNO(L;_bFRmskMNKlM5DG(O==v z{tRi?sMu6FF)`Ha0M}g4ErdE}6iZIRJQL?~4DWAryTF0}@B#DPg%fV|0dm6r-!2X5 zCqV`^o!-4Kid&2wcB|u}2$z=Dv+=R1-}9R=WAe*Z|DD*qp{}S>Vs$Vxy}f9hoV7ca zz^moN|FNswrZ-&e(M~EXyjDoycCcyMKABBUk;}HTKuRct?JnN?=C=v~B7|JGWisD$ z=sR*M56M7{Z8{kXOKFE=Rn^%rf!@ecllu9U4a|?d>$A}(0b%Tn(bhfyvS<-3%gKrL zouH@7MQLL&SzGtndQu@)iKbqpcn0g;6$+gI67u$ZAsoyzF)L=M)nL_g?HNA^+2e|e ziUJMBKUBCd0MOT)iywad;a`-MJ62m0DlIN}F=9fA%D|Bdc=y+a-~hpv4BoWDCGTgJ zu0DKy>v8-yR+zxn0UNG)y#K@f)Nw_OmEPzWRS*r zME!WB6ERw4?1+Fu_@{rS6$8Vf+0V(|KF_vX+--A5-wZN^(FnK=dYwg({VzRF%ei0-Y(x%mLK02yajdiv#ZfKatbQIBPiTG zx_a7QaMr^zz5R1?WHG<+9*Oj&?C{6R)lMmzTnFc-*{??yuC2S;b9)mTWrtFlX2`i8 zM^=%L4v~=Tr<_x69xCZA^Xnv z%1+6BpdLmeAxUH9A)3d%i%lQtRZth!;+{K2j{C^+{!d^xNpgf-K47;v)K^58)itgQA!rU7x{gnUuDVsJ12T+4b)u_iA1WE-bE(`w{3g3D5-99ox%haDn?)uP z``*n~Q+_Uz{%XmuTFL!r?JGMwezT8BYiIBTUtx*O`qL~9wo{jltIMlzrZPmmrBm{| z!!CWb?c-dv4tE1z_!criY0Rv)Qoj$D74b61RB6g)Qm*FcBTXj-WZrx3e9YsK1^a7Q z^Tp%q(XrJ;j#BTHxTZR1K6!rrR?Ve`7;`iB<6TYZpb!+($J_&spp@h{v8tTR zhxLenl#_DAu(ifC#mY|iwZ|ngMpa_+4;Daidb33zUrfZLsQ!K#EIT09a_>SmrNg3= zWaE(6pmk_DQ@J?lUM=3ZCF6mF<>zwpIo%B5%5Z8+l!}ka zDZ6qg9@h}g?sB==)aB-QOPvmX)O_`pfq?;>c$W-13WZ}48B5DC`g&bIT_2}$1x2{# z^F|sab*Fngx2nd##2m;?(2@bI)e+H%Hp6_OB34%24aA`9*}U^mMul3b7P~WRkANp= zmN6 zF=*DEfc|$CmP3L%?kh8>#fceix9YpQyFI;xfV-6c2>WDzGQ`f#$!f9wic-EYGI^GF z@}cp2cZNrRs*YE9N&lzMVxR5i7`Un^ObME<_Kg?kdBCw2*#}0sORdrhkwVerhRhm# zP#DDPJ3ZF9>+Q1%atbjP_aA(}xZctC?h1r-4yJokyzkSx^SqjuC?5DE67x2&y|6@& zzvYUaOn^9WtY-^((s5g%p*#3*OktVz%FUF|drvpp!v<>v#{3Xp?}{I|I(Jc9>CMSH zG?h|weGzvf8nqUPM?N*tHREbxsPg%RGyj%!AJcujW899@dHz-PgGPue6TT1N&@LD_ z)@ZeAAErQLI``F;KJffDD;Km}0vQ~O-Q+kd7VW4eD0(_d0>bdq|C(+`+3Q?G$9vIn!p;=AIG(_%$Wx$vRiV$NT8Tr4A%Iw?pMtiCvOHH@c8TglocPCpy10tm^8C*(p zVe+k^d8^eR)7DS%n};tvY^$Ql}&H(Ps5V^mP@$FVJ4 z#$_m)(8^t>kp0v_-HQr`34BiL#omfcKljbT?&AyV*7pyM`k3S|(;=9|!KnD6pcLHQV zkKfYW^V4QI6$QzPWUR40N35*6zI8$K_b-4UpI+e9Jvl0WTt1oKD0ZpxnviSpdJ-%z z{(e`tQAS7OdNrI7JE5pE^XGs|_A3rbe=29}MC&2wMB=@Giq%BNP7YJ5;lHq{Be{qA z3VC~s@B3Skx$?JkDo5m0<;$T6!SLcm%qiAht?b=o97unNu3Fp4u7)T)6FonHBQ6g| z74BF5N}=MaIE-;%$|vE|Gyh2tgsx6kbf#HIO$;a-OiakG+cFs)?nkBN1@80;5__7! z!afS}Uu9aCEYPNE zXbdf!k0O&D>fCJOvW~C29fevnA5mA8nk*O}dm`SfcG3aeM(FTy+JS;M1If9hK4g#u zEi^o9c5@pw1J7^Gtp09~xY_#HoG!gTj`1G~E*xW~K){vYU0@gDVVv`Hi6$0km$kf$ zL-{P6oG(>=wrjSTLv>a~Tf3`l(IbV^C{{cgC3@<80%+M(ZMe&tnwpA=W^p`Am>{rV z5sd;~rmsKFhsW7Fc$(TA4<@I&0I-c$) z-UHCZoyx`QrQ?q**bN8A(BHL$qP=&Nvl&we3qpG4HFIxuXMdFu z8!@U`S+QXThpp7=UF{9@F`J0N_C%^@d)G(2hkBsFY~Iq_JlJ32fgMp#yji?sA#+%9 zJ`$9)_J*6*Vu=hhK{vQF9Ux~J10@Y(O)z|p~iaw zHlmWd-=4(p;!1@-?LsG+-WCcMrML(^AOfq~;xb6V*|;yz-bb&V7+hYSDY4Es%tudK z{FatQfoEG&W9VR3SJG12v@Srzm+E~jD9+Ge`ga%cJV9B8|MEaJ@EgL(byt!L0oBRX zq>HPMO4;I*U+4BvXwk@l@uRZ;&-#dGMED?El&+|uYhS}s3VfV;gY&C22Q0e|lq(L; z^C@A-&zg*|hMVBs1fp#g-J0yN_S+%kKmG4tpRS=~-k!fCgK9Y+(5;2paGk6O06h2L zzPIB2^RS}p6(~nwFrxj}`S07v#~JIDAtfuHsg6B=$IjcN7KOXBa}ba1{{9<}4%WIn z4Xb`z%Eg}HeX;3EDOTe8@iFu;?QOr2#rt*YbW~soFdU3WC}00Dn7;o3rww}}EhBqW z!N5&}A|xb4pLp4W391ra-`>V1V=re5d^rBCL*}P%*1%_?{ScXP_b}|i``gCc{9~dK zDAg$N473sE)194tOB=KDBl1;ObhI8W-Wu)u<78^4drH{(I}WPZ{mY%5&yoYf3wv8^ z9m~tX9>>Z34&|OBi&(AY2s%JN^V=_LA({LdeajMCh{vYhU`+jmzX_7tFF7_wv^7lh z(be^}Y<}2XhA29D?AENqk4feNpD*@xuWXz66NJAdH2>Seb*B_t+b_;8?__5CsiY&izeVs?5Sg{*^=s8Z{j& z0T|j>c@FuQ4oQkr@I1YddjnWfb#@!3469$^4rW!qPwESm_PiApx8VIJh(Vg(%P`%r zeI{@_v5kOygGY!XVp04pwu;w1ubb5?7S_ki)rMU&CqRAfDqN*-?QMoR??U?Z0P)_G zC0YGs@m;E>%*=r-cr9n`$py5JGG$ER$dT$J!d`*C(GJbZ!it?>L6lJiK}eO+{MTR7 zfBvOL-z4}vh!l5x^0cHek4SwhIypni=1onnnb9g3l?3s*fPUJ zMOCZmfWLgR^9uMxsHkV#m2KXer!y1%>cD&q72xa|VoGo2P5T&%wq?$cVq%h&8Q$%9 z|C0>O&g&Um^_OJK+IKS`#UT?J`S}@e4wGF@KU3xJKgCB7%6B5}rIL=U&S@FQ4|gma zP7KLIoD^LFH|ONrv>%s4Q}Dn`i!Oq17`1L5$hfsSENmF4XtNJBROG)DcXZaMM(jsR z!^WtE@>^S92J}mQjuwhq5~|aLYj}>~_Xd7!Pt?4TO%&mK{_5WQZ5Oji2NO@PmMf%m zZfQIMf{;lK{|>#^-1Y0ZoBAJQj>V-eb~7vN_5#-&@I!a;ngpuHF$|+n{H?VGZ>FX^u;SzcV+xO!1pcCV1+$a>yVPDd!z z|E+TJptC#G)wch^KWnB65bm9K>XsYz>}9;DOCV`J8y}NSNiG~@A!dJ_(qxk{?C1X+ zUF>~}2O_J;#Koz3MniXne z@fxcCaw+G27ePL;T8UN#(__|P)@;syp33(=?V)eT<@)U*hM;A^%c ze{X3LuJ*Ul4adXk=tI&*)2+A%&d7Lu7<%L1;F~z|aaTH7;0Z?S)^iFr$PUNOyRL?* zfCE63hAtu+$n0^;+#9i5jzAiN)1l=v8HgEL&Nhyh%;oV@Jl0xBNWk0MJxWI_Vv;bK&7fW!vweNh0ft^{%_ptx^`0@Q`(L3jfl#AQo$4w4 z#8e%#!C$@JbVFnM$)FT9Y$P5pet*n%*wMTC&R()17=W$)zZP)bq_aZx9ZBqPT zN-7cC-2=<0uNP$my!A=3bbqE*#iP1uf(-LAe|LX%G(<@n9)8D~bI)Q9_6xtg9uL3h$n)KzrS^r=me`99O%59mbq5j3kVNTDB2NjUYd zu`dr6`&5_dH)=Jl|GAb_6{UjSTke)p`w9LUrM=d54wEmFGN$B)L+R*>3rb4%nB%on zbU@EP40vS6uQj`EehU&u4N#mHiQnj@v>8{Cj}Ycnb@sgK$rfII?2S4+j)}fZKB;Jz z1r((}pU(Ddp=LWwk=r1u~;__T|TqL5wyht7~Bb`W&kc5wBlV z?i57F9UZ5>?{&K?1$i5?Da{m<>6ADxokbR}zlFhnKuzn8_J<56kyPF>*fuyMemoEY z{Gvr~o2E`pISz9X-dr)q=1Ly1WW}L(>;bQjofk+?I@Y&XNJexKL zupdU=Ixdd*C7GY|<=Lzh62%*T8UQ2We4Ao|^@ZA_{%WM){c!?UZZ*uYiB;axQZ3lv z-xZY2N#8hso3kCbT|vefDQ?@HDO9-DSzTM&_AGXlm7X;#e3@>D!zK^oyp7%fmEm3XSU~goGNEKhDhf_-MpWlVCbJPfx zw`Tj9WclEzC#JB$gwo{rDHa6cP}3-|)OLkcr>LOOtBTfYuvt`N_|NX@ zCn#lf+IneV0~kBa#`=Zia0cJ`8@^v}FJ zT)aabeqdC)h|BK+a@KNRyl6a*9{0$PiCu{E0hku#V;=)2DhkTVkgBd;|M+Ify%RjB zPbyXnjpZ?gBn_twMRy!(Kl=H>fg7Ex&DiG@grJbY2D&_NZ<4@Ut7uJ&AD6??jfawZ zyU_%KZ*p>TcH%O(Vgg|VK0ZR=k!S_{A%cQ};Ow__e?15r$Rt8Z?b+X59duNG5gInp zWz^Gra9&$qJGpwaLNy}2M56ySzWf{OBR0ZEZt}w64Xtu0FC;-yz~{kJ+0Cs%kehpK zghHJ{DK?(p_2dUCmVoU@uAQBUpg@mLTyO8Y&MrRLqS`r2EtmCUGY*2AT^OP^9o&p| z98+U*xZv(n<4hCJe9>~8l7a<0Rsehr zpUWODDxq?s-#Xb#iYZ24c_wzv=xl?IKE+Y8=ZvzeRk*PoraJtn?B^^u7B=YbLd_Eir(5XDYV zS#b)NOkgz~3->WC1ZAD%mx={Jf`C7$7=5}QBtuG;<+{pk-MTtgZENUnYtGq(XQ)mK z=h8^Rh}yq z4^8M(t{Ofi8c7=yKX?mDnzcfWIOl;Kd)&Hr1YLv0i_Oy9wPa7%4P&@eYWHHB6t;X=A!3|B_Sa{m?9Yd;3c4#Il)0tf4EdPw#)8$ zJ1jtU(+=Diw~f$|mWL>iVhZ%T_mI<^?j(Oa3!Ub?TILwYb>8a-NrR*2NA2>cMQ5l| zc^=C0y(=gZcC=Ea$+Q&`=&#d9P*+48{kI<-vyU%&F-j~-9ugnfPiYKen z;=1`s`?a~S%zCXfN~Ov~7qyB$Zk#Puvpj1p#(NXX=hin-MKO4LxY@Ko{5B`G(YW=_ z7~YL9Qm=MKzEH{Ybg4zs_F{BBOI~>qq28yRqBDSijWr+z8szv#!iAO3`PKO$mL|87 zoF8TXQ@{amdNSHbO7*QU#C`SK0cT52+87&YxQsou7^LZsTLmAbp^9)%X;<= z+R}tnBue8!GAYaR{ylK&0nCf^Z@)jIPWmt!dT#smC6>@B;p$hv=Eq)A9cVU#ZcSXz zKrQXIv!x@7>JWKfJzAscE04t>FM5qCfH>&Jbe< zZMxt^JQn$Jt^1muK3)QE*t7MwVhV@BoX?$4CPvNXvP(l?)&SL4cJNx77r|-eDtirq zdW|*Lmxp`JCC^jisIZ&byJwzWPHLr?&PQ}-f9&2#u!_Yc9IWpCygEw{CMG?UReImA z$F5E&NEs3CII`f__jkl8^x#2PJs_5FX5@Tpt-I*?3L~_}d@)njWn1>IRmbv|FV^0E z;y-pAC7u#rv;w){=G=4%e93MgjobWqOR9ZTYF|&8>AuPboIIBWevB5CuAD6U>v^>0 zvtG11n*OXIeBv0KkCLqC2Dd+J+VUqkhWPKgO|EbE8uqFxDZ7IW>Uc)UUe%`!Ij`w= zC3~*ErpM=-cX@Swnq*PQM>5#9vC(iHS*Jh5=*Y{!rOOxU3(-w1UFgsxzxy=ulZL9{ zBsS|@?Kfp`SUy(%7kB>m(?@HYT(9s*-69mu#>}hn2sZi_Qr=d~9gy&9_4|KIGc{+m z?;AQg-uzqBbiLOUp~cP<26p$^ey>;a&5=FDTmPnn?c-dgsS5K&vaKOPiIHv^PHUca zkE{|3N=o0cS+D5%;jRb5Q1t#iQK_&LU9MvT0Q&IX{PCoM^OOoB%6UXtO>Q;i}6Tl3oFDy1E$(L8q?4mGM6@A%#;c!1KpZ9y#%}>^2dxm z2ZwXClPf56#_;FLXO3O7%;^}W*2Q)gA`FXClS0q zQw1BQ<6yT-zF3)ru7L6&5a9qM{hl&Dpn1ZKb~obeA=eME#&?H3$2&0uJpor*(u!fB zh|5-M4N3TCYs+QFqry!VBl5LdWP4L~WFwpGZ=@oj-mNPV2;co}iGqxO#qux{`c7oB z+}$S}^JvNK;?UsX)mQ#MT!5{OSFEq!hTe+7^W1#XiCe`aOFrPJJUT_XICj$r_4_ix zwWuw>W=JWqb%^Ejb?^`Rl=aMh%}{OgryPoa-D&EW^yX)bS@UF{Z+2>$?+!3bWp~VO zwmk-Di%nm@UG(7ji+8xF`pF6CrX@b{LN~q&pD)&JkEB2`9mag-dBb@3vwR<5ZWL0i zkFK|Kn46uEugHmiQ6gkIjmcRzpJ$P9Pqg61Vl8=9_E{Xq5cGrcTFD?>ll)QdC`#59 z{L5~g0}rBB=gkyLS?wq)c(uqQ(&*Nb%g8R%=J0JY?sMlO_JMjcxh|p6T4AY8Q>>GeKQe3vQpgf&Avv zVf!W5)px)bXFzhf8GAAa8h#sU5`DXhNLeb+b_~E?+sPp6%X;LF8hLdmsp!zBvw3O& zW83m?{kzR#Y={JGhrF5=H2d(kgt~~h8@a$!ponU>y5KO64)XA`UGD3#l!@g_9UMtf zhiB1kb;mbCIxxSJlMg{ycKLR+w8g@)hGpqosjXhPaNMr-{ugOjj;_`qZI~-=9G#~7 z`9H;?ro7ml)1%o>mO1?PN;}6gi#6LqqAkkIlJ#uT9|L`FIgXmFMXQi(t2EN(=;q{m&2cDkR6%R^MqeSS#beCK0x$V?$+-s9@;EE|{l?L!jsz+`F8OLBSxy~j*+ z!g$H0$hY-cCRSq_Ner4b8Mp56)%h-&NvvFt%qj4({Y3Gf>?9bRFp#49zM$g{yeA$t z=UCk1Ft=oV=88bFy6OkA7Pdcr?DtO%;q%?_g(dT{ghlH;GWsCJQUdhLKcF$my?@>U zIsVPuZLi865xOC!EwcT*GszpDZJbyS5xW)J?T>}@12d$upZpj53^?a$icR%KKU{fV zlG2-WB?kQb7rwP3ap^!&J@$R^h>|5+z$yU%*Xv;cQ|LM%J(z8c{m6wyB`~V&m zf)v1q!av2gC1atw2WivUY6LFvleJ%26xB%#;&{ zocu^$-)Yo06HIhuydyeqQ&DZ%x2GMH8lNX^^I0PDV=m}#r3> zEAVfkIha#AQfN17YlMs)hTnkwIId3J#=@Tf&L&|DZK$r|i%%BFoYgluZdG7~QL|CL zPXIYV?kGMNqO^$Xn_U5Ody^V3WZ64GCau_j0V)=&wZdW&x7@MYIG!z!&YZ{dT-)vU zW4W$m(MHs=!EmLF2nmwi4~s8J1YgKGSxlbymLl`m{|@?P{C1z~5F|>_kw~V);@Sqh zvPn4WUquYP!)KiR3lbwyXPywgOOiuo5~uz_95P{+rmFD z+W{e>b7TaDZ6~2l3UEoS$0ns)Bg$-rhTxf~Arn61>C9XbhSJ>nl0;Izu1$+6`3z9<0 z_T?m6JS4kGBLn^|@DGGPxxT~2bx6yO356~%A+gI)B=!j<1Jwj%o z!L$PJA|j3;-0YOt!2b%)DmDJwO@HU*rPl13*5|!Ptf~H+5;=IWAB;C#?7hpPeT;|D zkQl&V0o;@%wRZnSh1FO|*PT-2q^FL!VwOZ(;|}k|L9lFoUQv<6?7IP0(H@R^E!-d# zG(W$keOGegcTDA$lpH)kQz|al*LAP(^;y+J!%&TSC$h;}L`$tYHkNg7;HqcEq#aS% zeqrvOdCniPrdV1oxcfHVs?=IB{d6%WIX8|vm=Xk;yn-Tg5DFM^H(nR;eXzV7kDFDN z^63}PRRIyY#}@7J038_$8d7!0SLq-`G4 ze=3KL&&){5RS0=~Nfu5{b4k9gX9jvTB=Y$iK#y5y_Q&*F8`c&*m_JTA@VE?LE#P64 zTkwd759U8^G?69@mxZ<{m+5-d#gw<6mtZ|S5W8TH;l~5?*c=y+B8Ax+QscA~umwOx zM-2?1a!${oafw9YvO0Yq><)i z;h{jjGRIJfRyAJSY-GRT*Uoys>l-JZyo)9HJkN{8cL1gnz75J&%c_tL0C>euZ_o5e12 ziqoA2SVPnx)eR|bvGB{$$kPWd`xEf`(a*cPH!wC$^|So^Nr~9>&Cs999(DXMm>9K% z94m&5n0}71sToH##})RM$8}Az`}I6@@&huBp(nT(wzDH#{YsqMg_p|Pmv8B)B8l5reo5mHe}$?=swz0LE`!_HYV$m&i=L~#&Z0i z7LS~IVn{$77u9wg`2pfoVzyeXOr+*tQ7ENWW<2$5+JsI+)4njW?^fcH(+~>83=Ldu${&`yeMzbzavb^<@Pis>Z;b&7?N#t7A#H{xT35z6RPA&P{3OQ=>dUv%b7}xvm z?eas#w{4w=%=|}BMEF}LtIcZJ;?;ift@GWawkkt6GC#OhE$4nj&uUY=uhjpfBMGL` zgcjNQ_Pq_0ntrq|go!gdq{0LavSR)KdX434UL0OXnZ3Sk45%AFbH{(EPe?0I6Or>}G7iHK5^51= zvOAvO&U9O7iLGmx?T+(#49d@hCD!TQ3$$8IMwy#ys@1!qsSc9LxT?Jdr_?-u)l;VKtai`eI$b>-u2P!hC(J(lwEmy+O97KVuWQFcq8H-qua<>l&ru4<%ssY)e7o3CbBS|DIxa=weF zCQlie4&yu>${7Oc#(p0|@p@mVRk3x1nDcnMJ=b)S?)m9QQ)PmPgD(+MqZXNZm02^un1lEc^r{pHbn zkZtg|Gkw=B4zx6(xYRzs3hE`r=n;NtStK9UnwQ zu!$m4ZG2{=4PCL>@*ChIQ|FBR{qOk(6Zi?qTN3xZxia^?rv>x(LCs85ukkfmBEy44 z-S1%HOOvkl)B&yuP#_Sko!oMNu#F~{K#gH%cU;<%9^L)@?=bF9vOM7v6y9M-wNp== z2B=TYjme^*#S%z|_hBr;vdVh<#Kq0+ui|*6Vh6vxKa=C>HrbV&OqsEk&a zJ&k%!-1N54N^m^Z6w?j$X;m<*E-k%+sWlcG zy?23}Oq?J6Gq|iJj;|Bc>Ue_Q?^bW}?|B24#eldVzO15uBbD)G51%)G>^gfAF{|+_ z_22hI(MIYi0ZD+2;3Fgu^0~w(T1hh1NInWdvkZ@>BDNJ9CyDjc0mpo*c? zI8}4-XYIXOFv1NK0N+*Lk-UAn3_+j-QZT^pAhi3gWoMLd0SFrY@Ls2577|hs>tHSc zn1@)Z5-_v{L=xw=rZiDNThkuP;b(mi-~5)aJNPG6dH*t+gGRkSz-7&3*}Otd8!95^ z4m(Ys={2oVP@nxUvRv`3k!@+XCw83Ik%*(U?Twp3_oGzX^GzO$F4GesM4WFEju>fooq)MAwdf3c#X5r!VtiwI1}rE0=O3)!Y`X2cc1cic=-4qK(2>l z{}Obl?BZq;h@^f30s%TbV<`*x0u?5@v~^lSp);lT6 zA!(4H1E|ea+s4m_gu=4kZ=5bl?;d(-$wp{-HM&f6AHOfIZnS4V{~kGIJK4;lEvN$= zjzuh=_K-JbB4S7&N2cDk31Lhc$mQCr;(6?j zVyn8`r)M{w8w5UH$dW0nU!xTcjh515_^-w(63Z53K_HlBj|m8l`orO?+JeTmO!{+; zhs+wKK_E#{vRILntzIbII?9Ilw-w%~8FnfuIY11e_w=0t?4#y9f$2RqCPqr`nW*|? z<^yNyv|6%uV;5Ez6&Thfi2mV(bOr1xzk-mJbCaagurh?{`OT(|w<)j*MPH@PbQV{aGtlknm zi%D$+KFYJZqLy7y{CjZBiP8+euL2d^B;P3%HaT z5ysw&6;VK-GTr~#Z;Dyo%{-7jHdPdSe`3fMeBE7?tS?otK#j`qU%L9|p@8@Wuy(Mn zk^TW=xHKym{)j3l_{9E@Q-+Et%iw`N3EAo`$so&%YKNnw%7ufE+dd;t8jyq5cWH2V z>jhAUf9@E7Tw5`F2txf!Qxi^2xKWEmD-ulAV9s}8+mgF+V+E6dTJeUS{bV9yo&>hs zx0S_{&Pb1sjMuX9g*am|ICfk^QqlqtSO7`Jwf2}kCvP&mJSr3Hrok+akNLtL89W*q z09v*ZDTYRmzfFDgIAIMkb}NgNIl>Vw?pRp8=Mjv#zH7)mxqzMy>@9BC2z|1&B*0qq z2<`J6B9p+Gn5wC;IF^TWetOmbyMm@Lm+f~g@RF0RGw$>aFZQr+k$ftZk6U>AeZDMf zt@6wT5L_zww15HY10hp)pZH0V(9rpgS!5V$mtF-;A0EL@-_W$ILXisuoqQn-cAVOS zCA4{V_@JO~(CNC-+Mtd3ERrR~3OJN(vGjO&q<;ZUVY2o6&EMy`2^ym1@dT6-IUvjV z6#x}Jli#F?ghq2kRsk)gM5`$bC}{cOiJ$Mp9Yzk>53$ zB`kcmn}F-^S7#k0^uDssqF|uvbzZ{_Ho3<4jXJ4Lau8I^91Nxjj9VNp{8`=Qx1FZ< z)`%Gq&noTc6CW8Z(b4jnRRj7u_&MEY=@31o+HFtS1j(MCXvkG2HleJ_YpL)1aL8Zv ze&=X9FdYIr3EOk^Hw5#;mbW&%L0h<9K9pFQ_dRaG!l*l?4$XE_m|+`S;xGAXzmDJ=3e_t!UOA zI9(s}cBhI=oGVa1|x*@xJJ9Z!m8eyOM9Y+mek3#&0N#XU!;&JsYE||077yU+grpr(S zarBpdYlIZ|)#=nz4B)87I+)>v=6}fN4&gqWV;-siK zFc#`!+jtVL;Z19Pg%^y4?%|QC5(VIX#GPeHvxm1@ig)I0FhIgXZ zw@rB0D)?T3lsuy_5!?*NT|&3={~+)(h`tnbei0K4DrvWGA$hX4w>Jg6Fu=6>X(8hV|2BLl=DoTnp9K}UHec{RH z&z%L)KTOqAN&av(g|%>#BKda(fz<_)$)B%c78;%w8KrwSD;R$sR4{0tX*-uTw&O2X z$nG27wG^)MDo~Q@2r<%x1;5%(qG-DBUn`49w=5NnCG*FxM+#;b$^#YZMUap$EjV&t z>n0U+Pw^lhvr`bhHA(q%sNDNcDqw!l`g>8JM08NgyZ1g3f=$3W+R{m6TA&j;q=ods z@~=~YvIa>l(jMJ{KnGm*Ju0fpbemO)dc>sC+LF!LWWj_W_u`zDjA=8WC0+Y=Ph!g^bl ze=G&oUJ!9jTgkcS=6Vc@7h`m8vIF7afOvmwK?$?JBC4CP0b)10$Z1BVp^X9}MW_BG z$TiY0Y_h{64r{ZSqJPZd)Wf31Si*@1N~HG-i=035$1N7dlLHFf$RYBm4x=|Bulr?- z!h{fkoQH;}x!i9}_40=gHNk~QCr2z%KUYsIpnIqyJ zU^+pRym17rjhkZq7rdV3l7z*&GlXL8*ZTT)tDrKz4|-ML5?9cl>y)E=uscR~7)uFp z_%O(QT+CXE*1p6TQS)Zea?Un*ju__!kNsNqMNK?3$c8@+ut-BH(gB|TOoE}>eRPG)P z@^Q5b#e4u;UiSvi*@B^9qC0y`9&2eZ`fxuS&LR_r=bf3MMkA{oAAA5X9^E zjXZSF%0A{zt^ekt%l!oR<{l-KV0OwGLj@`i(T^(^E4}R4HO;QId;@vtApC0zJ)Mp) zn0}TI{b03QcU1dv_phmS)!MANB%-;S<7C}cx}GinTOY&IQ#k80J$v{!r# z{Eg`NQhe!G-qJmMCd)wgQD zq6A&=uotkB1_nE{u4*fG>?G&6ZX+b;e=fOT6Y!!)R5`r9!iN9_L2IQ+v3w+X;U!g>SA_?1@lO`sHd#$wzxAhZJkcmrljgFW=qykADucy*km9>5-h@ z>E@A~_t(Z+ub5gT9t~JhAAtw*OKbIZ-Gs&}>fiy5Q|hJQ!|6})J9tP_UeWz|ct+80 zhB+9eiXyH1vgs$JHU!@;mE{MwUTLK{{9_m~z5$Mg7q?eX^E2Opv69~yVMN8h1>9HM z21|oScl>wQCIsjxc);MJ|HMen#|krjHD3w_)~mOIYhgRUP;m}P99?lPk<=SQ7|J+d z&fpb%5A_mcw^W`(`i7-4m-y--YzoO`W!dFg(-#&b(tsa$DRk6$%E)kWq$g-FLtLPw z5k7Rd9pGb|b!qW&O#JVqps1o$Qqweh1tBL)3iw@A1+`r`2=-x9HQWrrGRDgw! z_nh=*_~VJ6A&5R;w;fQf>j`tpJ@M@PJB<+!}SCCa(x)Nl(XVqL#|~F+$rk>>)>10lDD9Usb^G^b%}Kw zzTtv6um)g@A@5tmw~y9mtW-!-)xY#69?PY<`%Q+oXw_`g2Q!>dp- z(U087yIux_yk9r}=evEpE`L3~jsjdS@X-l&HpatO7%?if8TYy$Dw)t|9biVpDvjv zFpvDdQJe@##l|R^z+UsZ99_`N4PV0jZyhI zg-i0kL9a?H7Dg-6C6vT2R7Po(^5pCPaCj&8@ATBnBVdBnw`R>tmok#HXtuAui)Uo=3FDDQp};?V33O{67|1j*(N8f&?u2r zGEdTo)iUQ`OwxEe%W)_?0?sfIK;fl+*0a8QfuDqz4;>vhube04%!j(wVoCgOMB#us z7@<*GR8&^``t1Nw0;PpvlGu8zWv%h-4`{!)w|Ad^cQp}xCY#^d!~G8yQ=?Kv>O!gr zN(O}cXaP-%K%hH7>*UYV{*jEb*)^Y{9?ey#0px1#y&hxCF`t*V!7SzRK)Qppv;?c%b?{!{j?|9a<=v|BT<^K+eg(%`|SO8!% zbWM_p2lW+&l>KicIFrP3W1JdQ+#VmQz2dF6MSh@Qzj#5Zh+*&hx9}7?qfFOdlvDai=2b)Hk>|0@vqD#b6W`#0vQO?=?#Y9y$N zr8V*gN>nTk%p-bN|0QWDHS&#Sf91*W3}+Z+CW=esth!q7po-CUqmsOvJm)FM(7;dO7K=o z{(7lirrT;iq!QOp8K%VZzsQ?Q`%31QyAw$lsq*>)z?Ra5ED{n80lRr|KF9t?LY~A1{xN zMaK`y)~~l=0^4pynM-9ygj^hHL$dGEI4OCX2n_H2++)OSC@VgVHsA){k@`DF7ks30 zaesB9`uaD5p?qTf%4aQ6kxzymF8H06&W$F&@-vTiQ_IM|2#h!k-?&$5x18tpMx$ly z&5ocwFKXIbn^;Uc=213b@8oK`a0ysnAJYyXd&Z63v#51%$6;Z<94ezcvAfVsg$4Gt6WBKv8-(~4~TfmRx`wXdx$|uKUY-;r?-k&c5u2y>^pyYGjYcVMF>NL;V zfuuFM;*7y0_$J+_#Dx5RBQy4D`ka>@a+S5f0_KB*gQsc_<8Tglf`Tp#CuE_`$@(Yz^b}o)zV0Jzu?2KA;Qyek{KdWDX>Ri8YJ2pU+s8n)x6NYRCOg>hL+eKyin+26HaQZ= z{kHUsDwQ8Hl!T$|mCH=f%gf7gOFnoh{O{+5YnPX`2}UW9z#@T^O$M&HMQr9Xr_(>MQS)F*|$=X~XD|oKic9X~CxjV_^EvszgHwi^=h|kSY zTAa<@rta}n^<`w}!Lv&;Y3ueitE>iii%x;|h<(}A%R%#Pt%4#tofdbF)c{$oRBp{i zIRse)`7*5riuKbORpkVpZC;iw(eR8 zDRQm;F|khmfmbLzS(3w8R74mdb~>r58=0z$id)35eJ*@2^ZbZN(8y*6BsO>oN{y8TplByYy z1#@B&osw-vG~pDn>-e0l%amRA@%q*!@^SUTr%{pXBAeh6ZdN9zi3r+y?mimmIO5jw zDpp3j?-z#LzHNa zXNk1#dHM`X z42?h2zR3&xWfrZ#d;eJD;xl@;pZ3TJ7Vgnot!_yB8#;QuQTvdg*^eLvkth*M!?oTw zvo8dd-qTKsi;Ff@j$yQ)iBVK^XQO!5BevAkd;=2GR*RH098sNf#)I8R>wvgdPnS~G zJDLfV9wuIJNImfs@mx*O-^62TyBkMK^0}?v7P{%|IXWlzVdV4iUbJic3?@t{a?CXT z()u_!jmsw3rL0A>?P7{=ef6}(AQ?lHnb`q`eL%bhhb}&BBHV3knPY%aDarG0YoP>M zJH(GWP$fO!%6RH6Mf$xxw{qqQodjMNB@Vr~ElE{H~VvhaM}N zaNCVfC~oH1hagmK&5Xhp=@X6`N!Tk!txjR^TDGFMROw6&jH zavH?zR){ADi%wPhQ5%DFOwHgcmw4}Z!@4HL)M5xWk(3kszUY)Ze1@=cVifdbxqsy;1M>ZnL3Q z6j=!urLYwfwmb4c>s_@~_Gt0oO>wND`Nf;d>UQ*oQf0K4RwTO2KQ7mL+&Lz{tc{d1^%g6Km>LM%X zRvbbH(!mrbALyS^chpx`znw1Eou0K6X4EE1kt!czfRdeD!3rL6`zqiNnw>_he6U zz7c$XI_fvJ@PFsw>pw{*&e$h(QSd8;M#%rClON%a_%1wEp;I>y@FyWED^m7J&;S1b Dj{BvR diff --git a/book/source/diag/Fingerprint.svg b/book/source/diag/Fingerprint.svg deleted file mode 100644 index dbdacdf..0000000 --- a/book/source/diag/Fingerprint.svg +++ /dev/null @@ -1,304 +0,0 @@ - -Fingerprint of an OpenPGP component key - key creation timeComponent KeyC0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94Fingerprint From 2ee0d7263af981238a486669d30d2035693e2019 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Tue, 7 Nov 2023 21:16:08 +0100 Subject: [PATCH 02/16] edits on Ch6 terminology --- book/source/06-signatures.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 1832347..c644e9d 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -11,17 +11,17 @@ Without signatures, keys would remain unassociated with any certificate or owner ## Terminology -The term *signature* can have two different meanings in the context of OpenPGP: +Within OpenPGP, the term *signature* can have two different meanings: -- Cryptographic keys create raw signatures which are byte sequences calculated according to some signature scheme. -- [*OpenPGP signature packets*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-packet-type-id-2), which combine a *type* setting, additional metadata, and a raw cryptographic signature. +- **Cryptographic signature**: a sequence of bytes created by cryptographic keys, calculated according to a signature scheme. +- **OpenPGP signature packets**: Defined in the [OpenPGP standard](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-packet-type-id-2), these packets combine a raw cryptographic signature along with a *type* designation and additional metadata. ```{figure} diag/meaning_of_signatures.png Two meanings of the term "signature" in OpenPGP ``` -For the purpose of this document, the term signature will refer to OpenPGP signature packets. +In this document, "signature" will refer to OpenPGP signature packets. (signature_types)= ## Types of signatures in OpenPGP From e20a629db7dae117e5bc167f36a9a98781e6f6c3 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Tue, 7 Nov 2023 21:33:19 +0100 Subject: [PATCH 03/16] edit signature types section in Ch6 --- book/source/06-signatures.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index c644e9d..938e80f 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -24,28 +24,28 @@ Two meanings of the term "signature" in OpenPGP In this document, "signature" will refer to OpenPGP signature packets. (signature_types)= -## Types of signatures in OpenPGP +## Signature types in OpenPGP -The OpenPGP standard defines a set of [Signature Types](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-types), each identified by a numerical *signature type ID*. Signature types define the intent of a signature, and how it needs to be interpreted. +The OpenPGP standard defines a set of [Signature types](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-types), each identified by a numerical *signature type ID*. Signature types define the purpose of a signature and how it should be interpreted. -Most OpenPGP signature types can be classified as either: +Signature types can be predominantly classified in two ways: -- *Signatures over data* (type IDs `0x00` and `0x01`), or -- *Signatures on components* (that is: signatures that apply to component keys or identity components). +- **Signatures over data**: These signatures are denoted by type IDs `0x00` for binary documents and `0x01` for canonical text documents. The signer uses these signatures to claim ownership, assert creation, or certify the immutability of the document. +- **Signatures on components**: These are signatures that are associated with component keys or identity components of a certificate. -Signature on components are a complex topic, which we discuss in depth in {ref}`component_signatures_chapter`. They are grouped in two dimensions: +Signatures on components are a complex topic, and we discuss them in depth in {ref}`component_signatures_chapter`. They are grouped based on two criteria: -- Who issued the signature (self-signature vs. third party signature)? -- What kind of statement does the signature make (certify an identity, or bind component keys into a certificate)? +- the origin of the signature, distinguishing between a self-signature and a third-party signature +- the nature of the statement made by the signature, such as certifying an identity or binding component keys into a certificate ```{figure} mermaid/sig-types.png An overview of signature types in OpenPGP ``` -In this chapter we discuss general principles, which apply to all types of OpenPGP signatures. +This chapter will cover the overarching principles applicable to all OpenPGP signature types. -For more detail about specific types of signatures, see the chapters {ref}`signing_data` and {ref}`component_signatures_chapter`, respectively. +For more detail about specific types of signatures, see the chapters on {ref}`signing_data` and {ref}`component_signatures_chapter`, respectively. ## Structure of an OpenPGP signature packet From d4a616094e09f184e0203c1b372e5b60abf5ee02 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 14:45:39 +0100 Subject: [PATCH 04/16] restructure signature packet section of ch6 --- book/source/06-signatures.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 938e80f..704f27d 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -51,10 +51,9 @@ For more detail about specific types of signatures, see the chapters on {ref}`si As outlined above, an OpenPGP signature is a composite data structure, which combines: -- A *signature type ID* (see above), which specifies the intended meaning of the signature, -- Metadata (which is variable and depends in part on the type ID), - - Most of this metadata is encoded as so-called "subpackets," see {ref}`signature_subpackets`, -- A raw cryptographic signature. +- **Signature type ID**: specifies the signature's intended meaning, as detailed above +- **Metadata**: varies based, in part, on the signature type ID; mostly encoded as "subpackets" (see {ref}`signature_subpackets`) +- **Raw cryptographic signature** ```{figure} diag/signature_packet.png From 3b401a17a7c5d37804a1f492970fc8799f0ae473 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:07:35 +0100 Subject: [PATCH 05/16] tighten up ch6 signature packet creation section --- book/source/06-signatures.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 704f27d..cad83e2 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -62,24 +62,21 @@ Structure of an OpenPGP signature packet ### Creating an OpenPGP signature packet -When someone creates a signature packet, their goal is to make some type of statement about a set of input data, and encode this statement in the signature packet. +Creating an OpenPGP signature packet involves encoding a statement about a specific set of data within the packet. -The input data consists of: +The input data of a signature packet includes: -- a number of packets (usually one or more packets, but in some cases none), which the signature statement is about, and -- some of the data in the signature packet itself. This data specifies the intent of the signature. +- **Packets being signed**: Typically one or more packets, though sometimes none, depending on the context. These are the packets to which the signature statement pertains. +- **Data within the signature packet**: This includes information that specifies the intent of the signature. -The signature type determines which data is used as the input data. Either way, the input data always consists of the information that the signature makes a statement about. +The input data is determined by the signature type and consists of the exact content that the signature statement addresses. The signature packet consists of two parts: -- The data that defines the meaning of the statement, and -- A cryptographic digital signature with which the signer formally endorses that statement. - -So the signature packet hinges on that cryptographic signature. It is produced by the issuer as follows: - -1. A hash digest is calculated from the set of input data. -2. The signature is calculated for this hash digest. +1. **Statement definition**: This part of the packet defines the meaning or intent of the signature. +2. **Cryptographic digital signature**: This is the formal endorsement by the signer, created as follows: + - A hash digest is calculated from the input data. + - The signature is then calculated for this hash digest. ```{figure} diag/Signature_Creation.png From 3dcc962c570031f92518bfdf62daa56045e80951 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:21:22 +0100 Subject: [PATCH 06/16] edit on ch6 verifying packet section --- book/source/06-signatures.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index cad83e2..18e7184 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -85,10 +85,13 @@ Creating a signature in OpenPGP ### Verifying an OpenPGP signature packet -Verification of a signature packet involves many of the same steps. There are two main differences: +Verifying an OpenPGP signature packet is similar to its creation, with some crucial differences that facilitate the verification by entities other than the signer. -- While only the signer of the signature packet can create the cryptographic signature that it contains, everyone can verify the signature, provided they have access to the public key of the signer. -- After calculating the hash digest, a signature verification mechanism is used, based on the hash digest, the cryptographic signature, and the signer public key, to check if the signature is cryptographically valid. +The main differences: + +- **Access to public key**: Unlike the creation process, which is exclusive to the signer, verification can be performed by anyone who has access to the public key of the signer. +- **Use of signature verification mechanism**: +After calculating the hash digest from the input data, a signature verification mechanism is employed. This mechanism uses the hash digest, the cryptographic signature from the signature packet, and the public key of the signer. Its purpose is to ascertain the cryptographic validity of the signature. ```{figure} diag/Signature_Verification.png From 18a621c827086833a509073c455bcfcea2b87dea Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:41:11 +0100 Subject: [PATCH 07/16] edit on ch6 verifying packet section and subpackets --- book/source/06-signatures.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 18e7184..285ff54 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -101,13 +101,14 @@ Verifying a signature in OpenPGP (signature_subpackets)= ## Signature subpackets -A bare cryptographic signature - even when combined with a signature type ID - is usually not sufficiently expressive. So, to encode additional metadata in signature packets, the OpenPGP protocol introduced signature subpackets (in [RFC 2440](https://datatracker.ietf.org/doc/html/rfc2440)). +In the OpenPGP protocol, signature subpackets enhance the expressiveness of a signature beyond what is conveyed by just the bare cryptographic signature and the signature type ID. These subpackets, introduced in [RFC 2440](https://datatracker.ietf.org/doc/html/rfc2440), are essential for embedding additional metadata within signature packets. -Subpackets are well-defined data structures that can be placed into signature packets as sub-elements. They provide additional context and meaning for a signature. Subpackets encode data in a key-value format. The RFC defines all possible keys as [subpacket type IDs](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-subpacket-types-r) and provides the value format (and meaning) for all of them. +Signature subpackets serve as sub-elements within signature packets, providing extra context and meaning to a signature. +They are formatted as key-value pairs, where the keys are defined as [subpacket type IDs](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-subpacket-types-r) by the RFC. The RFC also provides the format and interpretation of the values. -Typical examples are: -- The [*issuer fingerprint*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#issuer-fingerprint-subpacket) subpacket, which encodes the fingerprint of the component key that issued the signature, or -- The [*key flags*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-key-flags) subpacket, that defines which capabilities are assigned to a component key, in a certificate. +### Examples of signature subpackets: +- The [*issuer fingerprint*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#issuer-fingerprint-subpacket) subpacket encodes the fingerprint of the component key that issued the signature. +- The [*key flags*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-key-flags) subpacket defines the capabilities are assigned to a component key within a certificate. ### Hashed and unhashed signature subpackets From ec61e782dfb0f7031fdb50917df8f99b606bf125 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:56:22 +0100 Subject: [PATCH 08/16] edit ch6 hashed vs unhashed areas --- book/source/06-signatures.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 285ff54..60cd4d6 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -112,12 +112,14 @@ They are formatted as key-value pairs, where the keys are defined as [subpacket ### Hashed and unhashed signature subpackets -Signature subpackets can reside in [two different areas](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-hashed-vs-unhashed-subpacke) of a signature packet: +Signature subpackets within OpenPGP can reside in one of two distinct areas of a signature packet, each serving a different purpose and providing varying levels of security: -- Subpackets in the *hashed area* are included in the hash digest for that signature. In other words: hashed subpackets are covered by the cryptographic signature in the signature packet. Recipients of the signature can be sure that these subpackets express the intent of the issuer of the signature. -- Subpackets in the *unhashed area*, by contrast, are not included in the hash digest for that signature. They are therefore not protected against tampering. The unhashed area can be used to retroactively add, change or remove metadata in a signature packet, without invalidating it. Since the unhashed area doesn't provide any cryptographic guarantees, it is only intended for advisory packets, or packets that self-authenticate (e.g. the issuer fingerprint subpacket, whose "correctness" can be proven by successfully verifying the signature using the referenced issuer key). - -In most cases, signature subpackets are stored in the hashed area. +- **Hashed area**: Hashed subpackets are included in the hash digest of the signature and are thus covered by its cryptographic signature. They reliably express the signer's intent. +- **Unhashed area**: Unhashed subpackets, conversely, are not included in the hash digest for the signature. They are thus not protected against tampering and can be used to retroactively add, change, or remove metadata in a signature packet without affecting its validity. They are primarily used for advisory purposes or in scenarios where the integrity of the subpacket content can be self-authenticated. An example is the issuer fingerprint subpacket, which can be validated through successful signature verification using the referenced issuer key. + +The majority of signature subpackets are stored in the hashed area. + +For detailed information and specifications, refer to [Hashed vs. Unhashed Subpackets](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-hashed-vs-unhashed-subpacke) in the OpenPGP RFC. ### Criticality of subpackets From 48f39f0ffb87bcb9fa80901cd16714db0f3589ce Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:57:07 +0100 Subject: [PATCH 09/16] remove colon from subheader --- book/source/06-signatures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 60cd4d6..2f370e5 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -106,7 +106,7 @@ In the OpenPGP protocol, signature subpackets enhance the expressiveness of a si Signature subpackets serve as sub-elements within signature packets, providing extra context and meaning to a signature. They are formatted as key-value pairs, where the keys are defined as [subpacket type IDs](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-subpacket-types-r) by the RFC. The RFC also provides the format and interpretation of the values. -### Examples of signature subpackets: +### Examples of signature subpackets - The [*issuer fingerprint*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#issuer-fingerprint-subpacket) subpacket encodes the fingerprint of the component key that issued the signature. - The [*key flags*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-key-flags) subpacket defines the capabilities are assigned to a component key within a certificate. From 93d061efc76299ad9da80d721b3d9bbe3f1c5168 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 15:57:47 +0100 Subject: [PATCH 10/16] remove another random colon :D --- book/source/06-signatures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 2f370e5..e86b9c9 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -112,7 +112,7 @@ They are formatted as key-value pairs, where the keys are defined as [subpacket ### Hashed and unhashed signature subpackets -Signature subpackets within OpenPGP can reside in one of two distinct areas of a signature packet, each serving a different purpose and providing varying levels of security: +Signature subpackets within OpenPGP can reside in one of two distinct areas of a signature packet, each serving a different purpose and providing varying levels of security. - **Hashed area**: Hashed subpackets are included in the hash digest of the signature and are thus covered by its cryptographic signature. They reliably express the signer's intent. - **Unhashed area**: Unhashed subpackets, conversely, are not included in the hash digest for the signature. They are thus not protected against tampering and can be used to retroactively add, change, or remove metadata in a signature packet without affecting its validity. They are primarily used for advisory purposes or in scenarios where the integrity of the subpacket content can be self-authenticated. An example is the issuer fingerprint subpacket, which can be validated through successful signature verification using the referenced issuer key. From 44a4a00a2e29173e56c914570fbe40b5d4dd7aeb Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 16:30:07 +0100 Subject: [PATCH 11/16] edit ch6 "Criticality of subpackets" --- book/source/06-signatures.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index e86b9c9..37ae139 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -123,14 +123,13 @@ For detailed information and specifications, refer to [Hashed vs. Unhashed Subpa ### Criticality of subpackets -Each signature subpacket has a flag that indicates whether the subpacket is *critical*. When set, the criticality flag signals that a receiving implementation that does not know a subpacket type, must consider this an error, and may not consider the signature valid. +In the OpenPGP protocol, each signature subpacket can be marked with a *criticality flag*. This flag plays a pivotal role in the interpretation and validation of the signature. When set, it instructs any receiving implementation encountering an unrecognized subpacket type to treat this as a significant error and to invalidate the signature. -The reason for this mechanism is that OpenPGP implementations may only support subsets of the standard - and the standard may be extended over time, including by the addition of new subpacket types. +This mechanism accounts for different OpenPGP implementations that may support only certain subsets of the standard. Moreover, it anticipates the evolution of the standard, including the addition of new subpacket types. -However, it would be fatal if, for example, an implementation did not understand the concept of signature expiration. Such an implementation would potentially accept an already expired signature. -By marking the expiration date subpacket as critical, the creating implementation can indicate that recipients who do not understand this of subpacket must consider the signature as invalid. +Consider a scenario where an implementation does not recognize a subpacket indicating signature expiration. Without understanding this concept, the implementation might erroneously accept an already expired signature. By marking the expiration date subpacket as critical, the creator of the signature ensures that any recipient who cannot process this subpacket will reject the signature as invalid. -RFC Sections [5.2.3.11](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-creation-time) - [5.2.3.36](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-intended-recipient-fingerpr) give guidance on which subpackets should be marked as critical. +For specific guidelines on which subpackets should be marked as critical, refer to the RFC sections [5.2.3.11](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-signature-creation-time) to [5.2.3.36](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-intended-recipient-fingerpr). ## Advanced topics From 8a82cebd6cfe36787217bc7bad51f17a772b43a3 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 10 Nov 2023 16:48:25 +0100 Subject: [PATCH 12/16] edit ch6 notation subpackets with the Keyoxide example --- book/source/06-signatures.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 37ae139..625e66b 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -135,13 +135,11 @@ For specific guidelines on which subpackets should be marked as critical, refer ### Notation signature subpackets -[Notations](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#notation-data) are a signature subpacket type that can be used to effectively extend the otherwise limited set of signature subpacket types with user-defined notations. An issuer can use notations to add name-value data to an OpenPGP signature. +[Notation signature subpackets](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#notation-data) can be used to effectively extend the otherwise limited set of signature subpacket types in OpenPGP with user-defined notations. Issuers can use these notations to add name-value pairs to an OpenPGP signature. -Notation names are UTF-8 encoded strings. They may reside in the "user namespace," which means a notation *tag* (in UTF-8 string format) followed by a DNS domain name. +Notation names – strings encoded in UTF-8 – may reside in the "user namespace." This namespace is characterized by a notation *tag*, followed by a DNS domain name, both in UTF-8 format. -#### Use of notations by Keyoxide - -Notations have, for example, been used for the popular decentralized identity verification service [Keyoxide](https://keyoxide.org/). Keyoxide uses notations in the `ariadne.id` namespace. See the [Keyoxide documentation](https://docs.keyoxide.org/wiki/ariadne-identity/) for more details. +Notations, as described earlier, allow for user-defined extensions to the OpenPGP signature subpacket types. A practical and popular application of this functionality is seen in Keyoxide, a decentralized identity verification service. Keyoxide uses notations in the `ariadne.id` namespace. For the details of this implementation, refer to the [Keyoxide documentation](https://docs.keyoxide.org/wiki/ariadne-identity/). ### "Negotiating" signature hash algorithm based on recipients preference subpackets From 1c8d72861244a53d5c6fb850a87b2519f2e784cc Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sun, 12 Nov 2023 00:18:30 +0100 Subject: [PATCH 13/16] revert accidental removal of Fingerprint diagram --- book/source/diag/Fingerprint.png | Bin 0 -> 53192 bytes book/source/diag/Fingerprint.svg | 304 +++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+) create mode 100644 book/source/diag/Fingerprint.png create mode 100644 book/source/diag/Fingerprint.svg diff --git a/book/source/diag/Fingerprint.png b/book/source/diag/Fingerprint.png new file mode 100644 index 0000000000000000000000000000000000000000..dd54dc807a5f2a575827f9f62cbce51d1ee80053 GIT binary patch literal 53192 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 Dj{BvR literal 0 HcmV?d00001 diff --git a/book/source/diag/Fingerprint.svg b/book/source/diag/Fingerprint.svg new file mode 100644 index 0000000..dbdacdf --- /dev/null +++ b/book/source/diag/Fingerprint.svg @@ -0,0 +1,304 @@ + +Fingerprint of an OpenPGP component key - key creation timeComponent KeyC0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94Fingerprint From 1c3a6934424def493b65b42ad010b5ff25dfc177 Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sun, 12 Nov 2023 00:18:48 +0100 Subject: [PATCH 14/16] minor editing fix --- book/source/06-signatures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 625e66b..903ae7b 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -108,7 +108,7 @@ They are formatted as key-value pairs, where the keys are defined as [subpacket ### Examples of signature subpackets - The [*issuer fingerprint*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#issuer-fingerprint-subpacket) subpacket encodes the fingerprint of the component key that issued the signature. -- The [*key flags*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-key-flags) subpacket defines the capabilities are assigned to a component key within a certificate. +- The [*key flags*](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#name-key-flags) subpacket defines the capabilities that are assigned to a component key within a certificate. ### Hashed and unhashed signature subpackets From 0def7f33ae866d4019e612a2b32d79fd330a223c Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Wed, 15 Nov 2023 12:31:08 +0100 Subject: [PATCH 15/16] add link anchor --- book/source/06-signatures.md | 1 + 1 file changed, 1 insertion(+) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index 903ae7b..a4fcaa7 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -83,6 +83,7 @@ The signature packet consists of two parts: Creating a signature in OpenPGP ``` +(sig-verify)= ### Verifying an OpenPGP signature packet Verifying an OpenPGP signature packet is similar to its creation, with some crucial differences that facilitate the verification by entities other than the signer. From e6c935eec9e131224947bb2b9290cd1ad031e9ec Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 16 Nov 2023 22:08:05 +0100 Subject: [PATCH 16/16] remove 'and providing varying levels of security' --- book/source/06-signatures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/06-signatures.md b/book/source/06-signatures.md index a4fcaa7..bf7efb7 100644 --- a/book/source/06-signatures.md +++ b/book/source/06-signatures.md @@ -113,7 +113,7 @@ They are formatted as key-value pairs, where the keys are defined as [subpacket ### Hashed and unhashed signature subpackets -Signature subpackets within OpenPGP can reside in one of two distinct areas of a signature packet, each serving a different purpose and providing varying levels of security. +Signature subpackets within OpenPGP can reside in one of two distinct areas of a signature packet, each serving a different purpose. - **Hashed area**: Hashed subpackets are included in the hash digest of the signature and are thus covered by its cryptographic signature. They reliably express the signer's intent. - **Unhashed area**: Unhashed subpackets, conversely, are not included in the hash digest for the signature. They are thus not protected against tampering and can be used to retroactively add, change, or remove metadata in a signature packet without affecting its validity. They are primarily used for advisory purposes or in scenarios where the integrity of the subpacket content can be self-authenticated. An example is the issuer fingerprint subpacket, which can be validated through successful signature verification using the referenced issuer key.