From 0d3d03286bf96e6a621839d3cc2d152c1eaf47a2 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Fri, 18 Aug 2017 17:06:13 +0300 Subject: [PATCH] Add more sections in GPG docs 1. Generating a GPG key 1. Signing commits 1. Associating a GPG key with Git --- .../profile_settings_gpg_keys_single_key.png | Bin 10331 -> 4403 bytes doc/user/project/gpg_signed_commits/index.md | 194 ++++++++++++++++-- 2 files changed, 173 insertions(+), 21 deletions(-) diff --git a/doc/user/project/gpg_signed_commits/img/profile_settings_gpg_keys_single_key.png b/doc/user/project/gpg_signed_commits/img/profile_settings_gpg_keys_single_key.png index f715c46adc339b1f16a6b76560f654186599250a..5c14df36d73d4e66101369a2222af6cad5c7b556 100644 GIT binary patch literal 4403 zcmV-35zOw1P)+dCn^G#$V;A8>GR`sU-oI3jX#a>PL^|Nj2`?(9TF zMAB_u_~PF>Iy&Ow;`{9B-jj#&(aSS4GrGFE`{?G+Vo-vDg7MAA&Rt5wJ}LLz*fusc z&}UWq=;ZVB^ZxqzI5;@_>gVq6?&Rd;F0o|htDxhdmf6|a`Qza3#J$gDQ^rR!HMD8i zIw0MPe_mc*;+&DlOgMmmfbG4tl9H0o&(Hn+{r>j#)^}$@LPFDTUh~t=TU%S;RX)p9 zKs!4--Hw6W+}!-@=<2qumX?;8nVGP#u*u2E-rn9)Qd02B!^uuM{qpcSXe~5bjHTUKtMo9NJ!6PQOHX-#X>FYytL72S9^PV zh=_>MYFg>Cs@{%)+dU(Getz+?s9eK_Pft(Rdu;8%xNmQ7zUR-}Ln-L!=+9qFwB*S1 z&&uYgo}8SVz`(%ZSwoMHkMq8@+JkiMn2Y)O`P+wi>$k7xd1uEq9oFVn0OG`_o-n`j>ap$e1_~G6E{QJYh!}r_Q({Nv8WMt!GPWIT;`Q+iVv$N*r=F9Eb zQ@?-w?d$W@&#kSk)n!xHYFNTLB>DXM-jIX0x3}w)gqN3>>9ni#`}cs*p@oHorKP3S zbY#t3N#R~d^uxO$$S@^z_0s z9_6Q<@2H&Dd~Nc$u4c!M`~LjY@ZaFz;N@~(+>3o{$&%krHri-ZKDco1qn5hn%=gjC zmDsWM%ERr#yB(`o)L~E3UrgMId&f#N(eB;G>(!guwdMBge;1kc000f{NkltC3f0*N zwbd5*8PY7yW-YI2c9@eN2}M1~`sXZN)0*{1m%Fws$6)P1XiY(~$z6M}Ahabyee`W5 z^uH?y>^(e1Z(;D*WA6)I)vK)flGoe-p2(FgjnF_S3^N<^yee@I0?ToHEq7ZM+mJ%qaOA(soO_`SaPS18l+o z_d5V*Z#k|42}O0VbS+S&bG>WJ(%loG(VE3U9;t)IrWb1Yp)Zz0WfUY86h@{&f*ur0 zM!ZH7mPQ)!b)hk7z}hQTDS(0@&$K^Xqvf}S*5xES5_;g&6@Vib2&IcMuN|H|V5NCM z7ufsVsl@FoRU51}54eDYqL9!g2(1H1jv?o^^a}ZXfYA!U-Vm7w+IYoV&!+$+@Fp!! zu1qV^wY1H$TrD33P;HSnC6!Lsp%)SX%y;1MfVBrMCr<9N{V*XE7Oe(CsA5}?xpn~( zib6u0B9vS_jvY$gd3ek3YjVIwl2`v)2#8U<-bSgTu|jT?^A_5+Ux$_$_2acl=W)SK zgx*;MSIhyh_N;Wul(Jbnp^8m<#Vi+vgt|zmB_0y80ep@@zj(#F!B4u`g3V91{ zH@H(&9~m6vd3Qns%v%$W0Q~2>%*;%)BcY0I`(-2)g@l5;ZKF$snqnX!hg@q`LtUEU zt>-OLR_iHexf`S`S7|dsE&lG{9yadogu;<;ZjejSwJYfzp$6wr*|v5s5{l~dgnAa~ zMg6gjE)crWZ&E*_DaE7K8WE~KK+$JuH1Vs{J4Lyy4gT8_tZ-})6ndqa7OTS>6Z*aR z26PKLrZ9dD2}i}y~1S-XE$ zs1-~pNGPhEWOa?u7kP39DGCF~t|mv}(6*r7MnXq%YlK*Clq-Z@Dn4<@_k24OdRp|^ zkU;)VBgFYGEk0>Wc6L@05{kMf^^fxl^0(5mG!MgAD@=$m2Bm^pji%aawivVWWI}7C zV=giaz|WhInx$NX*-PH!>#+TD*_usyB<~;X7)YsXlcY{VLVJa!X0sx=rU>d z{a8BVe%;Q5`iSKKrYL{$Xh(iPNN6Y5(CCypLy=OJrjM|M8ctgcKBiE=gK9OJVuQ-8 zy2UvLIw&Bk2p~7wRufaC5Na=ZlL?KH%ho8N4uO=)HtCeDP6Jz{(AlgAuE}#KGYYN| zdU1>(tjQ1W`|Uomh?Pr7*<&Z8m1J4h&Dumig-ef|RvNcL* z!$4|fn?$HOja>XTKARQAHA85u{O2m6H+Km_>9;4&Jbm$MV63p&cav~(&+gs3zLE$n z4nIVlt`mAxjDn4|gix~lNl5`6^a&;6ub^~l9Si}5F>+c<;*Cb5mjNuRg8b5b6tGlV zMY=n?mkSVOlppVH(JYQhWuw(c4Pbwu=Rhb8u2i;3Qm2taS7)=LxMm0y3xyDHo~DHOvALD=m+Di+H6<_py6I-wgx@o26n#))wj7%vuCI|@AG_ko4s10V=$#t`e#QQY+g?S2|6U7s!ONBDnS- zbf@o5xFiT=5EvNf+gHfX7iOLp%H#{!z^kz^X6JRg)Agq<-f5zkTsMCNLG;T!Cqx4| z)IBQ@fovp;lvdUi$xuy@Qd#Sy1nFjNgi5Gt^W;4lp|+S3Wn>{hX!@k43AM_}Z?r=o zwXzMQgjSixQ!0Lwvs|?Zu0067RD2?wQw=7(~<5U(4d!8({J6ln) z5YS)RT?x^oxH$0`0*Z*KH_)`c7SNjNoY<#qd#_STST9%gP z=NH!>ymLZwlhf2{G}R_O5>cMESa?|n!80QyJGXyxglfW!TUJCn22v{9NId|kYkOR`vD(^uhvrJDrd%uez`T7mRwi?Hrn=4`{a&l(|$Y$2f! zttul;8$yn?Oz1gx+2nrdLHK?sLDa{Y(8qPUKJ$8$H$Tf0A4~x;;T& zACcPAIqp}(r@rzwY0v)UJMXP;VE<@v*Xhr2%>R4&Hwb^j;<5PLU#E8+PC7pOyQ$OG z+uL^kLft%Rvu?>7gGYC_$ERC5UiGti==?OU^LpKMy1|c(;kbRv26vtEtbISJo$e3q zPxqVlcOFmILD!3fKA?|eD~&nh0$L{Y!TJXG{M3rZgg(0PAAKGrNA9qys>dWk=Tucy z{aA9n^b?uTc~!Dw#>5@ZxXtEz4qx{4?ayc1?YDPT-F{;t^LHoK9^GDG@mTy1`@CB9 z8bRRQCweUH+MBhRpBpyqb7}r5e;c##{omT-(=8pZ`q?~mej3+ly`0<9F(Y3e#&Nw~ zf3C;v$L#y5+S&fl{&c@-f9LUZ9dx}&=nqdnnBQ1X2z`=JIhq`~1C_(=_+0hOu=Imo zGNC`Rr*qQ=awB!*Jo4w~8`^tL?6aQvCA~eoJB!ESPwAy}e&^R5_td{xoB6pVa|eG& zHr>7;@kiU^)2-T{`RP3B{4B21dO0^j@w+c^-QWL0vC;ih?QDP8`j!1={hi0tbiZOID_2<`jILT5sExlL4#=%2sbz&?W{l{=VUhF}iI;?ekHbid$~ zTz28y*FO1xwb}eT+GDTq8nhf99w2sPogf&g&(FbszcOKyHt2?wf-@ z>1p3j)z0>Z_E-0t^>-T2)(rj^PHzj0f!68x?ot$b~u$goboP>5Zfe6i_XmRMG zt8=%^9onVmCFk7x`m)#|e&GKbi&>(+tkH&dN={HjT zc4^+mmv{9y_HZ7~uW^U!hOq zIXip~6@Oz7=i&TA=TNODpy+FwUVUf6nn~NIjGKPMU;8%x(fLw`)(b*G=%@*GwtLlY z)ShwLd9M&SPP#+$BsWd_kG^gtvQ)`I%CG2^|N*>*0OeL)q+=zr}1ecUG7eO zw)b4+TJ7c4IMMtc$|dTjnU!b5go?khOCHT{@8w47jeVTx6nGbXRg62!dE2LsOFy=L z>0A7x^R*7G7leY)Q4{K>Z`PQo>FVlAS-%gx9wKzSzqTw9y{UQAukHA|Y{Lt_j4*bZ z?DcP?NIZ?t6PLZ6!S|tahxS_SKTiVO+zP#zuGY4?!-VR5wM!n&Z{kMl<#S|WcaaM! zR%>4-Y@a$V{n+}YZ}E@L*E&qSAoTI+(L7lRzXrl@ik_s-Z~t_{^Lu?dA=m<;Pg57S zf5Pv@eLmqAY=KbduJu137yLgI{||*8GNC{efI<(NPzZuRCcAQXZi5DGyc6oR08)L+|#PefLy&~E?$002ovPDHLkV1hQm0+s*( literal 10331 zcmdUVX*k>4+pfKLwcVyp)HYT3UsX+|=2=xyV-P|Ssx?MK4Ka(BqOGDeR!X!~h#-o@ zOi@)7B|?p94Mm955J7}DY4^FV_nh{j#pLp6B^J>wcd5UU_V7Wx~rP z%*DaM!E1Wsx-AFC9~joSh5CwATL2?xh{4%6!fcHw!H=|R8AFC8D&>1{){=JL2L zTXTh$kS3wdyS4S)f-_-1@`E08Kghn8OnPUXB|W0}d5n_qRl3to5=efiW*>V}N1ccE zSzLqX&yE*Anz?&YSHEQEnF`~W@UQn4LEA$^&+YcNM8%jntc^K1KIR^3QQ0y}}NpIFWd`Eh3}8<0=RT4;dYDb+r|8w^f$ze~n_U^i%)>Q`z&rVlsq5eHF2% z?G}%WvKEVd5`2XH+%12rDiRyI)~<*xj>c|F51e8@jfNe^JhW$z*rvM+utzLg%^W#d z1Ge?2LBFv^Y=8c*X;R|uusQtb!Ol%tkv{)6v`B0y?Z<-suLwjNY@7nAtB+_$W5f$C zH!<;}ov&RfE>b_k@lJ4lwSzngq+OsKv>N~1i$iYVX$RRJ9My)6Hz+lzFV5=zwc*uJ z?=zqRozIxgw8l1O23#a@B3hSbu{p{Q(u^TP*&M;LiLMtj&|irqd$cgM_>Hso#oXi|B1s-2^!hfM5@=9^QDmrl&te=%f_=*rlvg z9_@ryT%1^6GHQ;Io#?KRviO6YhW9r^$?mk56#1CHT1Rl}eqR3M?zTiSbKP+3u&%CF zT}&s#T?NW`TP4HGmo)rd54$v5BTwnqDXbh-O9e1sVWFyD4vliMH9)^!VO|Q54})=v zsnc&Nyl0*>c%ht+$f&Q#|7I;d!wgZG4v#XA+AF0|RKXJ#nI&U1%YC6RZ-@ByY|uG3 zVoI7}On6ij`j*wNRH_MVWMzvKl+O^lw*QKXKkXT1*p$SGtZfkn42qF=U#`@2`b=!! zB-{_HT$%J1nb76I5x~hEOBt{hMCGDm6xBDl9&4gNU9S6vJg3)p&hF2jC+uFRm1;Sh zv6sS^o_sc?&yu;56Y}GrvUS}7x3P#+i7qkG*7sc)7pqunHhqdhK?}q{3VRM)Y3g7x z(N+Sp!ahY1BHT*sw9!=LG;}z!gs~DPFH@Nz=3H8VUWXu|G_JB=di6i zv2Ib+ScImq#jj9qu4g3@#Y19aFNr0RWA<<6q**Fl{B^D(_RKoT%l!YmKi>cHiPkMY zAnC)t*)XT#-Di3e+#Eu_9W4BNU^%4CXZIc+un|a;e*Z;I(6=#xtV3qY0d0P?M8kxY zg&aSKro0$ien*9=w(^Y@;RRPq!8NywrEC~{C)CUT6HhpHGXKi}`5z+a|KNoDk*d9d z!~LXdudOffb0x69GL;p~6MiBoho0(xy9)dd`tYA9RS+*-SaTx89+1E3|Ku7c)UCy$ zfKoQi$Bzt5X20sMDyKloe(2l6N>9@fi+TGUc-cus4|^x+ziY8xUS7-JdPlGTWCPTAeM?dvf~$Bw=UJ5{Sy($zwU=hN^s% z_t5?@e21qAO6*Gryb4Gp79HF`>a#ukSZ6`FA2XJE&3Xt3uqDYFwfl&^h=h#E2HgcF z`l78v7C0YYAEVnT@d$YtK}~HPc%_71HA3uVWwb)=u)clhJz&KW=4Pr%1h+s$zP}2m z+N!iq-H6bM#MF-5VjC~+KLDPxTtSl9w(DS1pgWF~?Pv0!Wr;ITJTqus!7%@lu#_WRRaucNqG9Lq-5wt;$RzFLks<5x>hxTZtaVqbwcLcsrF65;2ue~EdwLorzER_8})lc4t0_$siC_EVIF zNaEi$Q%?)7K)YcA3$(dA%0&k?VkTDY*%Z8Y?YB}=+2gfk92rvkJ7*EoBEcS3w(he! zZ|DCryqHhiaxf9ASxsw05L&3hSepxuD)QOB>sDdL?^SZN#h*X*&+w&j@+F@*~`I3iF z@%JHF;Mqjt2Rlc3jO6llcif^;QHHU>nKakSJQ$P(A)Uf+kB%g7n$fP}BNaYr8?wKlAlGJewIi=u?Dt9HqAaB&T=uLMAWFwcD zF`5-JVyy6&Zl_<_m!*rSU9GY`6KSPYsneb$V9!&BOM2V;KBf0UrkL3>AW^ThV&c$k zGfqqWVOja(7z4|M`5Wp#H=QD#z;F?*oNr0*wt_m-p=mSmjTVks{NXZA!Kj_f0-&1F zES2#OaLj3ax>M$uF4vMt@^#BJkBf|V) zm*y(1yo4zT-h=DLtRHog96& z9)*%+G(-2vLO?taG+nTJAevBNrm`o}X6!S2&x-{bi=MKS&1eHTwkaNUc8*;nLNW>9 z*8t7eQ45`QIM$Ekir$|i`f%NIAN9Gyo;82Qop#2@ezgca=w&l!bRSSUCfB3Hle+*i zTcTiYJ~3|UtNG6VGexaVfd*Y1T%{xVh_%UOcy9m|Yz3eg--gW@?TJOC;2)K-7u1vb zr)yq2`K!=282)On=lOoM7SFW*Uzp(L^1qQCR{3n)`C1J^PU%tG5G*&U-YCeFAJmbo zciZWWKUSVx-g98pStC~0VZ(Z|H`6n9}Q zQpjH9p@MAr3?`qEcAG09ebBbmLHnN{j&#T*T-%l5Vu$4G<~7G+>q~A%Kbcyz>v2rO z4aVvRErI4G??}K2Wb9&X*W@@Ll!< zre^IyiZ%qkU)o}5Ix*JijcFW-!NmVSgU%J))0Z9-_+KXKZf?ZGSE=NozKn-$SlM#; z=2j(qzXmg{IP%q6n1@cBj6yT8v7hS};pYIOIRy@mEoCC&Ny7&UjVgB-3;OipALv%+ z#+l`)TlTWlZB>mgqZ8ZE82ak5hBWNQn3f6$@iFf;2Gzx(=o&j?cA8Iug2AoGDst-= zTdJZRbuMw#b!xP@L>=b4l3EF?+kz;LxW`62HqqJyMG0T6a+ax6gQv$m?bw^;HB zV=f8!We~9@&V#E7-u#5cc>ELK*7T}Kp!!UUeZWb`dDA4u1aqh6vJ?`^sBFTV=zRU= zH6LFnPVXG28N+{KTj(2g9pT@cLJzCQPSZ1>rbi#rtS2T(#I;+j?su=Mu2=-%pghXr zPBR}QveJ*ngPHZY#Vx}I^@5f|E@fCR3iZily#oV3>I|8+cBd|7wT1BD^y}N3-W1Wb zmE8eE>-dgA-G>5RT-~9q-{6{0Ol;|i*qI@9q14G3rg2nKKv4|CA!NNr7s|Jd+uhqs zUyKB3$5yV4iU-u5NfZ|4qkY55PlqEk=&@^M>RL13kfAex?S;2hh}|g@nj51C;~Kq2 z-_8Jf1dt~tDm1@&8!{uojX z^#H64R(_lwC!UWk>$}O2p)~%B-RMV;vVthg)L3hYdPSsYJH@oTUi`zCIz1h@vm3fn zSqUYLhOu0sOq=i~287&^=nJd43plWDD^8d2txEG9Qa*c%my*<3~IiLQ}HGvvBs zzqzi*QWy)~0gF*Ox4uT{Q~Mk{hyd))@7@g)jBT|un%xz!5s zvDm33Qbt=0l%q+kV`yx9Zi7$I4SBcKXNML&)9wVd zjm;!=qkhNkH;5mOn_?T5tF%Ve#KS^-gDrE^0*ndwr8*!J@Zm~XcGv!Ham}Rz@>e1k zK_6e+mG=XRpNb9XI$lBG#(cIxU*=?RN5w_y(P-|!&i zTE;AkuWIqoCi{pyuztiaBa8(et-`plP0!mQfwvpKi|GnK+@o|s_Qzv%Bi|x+{P|gY zw2r1I>ZP+L+qe?~#wNaYZHX#6(FvYL)V&~dY_quZf%P#e^&Dlfe{J?)df%uiX?@)y ziRd}N{P2gaJ`Zi5_Eh?P4PKXdQ@d#8_VU~dInvz#KLt&Jopmu?Q5KJGi7*?RT19_9 zKesHtixfl4&$G{?AI=--_3qc~zKs3qcgO2tml_wy@fF zgyedKbA$T&EAG*7R3}+!@nHNZ+__%9@p9oE@V15*ILw5(-JcAlq!{A>3y8jxAi{P= z=sy4)RdBvMk&MHl)%eh=L^3YWry`;qol?zeF5H?&+ArOQLQ6|xbPt(Q;29S}v3Hx# z;ynWnb9mS|WxXbLWzuh*|6{#Qi=Maek2u9lCx;JJji1)#CLMfV&-OIBinS&mFqQ|0 zYDwP89b~qq^A}YLC~gdVa4f0w{nnR-$+nHf)}zd0kDt|5u!HyZe0l2O6?d)j%fV~j zw8;*rv^(rupr`^%V-h^p?c?;Ly<1}m*{hoKcR7l}CVua7qG<*Nj**!2#1w@;ds3zVBvv2brC6qAUqT4nsj%C|g#n zY;}@{V`%dakbt@?LNe)pkGKJYV@u;(3ShfEWv$~++Dn-s$l?ebpHb4sLor;@?MD)kGce)Mep?$+*Wk+V9w@WLpfM3c55x6+lXJy|so zfYCc=1G5j1#6GjmH&z**&?@F$oR`1=XznT#cv^gG)VBGSAyck{?Bo98o3rlJuBj{w z&u9yc{yHL@h^PtChZD<{(hZLNY|x0 z7yAlY+S!3!uVC=YZ}*~8Ruk6SJVfCZ%_YhU_3CTnIs*+pB~t6t?XZ>Q4GQ1{CWHG{ z#i4-NH&8Q#ia;=)xHfHij0eZsW2h)S#$HMI!yU*-$xmI-Bxf$6?&z@|&g=s(M;ey= zq1(s9sYf94S6%|?|K#P4N^}DXZN}g)>pdwGB?cf?7sYw@_=W%~TyNNx`UjKW_IuGS zMumIH7M+kWOqWC%FD}|G-+#k83PN;g@CU;WL$u}UiA>}F1ji>tnH?B7Pg_x(y+==#f(l9L6J&;t!IfbRu!3!RW?SAK=^%(qm4 z0xQ3zm_JL`59#Q#D&aDqLht2FJDSr*{MG4lp|~o9C20(YC|TP%(YOH_vy#W;zZXg* zA`!T7M8F0I0}P9H>-P(MR#9gKeO|olo|R6mE~COp#P)AU*Or)9S^bzfZ;iHyAm*i8 z3zeU^7c+IvvcUZ7$}q6WHT%v>B@1&r5NMJ<;?M-j23C0pCt5UJz{;9}aS%xXITn%c z3)JO&9Ef_CTqlH*D|zD-we<%n$B!jz*hu$?9B#Y0l<=1>pS4%y74kCZN|)$+Atqx; zvTsLwMz4hgwrr*rQ=F8{k*S5|ZmvCnF`V_DC6hHsv`Bkz2_R%xaBmD(wdE~)%K zF$H0Pbz`)9)FM881-WmZC0aN0A#mRtrznl28s4|xMd7sod|)=o;+I$Qk<{1 z+%x5V)}W;CE7nv!Z9yL4B*@58~PpuDDc0r39g@RKTq0IWb+Zbdpjw zN$DaO6UaQoP^eI-DJ>hDO0w;Qc?|GiYR-=Ysm*u(eCe4BGNJ^6 zTV49>iY28>`>t>WwWP8*dI<%m=PCLm{;&3Q3q##Og`W7WXVFdPbXG;IH>6!X}T4swnyXhE+59jnv7 zSxOc-1=7c|ThwUP4pc9yILHr#;I@-}ArtY~ZHkHN^)et@6+QvoM8Wvqq>cq(gl`0w z{8mC7XK6I@_7jiQ2J$N>L0u{fc18Eaj>y}K0YT`9=)~`~G%GRl{pmm?-z=3Txm#K8 zS#nxxh3}=zOH^x99m1wU%21Sx1qw}4bs>qnRJE>)cdN%QwM|FSu*Y_*{sV(iFUR-H0$H)A7>5%Mna z$Dpc#&!D;0cb!r0eUux)oe-z|d?9F_pbSflnY$;t3BKtS)Eg*g*s_@>sY!7lM@i;d zNgySKOKoaB98+a*s5nh`Pygwf0aK;&0Ud9aN+w+bAH8zr#*yKxDddquINDt`vKwMZ zyMCjBC<1})aWTXqaOhK`RT!^n-N0Lt<+hhHBNA9eXb19%>+T)p4oHd2$tt3`ZQig8Je_lW=K!3eUXw4w ziI)A&{%8+2Jq#M;v6DTuHdryI?|ER$0*c5Z?I1MnaGd#N6(w>Vwp34|M<*uHAl6tO%(C z+qMvGzN*{H!^xc4$1yeih||%(A4Ue5FT}=TSr>(QjI=u}BAoW`HGAp9E>4cC$S$mb zP|L+Gbm@48SCYLc`J!IH$7->L3LA(;E57TITLLg$-Av(u)YxOz@Dloz2U;02H-vHF z$<3B8vCGg`=Gq!T!g&Yc?i9EM^uE2Z9^!f@i0fWSDd~EOX`!n3ww3v?`X5zU-@z3~|~J07;_7OCu-$MS zlNHT=FS7HVlt|_b^t{4`;!5M7#)M+1$%2zCT%PZHkJ~RnC7Sks-e4^DabuP_g<^sc3gK%h==$29)$bXY4uD*xXxidVG`2fZL}om+DPF98p8j?rf{wc&(*s zg1Uk$oaoqNKtNp877}k)!)&r5qrMk9qq{Y+yf@q0zPh05YOr3KuHSVIEZU_pPDL3Pf+JJVB+XnACD>)_`71v2i%EQRb%;4*y)<-`94zYYkZxvio8XK|Nuan~Ad@A4%zw%e1hMiSbkp_Zdxbel znf5`J5c3gE7O9m#VDo3=`iY^|#yKh{*Y9q$LTSu=m;UPa82uM}e~Yvn8LyVl?aBGG zdvf1cJ`#Pe+o1-O>B%2bd(zQ?w>#4w^6^9?my^9F3O&5z5WO`=kQp7}Yb1v@ubV$l z3q4hOQ@&S?M@Z=j{R;=j@w4pz0(@vbi7!p@WxjaLTU4}eRt zH#SPuq_tu!x*J~c#x@mH*D440A9;8!+HcnA~qRpNxnlj<(1U{K8*S_5Vwr3q;D>$wy;ck1;opW9eI2M?$c0?@Zb zGJcD7FA&vMwC7ID+wE)zP8#l3%6Enmk&K{aIhI?;4vY&fIJYfLy_u2lrJ2xOt_WHA zr9KTLl|a+vo7JkfJSSp8gz4?4$HZA0>_BvcJI+3P*=~XE#rb|G$ywE0^pSA@7jZt^ z6i*EkN&S>w(mE?Xv>q!y=J3_t!};;mDVDaIym8v?IIE*TiKKlvQl_2ARVfZwe`*}& z)yiEq`9h?_c9P{(P3_;-{n8(y^y1c%;Sk6EAmnNND#nA7-sUiye%*mgwKs763btqP zdt^0H)|CupNL+3;L)u+?&m=YC@MO^4C})A-_7LJHwp-at8FKV*<-r+|X>Ufvlcwj( zLw76XYWRt{_?W3$qcP*`R*R-It2sT#**%s9`!QGHa{2blO0M-y_r#ml=*{e`=+Y12HB5BJOj)d6xQo7>8wAN;ADMq;lec3dbd*;> z9vC{5|Ja+1I!@o?ccc6M*bK=4mNi8zDre`|10|}-y6?e3$kt|4luk{bp0i2(2}g1KKx-| z{j26FYXaURwrXeM<4BG#eaLs}*f^G*e9gPF9pvZmExDJTy}3@eeD`@AT^hULI|&eb zxtm$bL%rjq6X}l&f%fe|M5}|Zau+8RCyW5ouZln|<#E0yMX^NzwV0stp)?>c+qbtW z4f%KlCnLk(TNZ^RS4#BBeT4QuQe{c2qiO?`?o72UovhXCpWXQR7m-px{G{z?Rpoy8;N#2jTx^9H6)jVqT>$A{_R~x3%Mousw*_JG=UFX^t+i`@8M#+kRr&DDr^D=VN@bCgO zZ;5Sq%kb)+;C}dE2r{lwv~%?Bc)oIKFj_6Io}FgxDxdadeP3k6{LA!pT%$zaWz2X! zEroNk6Qm+f`|>XXbNKg%gXLb7j5}v7hO)m;v5rqchsxIxKM8X;)J$LOq27)*`_R0L zkSHIRZL0nhG^;8oAx%0lS>~86(VBvh)BVCAjEqHjUh|Sh zj!)-fhP1i%Vl;{+xAZql*|9FuzJz)@8>xPGg(u@pYB-<9$;Qs`DaU+&B$i~8Y(BGih~4}P zuiMWv?&_z@yu42$!Fm0`D0*MJf1A+x4oIH3~%=GyW^yPdFZI`2mUF!#hz!B z57^129Y};~)?JCsKvdl~l|7b!C6&349g;2-04!EA!rK+A)UPM)l8=ov6{VORNsb3AIw)*##Wqasvu z0Wpz_q;uEcu2`&eOHQ2cKmNp*MkkiPhovD+E~a`(57GGO zd){Oh{YEyUxdbE{V#&I+)PuzgP9td(ABS_y8razPG4f|^9~3q5!x_x~^d+^`#~ YQCH>J{5awzyGt}RvbtV*?N;2s0jEswFaQ7m diff --git a/doc/user/project/gpg_signed_commits/index.md b/doc/user/project/gpg_signed_commits/index.md index d90bd46d003..3ea2203c895 100644 --- a/doc/user/project/gpg_signed_commits/index.md +++ b/doc/user/project/gpg_signed_commits/index.md @@ -7,7 +7,7 @@ All you need to do is upload the public GPG key in your profile settings. GPG verified tags are not supported yet. -## Getting started +## Getting started with GPG Here are a few guides to get you started with GPG: @@ -28,7 +28,104 @@ to be met: 1. The public key needs to be added your GitLab account 1. One of the emails in the GPG key matches your **primary** email -## Adding a GPG key +## Generating a GPG key + +If you don't already have a GPG key, the following steps will help you get +started: + +1. [Install GPG](https://www.gnupg.org/download/index.html) for your operating system +1. Generate the private/public key pair with the following command: + + ```sh + gpg --full-gen-key + ``` + + This will spawn a series of questions. + +1. The first question is which algorithm can be used. Select the kind you want + or press Enter to choose the default (RSA and RSA): + + ``` + Please select what kind of key you want: + (1) RSA and RSA (default) + (2) DSA and Elgamal + (3) DSA (sign only) + (4) RSA (sign only) + Your selection? 1 + ``` + +1. The next question is key length. We recommend to choose the highest value + which is `4096`: + + ``` + RSA keys may be between 1024 and 4096 bits long. + What keysize do you want? (2048) 4096 + Requested keysize is 4096 bits + ``` +1. Next, you need to specify the validity period of your key. This is something + subjective, and you can use the default value which is to never expire: + + ``` + Please specify how long the key should be valid. + 0 = key does not expire + = key expires in n days + w = key expires in n weeks + m = key expires in n months + y = key expires in n years + Key is valid for? (0) 0 + Key does not expire at all + ``` + +1. Confirm that the answers you gave were correct by typing `y`: + + ``` + Is this correct? (y/N) y + ``` + +1. Enter you real name, the email address to be associated with this key (should + match the primary email address you use in GitLab) and an optional comment + (press Enter to skip): + + ``` + GnuPG needs to construct a user ID to identify your key. + + Real name: Mr. Robot + Email address: mr@robot.sh + Comment: + You selected this USER-ID: + "Mr. Robot " + + Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O + ``` + +1. Pick a strong password when asked and type it twice to confirm. +1. Use the following command to list the private GPG key you just created: + + ``` + gpg --list-secret-keys mr@robot.sh + ``` + + Replace `mr@robot.sh` with the email address you entered above. + +1. Copy the GPG key ID that starts with `sec`. In the following example, that's + `0x30F2B65B9246B6CA`: + + ``` + sec rsa4096/0x30F2B65B9246B6CA 2017-08-18 [SC] + D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA + uid [ultimate] Mr. Robot + ssb rsa4096/0xB7ABC0813E4028C0 2017-08-18 [E] + ``` + +1. Export the public key of that ID (replace your key ID from the previous step): + + ``` + gpg --armor --export 0x30F2B65B9246B6CA + ``` + +1. Finally, copy the public key and [add it in your profile settings](#adding-a-gpg-key-to-your-account) + +## Adding a GPG key to your account >**Note:** Once you add a key, you cannot edit it, only remove it. In case the paste @@ -50,18 +147,74 @@ You can add a GPG key in your profile's settings: ![GPG key single page](img/profile_settings_gpg_keys_single_key.png) -## Removing a GPG key +## Associating your GPG key with Git -Removing a key **does not unverify** already signed commits. Commits that were -verified by using this key will stay verified. Only unpushed commits will stay -unverified once you remove this key. To unverify already signed commits, you need -to [revoke the associated GPG key](#revoking-a-gpg-key) from your account. +After you have [created your GPG key](#generating-a-gpg-key) and [added it to +your account](#adding-a-gpg-key-to-your-account), it's time to tell Git which +key to use. -To remove a GPG key from your account: +1. Use the following command to list the private GPG key you just created: -1. On the upper right corner, click on your avatar and go to your **Settings**. -1. Navigate to the **GPG keys** tab. -1. Click on the trash icon besides the GPG key you want to delete. + ``` + gpg --list-secret-keys mr@robot.sh + ``` + + Replace `mr@robot.sh` with the email address you entered above. + +1. Copy the GPG key ID that starts with `sec`. In the following example, that's + `0x30F2B65B9246B6CA`: + + ``` + sec rsa4096/0x30F2B65B9246B6CA 2017-08-18 [SC] + D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA + uid [ultimate] Mr. Robot + ssb rsa4096/0xB7ABC0813E4028C0 2017-08-18 [E] + ``` + +1. Tell Git to use that key to sign the commits: + + ``` + git config --global user.signingkey 0x30F2B65B9246B6CA + ``` + + Replace `0x30F2B65B9246B6CA` with your GPG key ID. + +## Signing commits + +After you have [created your GPG key](#generating-a-gpg-key) and [added it to +your account](#adding-a-gpg-key-to-your-account), you can start signing your +commits: + +1. Commit like you used to, the only difference is the addition of the `-S` flag: + + ``` + git commit -S -m "My commit msg" + ``` + +1. Enter the passphrase of your GPG key when asked. +1. Push to GitLab and check that your commits [are verified](#verifying-commits). + +If you don't want to type the `-S` flag every time you commit, you can tell Git +to sign your commits automatically: + +``` +git config --global commit.gpgsign true +``` + +## Verifying commits + +1. Within a project or [merge request](../merge_requests/index.md), navigate to + the **Commits** tab. Signed commits will show a badge containing either + "Verified" or "Unverified", depending on the verification status of the GPG + signature. + + ![Signed and unsigned commits](img/project_signed_and_unsigned_commits.png) + +1. By clicking on the GPG badge, details of the signature are displayed. + + ![Signed commit with verified signature](img/project_signed_commit_verified_signature.png) + + ![Signed commit with verified signature](img/project_signed_commit_unverified_signature.png) ## Revoking a GPG key @@ -76,18 +229,17 @@ To revoke a GPG key: 1. Navigate to the **GPG keys** tab. 1. Click on **Revoke** besides the GPG key you want to delete. -## Verifying commits +## Removing a GPG key -1. Within a project navigate to the **Commits** tab. Signed commits will show a - badge containing either "Verified" or "Unverified", depending on the - verification status of the GPG signature. +Removing a key **does not unverify** already signed commits. Commits that were +verified by using this key will stay verified. Only unpushed commits will stay +unverified once you remove this key. To unverify already signed commits, you need +to [revoke the associated GPG key](#revoking-a-gpg-key) from your account. - ![Signed and unsigned commits](img/project_signed_and_unsigned_commits.png) +To remove a GPG key from your account: -1. By clicking on the GPG badge, details of the signature are displayed. - - ![Signed commit with verified signature](img/project_signed_commit_verified_signature.png) - - ![Signed commit with verified signature](img/project_signed_commit_unverified_signature.png) +1. On the upper right corner, click on your avatar and go to your **Settings**. +1. Navigate to the **GPG keys** tab. +1. Click on the trash icon besides the GPG key you want to delete. [ce-9546]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9546