Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!S|__dpkg-split.1.gznu[ZsŽj{[#R[%;HAƇdgH3:X8>P֙L"V*e",ug|.&xdE77p1⦖y$H2U/xOFJ$?YU!WJL6*Jd>ES)^_d-jVSNOA2KJI.Uէ:׵8!5*XnRt,y'I!*,VKW)P*R$L Xq2$MT+lMf6Sx}ͦ"GޚZL( ZMzl~\&4 <2$dN<Y$5,qc)ZߊEgJFjK%4n 2Ii7XO=oc^L)՚WȲ/<$F[إ.bf0e~< f<E5;zb~{ Rp?x4`&K.EboE> /^>k0g/cL?N b~ZjEr_''C%w1h>=AӘr TP\LTPx]⮰ZB vuXDo"FK>{FrFY[HǮۋ/\.<)̘BGOBE,{'u`*6J-=c,+2K7X\=\&>&.dEdSoIWPZtSVϺ!67aX)JRUE"1)ES.NDTd}T`,l5r|*K)\%!]k56>y#ļ8x=%EX_#< ^<ꓣ?``\uk_[rGQܒQTlYU/n/"FGG<<: <2h+csD4Eݔ 5UQO!q ?W?<US>JYd0; V+tWM߭BWe$PEr 1z{|yV<3\TT^C +T^+Gw8o $gan DgO|j"oF 7ϓJ"MpUI=|ȇM~XPN sWH)@*aʥȥ_ο׸$?\yJ3I@*h+n4]|@x^C|gsS)$Ǻ#ǢݝiSwl钸$azhSMdEyfA9GF^(A LdstZ crg,M<y'H[-8KAD؞SfKF7'LN[:&#gy&'ys4X&$1Rhe L!@bi[3SFeUڝmq~v;99DW[:e a6bpG`G^?[YU BI@L7 9mo\^L-)pDInuK%z2K?-F}IM8ٌ%'3Vɑ^لCO U+D8U46kd%4KD3y@ `JD+)RcƖ9vXIe 3-vt\uaG-*9IV/OW<·3ңƕt JNҢ- u۞^faW D3ʔv$`o"<\tdt|7ЕrA/gs2ְrS#hE.j΀fIG4>97SxH*瞯pM̰_mrٱS쵧ǔ*"d R73)[ {"!""&Z Pj/P<+@3'tk!{~7nPŲlmخm(J:R$om@LR+ d;,líR?kROM8LMʓ&X}تCP"jɰ?fi 佥q#5+>*t㋘zCeU%% XaN% tСykl3jkXmwLgLByMU3v dJx}**Ai x]}@ăNI=Z"ZxU&h`*WoeVRGN9P=5Ik@ VVܓ0z H`c6Pؾ(h[oy{s{|~Pw^_<)|e@ 1v<(qM^ɹҤ͡\%j@6G+P\wrٯgW'4j0 a?nc~ٮE&rL$#Ȋ1_oQ+ah5js`IFbL,PvБ++䭶aO~=~{zvkJ!󧌧wg'Gd&=1z?^OTXA(윘{l8$}F븪iDA;tTy|H"Qq3~#sj X[ٓ6 s}YMS:+=>fG ds/ف[ T6ƈ r)M.vf3oAU&6Y3!h8і^d\f7ݸ/fjM>r߿H*ß.w}5.Lp8+uꯒ؍n<v.,PK!{cDDdpkg-divert.1.gznu[ZmsƵ_%U$3nfL8dI,H7ogz1={szb\H-d?JU. QFk4~,V+o<֣4y \d3^~@L{3BvRUb!Ӿe{ ƢPSJO3suQ*6*CDx~hŏlQ}Hѡ48px#iCL:_+˅Q0LtZt0JQ,|!f b1ZF͢LZB"6NxݔEZ"VaB.Ruc]ws-W2tb!F tv\,2]Jd@ J{|+)Us%l7ݍbb/ԧ@׾\1SJYA}jxU,62+q`O?a٦?Glp_̊n )gx4`&G-YdoY:߼<`:7ǘio"ȯb,ϓRɝܤ׫:OP{OOy>?W9d϶C־_ZTWrU,dDVXDo#FNĒ/pKHP$>ۍTdm?;[OBLq-rd1LBGOB*{G&ƋX[zǢjaSzdG6>&U]|b/ߑ:nP4 ]"QJ"L+Y(H$&Kvaw NS)`̯52ʜv.U5ֿ۔9sbZpv/,7#~C._/_:9:j^76~h1!QΞ,pc&} ;zK?;kY#'9;'@>$zA^$܈<%;=9 OB$={ϲFViS2OCY(DE%g\x+1CU԰>7brLཅ_`ԑoo8>t!? DPUalc&k\M ':3ƒx^KśO޽R9tR 8C.s ڨeڠ&$JH8P@x:YHHIf@ I􁞷 I;j*fC9K,ױ&Q"v1*{z 2tXXEisg|1m. Ee~摬]#U-hܞhlՒzRƐbxh2!_\_?"dVJ圻wt^uuBa,sqL8x7xIR0ۦhV*4:mm=Ud/@pD3Ge:f*z$MkVzҥwi'iZ]8G|;Bo.JBF,L.زnPnU)nulIJ^BKV[T{^uqgl8tt1Q:&&c 8fetPMD':( t_[= LTҜCm<>r,GbE"SCCxH`6*^, 6k o\!E\j`1g @C]{&EK665VWE08[PW[z%ed;{W˩MeG @-A y 1 D9اFպnsY?-핹Qm"CV6T1짊CL=M+xU&!!S-D'(+E z mRc1W=o-0.XXqT`dX4ܜ 0bZokm@mOGs:Sy/ڳK7bpZ~+k %'$,h?x,k#M3uOBp|L)Ur .RcDRB?ʩ !Ǎ\ƟD !S `)qowA2}JK bUU=X7g;b$VixMC[Ϭ{*5`WAi/`Q%,/_C8 /17ue&5i\)+3W֒I,Ԯp |T2xuzHOwvOc]!CE,r= zDYGG|Fz>;9i?VdŸ\_ aHr4oGX9sw0D.ƒ=`|(O8+-(k5}˫J¥, 1}/ V|Jf^ ",cJAEgn<>q3[ECPu^i%Br#S R.5'~f(n()]0_fYKY`6@cIN'gWO߽Vm{FTlZ(5Jd3xOKLRZlv;~NJGұ  8/U c bUut͢ΫtE#[}Xd0SP3X-tU}\hvVT`}ĮgY h iQБdѭ~w|ѿFAT4/Tx^@dOST>-`@!\ u|E; w@NjO% ů2dbsT%I[>tQGj.}v>>b.cĄ?3 @CF+Mɐ-2"IIM ))Tխ1h3xW4`X| owQR/Ġh K{y8{ `Y(Dy-hIu J5G!rqǟ77㛟Q%Y-@2}S"z2:ZmxNYnot~UZKLry21 RΝ= pe3< S87H 6q8g2Q&ڏ+ *W~m 3M_̹/hc@Ґ[<54ڪ04):% )Ж'OS h:3>>;^햭 ԊNj1Z,?Jܑ-Mn_<3~d46tH~hdIp)2kMp (uĈe"Ӭg[Br!gkv/4U%yx%Rd>ɏœ Chbh4%!g. ]f< p0.I_'wN"7]#ةdSr)H3DU+aXIRYFCbQȓ"Vh.IH1,BDBaeFMep!!^fbuʜ~91NEJr6p<r1{a_f<S21Y>{8c%voQS:$=wG=r7!|b#OCbK r8i䃕 yVg;:< @GÿiypAxWȖ:HcAs` %'xW /?|KC;xs\bnO-^ Khv=|nx|-pqSlAS? 8/"]Dr-q%\ãd/N6Un4[Pft"St#ЀH|86/gfqSKG-o rFL.z|>\4U}ՕCY$*ͳ/YHD"N)D4zPr/@ \f K#l(>e-^W?-ZďZTE]`Ax>EGǢ' /A~w^P:^zFx=4;F(>AEFoA*j |.*%kyuzϷӋXj>9E͈mq$S}QPN6]AK`s/3zA;Ay$UiXTCvrŚD5AN]y+]|Rײ<|~u{z"C_zxJH?WW[ :ޕ C[d,afcd$')E=Pg44DTCqtB˭RZpI*:L+enfXI{[w{pMٌqT]FVPYPB"XMɬw4hɰ>dP#]Ast *IdA_Bc*yxM^O' jo&hS{ Shy36<`nZyBЊ(%8#BW@ZpMOk Pi :-HpLwssݡ ZqnYΊn<-5 h 5]8V#. [0,nkrpOcEQl3L*u4y^pMjخs'у.ke\ An mr'6X11ĈgiU=;U}cY#ysQĢAnF]U9[ -PϊM]z]@p ڎDʭ<ʏGmLtDn^6gHa3ٷɒpF3B b&Nk߫a~Ҥ\5Ҥw߭ Dh;-)1 ܄ &C X2I ApŃ+PW`ν { Qp7)l⌾McLʌ.a(c̕,^yl0Nc٬B aTFj$(ԷyQʙRsJ >b2u4/!;(;~S罗G1`eF" 2DMoHZomuJ6 nWX%\1T1<qj&dI<2b-1ΈR\~[)-J !=h'<wc%3bsrHR1}P5ݣLCye]PMKGD/w* q"pzP dy4FO>)#RP^QiNmhMm\rg l'Z~Isro"LL=blaB+RHv &R1V(0 :0 *V=iX:ͭ5 $>5S!m.#S;Leo T< 9j"t:y9_|^/^jqe@OgW}mڹZ0/[h28?LiȻ+^A !\q $"a3Eyi 6Z&Tʈn9brMq}Kyߝ\[˅2_̤ 03Pt]*2Q8XOk=乕3.8e =DfQ.Ir^߀[8{GL:չFmrn5?@ [7:UUv\Fj=gE⪒ƏE=UT&nDQPx^Qh4 [IK+X LS "aײq>)tsw.LR)„i+{pr4,WYnrI[QJn~"V9 ÆL۱f}ъ![:YNs 39'gHeoAl[^f[8ꄒ6TK 0>3Z R@xGS b@Xz1$*iA;&ɁPR$r^2EE^˺ H3*Nv C\,ZGzX%'˗8ϋ#59ԞZ]m9tH?WTfEs5A֦htV'\u$Ƶ, B#KY6H57ӄ-k -.Mܵ[^OB'pjv 3SFQXQ:Wpj EQSvHsǣ1@y\JdA#wܹJ|\8!\+l6~nZQ}ANAGLqus}3fr!nn7Sܟ7;zݜvN=O"־{@'xYZMZK14Y.]'\W9ڱ0P3p hb ЦCNeIut|v]f AeF Y^e(p#kMZP9:uQnH,|Nѕz- Xï")P.Y?<1<;KZ-өxZ<ĎzF}ϓ`a_fzW-< ",k> s‚9Z ^f&d磁NT@t,pZ8'"&'<ќq>SmP!5YXPRxjKO,)k68 Rȝ]<Ir^ w}x_6H6d4:sSm?Mx5Q- SQQ|,*F~Nס= OlRpVoWgg&KCׇB Mcӡ4=K>ϥ>ߝ4Uz7z丁߆w #n|OAk)dp] JK8h{-ɻg;cKS )mg:媏En~~PbqSGiS:S46‘G0ϣ;:{1#At\jv8C^äW2^/!(< $CLS͛#Zx獋aGp@ڜ{@|bk#C>'͝ܚegj:AgWN72~Asys?@9I)-|t܄K2>3$>'th7A]RsɹdGj׵4Y>yP뽧-8DePvglCl|w>3FWÿ RT pHobA*Lzٱ_h(y)>9bLu(chCzmN+:J^z]s|<|}yy7V"i=צOX6IOϧNG/ďjxnQNu=s^H#̴GFwY"߯qҺ:t:Grgˋ\Cld ϜguZy`oPxFPK!QSS manconv.1.gznu[[OWSLy(&« j R(c̮A`nnӆ1&`hخ>L9~W14juvΜϜ]B{*ӵ,;DT݉48=}%?>#~D,VK˯<GbR$y \,V_%&TΤ"s%FۥJVLKQJ ,ZRE&6Г<׻\Q"6*akQO/JqN?;)2 w$n(P"]T(s1I!.UQ^e%a 1|4m\|sĝà&{{M lwiO|w9Hu2w_~qwrVKLrXg>1bk jQ}.dn}u#mD~Ղ4S\֡ Ff%PJ@(KP<'1FX*VzcQ 5צ&x}*;"kpX[b`ᛅU^dߥ88+YUQЖx*^/h 6Sk%sQbc #g4ª2Åa:qkj_ky#$8b;l_xeZT<8eM=;:8hhYm\+b)i9&{x8c"l?L?ٳt켻';RRi #_(nI^Jw }#NNGO_'G?((J6QMQVy"H𧤊YwEӾ__PhJ<ARIbjLCZCw :`xfhr)^a8)TPf2XBܧjc)Lo)iͻ7?]_޶q^O>]6M {S KC8'~Y Ix ] 6dRn4BҮFH)a/\:$Trܲ|*,>T UN<&DyYoMf[!%&PQq%?EV.92 s:Pe /sU% _\[bEd7fARorlM '?p =ZsVS')G|aI8$E JX롟x M*B%*9 &lP   9fU*[ W鼨v2 XPmx)c f*-K/, òڭ!Лi*h5FED#.MP=mHުVr8:Lds 1`_3bGdu3S7Bs Uc7mfLc>'z߼tƾ`#"4m"E٤- n:tG4h2ͣ1t^>H.;"Ɛ }^\UxJA&$&m_ MDret7!#Йiw7=)^qЙa 6oƣ3^z #R`DUv"~52m'N˱}ݻ\1tOP)7P h3>mOEs+ƨ2wC~rA+B1]8̘+P ?!*1DKɷnו{I^HxGt[8G!ML0H!l{gScAReJz'a3@(r MfPkv1TvmڕCޚXL|lWOC[T"R=A2@0ʬ_i&4a͜iHZs,gƓ*A{70K =4nglѠ;,Vnt^Y`B=0XtJ#.8 k8: - v0MԘt<:>Ӡ{*rET`$r8Y4vxgDy)޼gO,NjCƶUhnc,)b6 $* wh)YlX /jVe):R ,#Z@VЃ@0EhujB!vy5y P]A IuVQclZ# q?F8wZz%K1kl3&:-C43d|Ԁi`/=^MAm6Y!tnQVJu41S{ڲ@&to ^ڊ&*yˢQR+ =F^9,il\WN՚\ 5ץDI ۦrk] NO3 0 rLOfigRzmUXQGt.M{kx9~;&BhW[ua`ggj~?c!p5JvotSgjg^aHEtL}EhzXc].%ݼ]̸T/t $O#64]"$h77^t#zԣjdgE%:J@=f4MM7y_;J%!cഹ4ʻ޺rC놦덚s|kx&MP&Wd:zSL#{V?642IRկnp3*z+9N;ņw5N>Vu) ІyIBmIαn]u}#&3=&{#\~g>:uaMΥq{Sw py!ЗvR,L AS#B=.[nַ*5uH>ͧ#T|J ۧr|v xd)w hu F\ϢbN:l{ ɡ ޏ #]TP<.j9{p<;K~Wz$͊%>ޑo9ӟcˡh([Z#۹n|E}Ġu٩1Mo麇7޺)0yd ͌"ɉ{<^r *(#;Z';{,ohN?I[r:Dt\m naԎoqZ QƊQH&n$\2|BnI/L_̽xQ&vbdi7{ˌ_V\5glH9Dz;~T_줘ս:ч* ̗U%Nݥ=TbMB;JVzûo(CKʙvvKV=J'0Dy^یHz:lc42cTbI62 ް>_}՗Өu x~_ lΜ]%B!:6sKTsYBg `Us-&i;w˵0 d58Cg҅GbF_YtJJܢ}͎ h^6OdwH\o4)r|wo?LHcĔP&yon*Hb۫eXII8 v=_UH'awj[4d4+~=7+qĉdf{n8TY 0oshwMꋉ.yZ=@g|h#,N{L+2}<%rD*;Ǿ!`/x;XWyl8+@Wh.i1zi=I`G .CLv E$E}:FBFF9ugs&,)h -:T ,y vJ}oœ7WF183gmиL7g͆~ 0Q@2Ac(!lOUQ Z: ^ˡCl+u[{TA^@F!2O-]9y.ob&Ъ${FBeN z]v'EG"%%_Yb/Osخ?-㖗 ` bG iU"z Mdn>7˖._M{x]ځ A,e dSe[6-JsTb$}EFu\A kMO);s']tg_9u#) ݍLcE؀N?H% J<۵OOY~u C:C=Ȧvl`DmIaΓΡmFŅ}Q9N\`gF{˒O}>{PR,q=Z:wO'\Fj}lOPK!Y=88 dpkg-deb.1.gznu[[ksF_1aeFD$Nb:[$ĖJTTC&^ƃ3xro AOO@Te{e tsԾS /Qܣ#50"px8vـ~u%*˵#E9u@ΙUUdBJ'V KUZ`,\RE܇~Jq]zN LFsl?V+wY7YGӣ#M'O'448TkޢԹ*s/)"|&HV^ d]yD݆QĤp1YU]{bu@/-yT,c6,W_@/ef0* 0Ng= g(Ίgf!^B>sR5fByFd>}t?9/m>cհb::r}-jrmr 0 ꧫ~pt\%lm!o[ VKr^,Lz`,HQ["Q0%*|(SU(ޛ(%b);:nwE~.Cl:.[)Fw* {_X%tQm $ ~/ON^eؑzk L-/A3I(qQ5k]zb3cYO7[óϖOڳyYj<"c?Ő}z~}jӗvIwPa{" o0cۊ\OB^ :*Ea^^:y^keAlԤ|D]fU;XY M+& Wj]%1kSOh-1)eP-X|h"(V@w@P찘0~%D04*mfg4/B NOw7zx@Ht`Guy`i ⭬ϋq~d#'Iist6b (K>wIGW ɇӤDzJqb?sM1j is 7hbKfK \ŋ'/.]w/ՀE:PɼH0&0|"ȵVg$?d~ebSI5{05CGl(W )o*" 5@)lp&l'^޻8ղ$$ % k?D|N*6WƞPtFz PvuG3|to'0K Y#`L{iˋnq8 NY0ζ"#/'krjQne@97: OВtҋ5{uQ C"Memv=Z/[KJ.DYLna(kb@1ibɮ\Aiu;'v1S›B:kv]Zaȣh\kmC^R߹ fT|?hh*1 y=IGx:FsPԜ${Cz3 DZxmZVwC Y[XSNwϴ_e=t {X#b/n or)b Y9<X[T#D@3h`cb7jÍ;Lk|Qf-I$/ѺqdLN n+Mۡi"Q ج`^R"B5|~1R^>'"gv׽Fsg#쳧V%0ʒ<*9uaBNvDF!=۾Y1w؃.Hӊ5lVg|IT0ߠ[Ĉ60kg[KA<'%I:nu2QX6rbz"*K´|ZV:n6Uz~ `D _@ȈxDg-j(9d꿄REdQ$&α~tHc7:m5A(y[j˶Ԗ3ǞZm0xoK)Si]{+ #jJYV뼶#o)a3zd]޹JhL4v')Y[摵e=rd/)}LPO YE̙~D ~4gF%+2RJD hASuHn{^plDir$oc{6I:% x ,~H=YZG=C@&乯Dz,UJ`Ϥ!/b 'X18 tTkKHI.ʮ$IddfbǪY5: HHu؍OXDBk#^ yI*M>aZMh7X(]92R;.(EQ _~^ #8c`/r5.ȴ6G`S]C߯Bd@(ʍK@MݛcǏ>L S@bnT#r ͌ ͠V~~ISs4 PFr$sӑU[ w{"Qࣾ/{QzOM͎1Sȗ6HվjtTՑ{{4GA2ADlqԵ5A(sṮ. !;d.&9Lߴ2nri:{PSlU-H(l; ;]X5(:yi( luNMhI5R3gO_GƮߐ2B wT YUZ;]<m\LL4X wu|htP=E}ZZPm;-U_Nju?2MݲbY޺Fse~{tls4-hN=k-iSY+mŬt'`dO"SWM3SwM4c^̀NL*{0fz;hƚ՚"Y5"^&ڬ-2.9MIRG+~Kϋ)!Hgy^ ez(M̷U!0s=m\USt)vڣFI:"&E(ޞ>(=O[<sAvLS@ fU-Q&68咪2㩍vSñL9k (e{Sw f|@~}RMZYm%X׈mKq78/Uocozn{jO"2/%]H ll<y޺[>!%+=3OWN8m-Hs۩iu);8|!bQ=8P a`qFG O-fsB++R=O<%'=~+rj*}0iZ&-$jOɓdL8mcK,#Pt!~v4ېmЇc߿ӳ{_^=VԐ*KJI_{ۈҭfWϔ^DS])+in%,$h K-NtYo>X;\݆B $6 Neлa7^ 誙 &{cd'֊hf*!N{.vOg:|uZi}ţL۱o\>$-hL [K1MF ʤ^WL|bFXx'JI7M{S8h^;yf%|(@՗Π9=zاozw\[/Umͭ>ruy6)%HMLʭJs;oRl t\oqE&”#I3ۆ4UJes@qm۞xOiہs(R{ d}[>xZɑWX:.d7lQo,U~NW8 V ój9x`bvGu#הlpWӛ뛓W+apCnb45.EXUkP )]]+W:t&j*i"wt+|/A"`:8ڽϘx|ELhџ;ͫT΀+]]lmŷ绗ۣF_O/NXW(6Kc u՞juW>uFaL|X/cBN>!2IGH~8f&ٻĒM 8IX/)n9,:%R{kU; e_zq#@(eyK#7ZD-ͮit#0mO:_METdܿ;0^k*SpBLD.AC'ǫo{YF:Wה76:1J0YJqyIQ 7M3xn, Zܠl w.82B}ACUipf޼NgjO.o`)~I|=O؃ s6S\ILΨs s `?¼_GCbaQųMDʔ~Wtu9Rs>Us+Ji\X$XnK5\]\|P=ީ&iNQёy,?NVa?w=PK![ zsoelim.1.gznu[U]OG}_qC V1UUB:=k&ʃ!`WgSl(*SBRZ˶f{shWRz 4 }?hBOupݸqZu薡[ `W:)Oa]퉄 D^CO L>4sz'h%A+TpWA@1SԠSSZw,Fh!Mwq߲h?]]f;kozt !oZ@%,-[%3Rw枀Hl^meu Y8Btmȴ4yU_c%Y#:J? n i)cn8 U%̆3m*[Y` |v3H|Q˟ ~KjA#i\RjOH%i:]7$`DC3hSțnL`~fj(lhmr:#3HiD daiؚXmS?S'Ē.gmv0r8hRgXOnkC8>pa6́O`:sSoD>w;xY}}rAowrE_E%_%tLso҉];tXo^%43oJn!oq = I oxd. >,xF{{wo> hc_}ߵ jjw=&K_+ԧgKEiW6`M#15z̻DxOR*qS{? Zx`UkVeɥbm`匰d&fV4+Q FF:)H$*aa WƠuqvj?΃P7}}HhK#fnb o>.?`k= t@T%MՏobMvzNr1*;j4bG….NjQSZD)6"v#L_^8ZUdt[a;=iC.Ԁ*V?9ZAW!X]Oi0Co@+@Niv6oxF@ woĒS8kT؅Oןe y7'| ψ IK(v4Ԯ4Q,o_,ʕa$aq&P ,8L{^, h;,~ jz"{/vOM8)Z[/ 5dNCD/ N h 5HUyT5ՄRTL Fz:DB'u%h'e@ Tv*j]b)vq%VSS$Yy{n_tM`R@E)$J ث%@UE-^qӘ vf'*av :JN5[Zp^G&X˻8vt}u[ksΛcTTD4<~W]塛m <'iA*{TF1$8 e[^mgТb3(%U4˩ oS𻐢Sy[8N-[?|X 9un?Yy]c4]*;FTb+YUUzk ȶF8M1Ԝ2}+]05ҩy[>Vn$ ]`i^6r[$\#iD|`q6>~gއ.]-bI:Z/y3sNgڋʩ2$ 45 B0nتi!eTh4- AtU{RCO`"bo(fhz5fUu׆Rln>, #W.N9tM?%#,w.izC/^axBٚ5񀾜`?#t9.ғI@P6I|SpOq c7Ux~s6"^΀x?&πZUH4{c?g3u A7G omgB9 ;CX|d2gX;? aH jTPK!0}HH dpkg.1.gznu[}kwFwZmXLHrNZl˶&d׭>i(0A@fW=r3gs(֭[}Ǘ{hVͧiQ|Rs]:mu&*;<|@|.fͷd|WmZfiuդЇ?diuV[]TUNZ_-tVmƯ_jոY[Ud9a&kT+"ikiYU6 ,/M[+uh򢠮VCc)'e UY, 5F뜞󞥪г:ʪ ~aSzHC㳰qmВ'xB̧_ -뼅S7 j+3oMKڅp&6 l+L?t; lH=UӖ*p*o?¾leW/wFŝe3es^{o4L`nJAMҡm h pÙ_m_O` 41jW~8 ~sMM&M1cųxM0r# fy9 п+?3-dmJ]71 N%Kea=,7P'@qKR,#JZ!x`7F·0,'s@XmNP ^O)"?©NI53N{!Ld}'h"ភ|9$0Ú>phu bQ'A[Z:NFio/@G 0Fן iinx\ܔp#"Bjx 54p-pG/Nϑ̈́ǹ ݇&|e,U;L-UUbxBA܎ӆLa#z5lRsa+*a#Z-ity; Zv5 ,ZCZ3̊t-ǀ 8V|O!EKi/U5ˮbEti)\*<v¦j5'i疭}KFf4_`O/m b|ہVp7W:yMrG@M[91s4-_$%ف녛_0u\i[Yڦpxv$ԻVLPjNl& p+^, Ԗ3[~o}2W'hW,q+$= f 2mMgp9QuٔtlIFAm ټm U/`̧)] O8@6gS'H@Ff^ N2LILsU d:Zcm;WK]ucc&G+3ϊ;/'-a*|mWf/&,~xuU WdDg=-ghwUZ j)(f=SW Ė%2TvcAr 'rjҨ(p;cJ؋: -"Q *] f!Iyb7ESCD`5̨bg'{c:;: z ,PkehO3-YuSsm'"eNȻ򓮸NNWJ"-yha1Ol&.褰koPɼN:\/WD; (7h=Nzx9*b*~3wP/ļ3c',>΃cU4Gȑ6jo'{kz3G/>-Ᏽ; JK8OgM0v\qJS:"“8T%S4DZqL J@Ʊ2B{ a*rk}pp8Tȕg^hTlv3Djyw^ =wI\x9GPZ'z[%Hn6L <["ߎ`xj1]2r]5Oµ %qxikC6Ia~(a>k -@t޳.\S+w:.B#֭Wkep]9&ߦ* Ǣڡ5ah s4E]Ԭ -b-#uNW۴[䓻xﲆ/Jfyh bic~둍]|#DX=t,xDOVӨHXE$ 0Fd2ZKdT ıf9o+'D*c\o=I|ПJ.kYtL ;yk`j yQOsWg?L3X#rJX&}"ޑQxfP_hθ)bLFZrD DW$ : >\!c.QJxe({qm2Af6BsX!8~X͋8GFdHLQ22naDGPǘy@7'}6UoR;*[z(qug^ yTEssMnwrЬ2^@DjyNMiHYE>=5`9}䔾RӷʦuH²y\ c }g|WD:pl{ pD|W<1\ۈ&HyхOCǴ@W'IvC2݄j`Ūn3@֭;֬, Tgg ÁW#1v3Go+\i5g3_y :boԀ*gPu:]iFNU>_/gƯ`\7 /0}wHs@YrlAt׭ @tOlteՎ&H۱utWwG= Gu [g,-FۦDDOnw2%e'y-Z롗qmZy tJhN9!t74% ʐ5%Ty$e_hw1A^Q9߅abN9Dt`֢ׯ//eEDo8jVXQ6|ciiwG]t}C%L%%rnulO5 -`kj݆e8EWfH/.{ &͘CBq 807.W<'Χ#9G.;;~? ԵFѝa0 A4U[ʚXj^,3!6zL۹2W^DMPB|("kIV1IQ$ϊObnUQN":[)1w lbrN&(tߪ͇*tO|79 xx0vYQXd xĻ0Nsg]. %^zu#3 |E%'xmЊD:Iè @P&OD|?cN ~QHXWR?">#se8flyZd3$>ndFEIyx e_p}Pr-M|kd0?p-g' d?#~5K"ό3G+FyIJпz59cL'F=#9j#Mb9G .$"5)ad:F=a `<)Ar!r ysi#xz].0cu-c: t|]i@{QA5j x{}#CTP/`|vEUr j!|}0ߑ38t.7bߕU2pBo)jS9ky9[,hLnj49r9H4D$mԙ1.~|M Y߲M 0L$'O U3@jg=mrô@gfAuO75 @X1[={gdž_!=gpQ!QԔҡ߀euTG?1g0nIV 2O;H |A=k :]6l~I%'%Ωxu:u x۴: iO90ҝxNs5+WR.JP%P!]C+dOйk#\_ ݨ9; *£SY@}Ь~P?P=T?~T?|sfN#9j*,V(GTȱ rn#J4d+ҥa`Zr5~Po2&MZ(,2П}˹$(28a 5b 7DckX26izspyMƢDJ1&2R?Yt3?ŵލ$[fb #о׳#MYd5jRq$M1J D$31eYp3s-tE'"9K$9*%Ϥ7K9-|dwT 6Z- Hd E_kt_d1(M&JU66o{f#/bшH7)0Ih}l ֬l_IGNqPXd~:Z7d@:c(<;3 W^xG1Bj-?']hܜx.T>Tr (>֛? _889L͞AL d;3vF1ٖі[jpԃ;+]zIoѼE ӶڴFZ`W|> $&%Ӑz@]Lͧss3{+k_>dOTF>Fγo($UI \bׅ"/oߋ"oA@W#HogZ-5^U~b6yo?SMIE@uJ +ټf#??j&ߝ#̼0DÉuD?@Ec~u`sCZ; Lp>~n]"495$ A# ;F27,tx0 #kf78KgVeWw-6S|#14 &F81V5A&Q9ݼse!b#-eHM/ydՔI?$8L%rNTt6?DŽm.o82{qOa&Or߾3P(Ffݥ;F,[f'!!j󧸔bbV`զ/,COK,o sT;,mQޜ]06N*3Y@ 4F1iɎ3lPP`dl9;|{ϟ֣0  _R4G3h4uI(#9dW" a9/L˔~A<4b\`H(dϧEFPl0PgygU9SOEȫq#q\9QB>]/ w3X`/hN.Pz{wBԨH7/X`rf|fRIPVȰOKxΗrIeA^ksq *H*Y2x7|sڅeRq kN*C!FַEg!XVkqNNx;fҐ:#$Q4=D~2P$ Ub7Vye\E{T\!+k`ZmQI(0MlD|_yJ0%3_BKxsDB~I og[^O=`HNf9 "^I'o\_D{F]LE7QX%IdN`6 %%f #AJɪKVBkPy z!$ȷ_\-6 ~e^!Bbqn#~"L5|u%%Dzh:F!'H# {{JxE!Cl oe! ]@˺SpIڤ7e1qqp1if,kqΪ^/uDjumR~&II^nJg^^Aw.QPCH[wA.]WYq+H ?=*Lΐ: 2ݘw:)81Q}at礄 YUbKL"z JS3+$@>B5=δuP3њWyK~%\0Coa^iczBYkgt @>8_ȈuMUNqxfZrާ(`)H:sA =) )?CsE/.qO5Z$xZ)q b8-a$UB[u,O+6$ \T,;Cd `0Fi`vK [E5 k>W+fp\B}Qa׼D};FQėxXnS49*ҶiM>dq l(cTs +t|ƕ.m{wS+FڌDHdzem!mb%НziLL_,8 F萅P0wkuv^=M#\_Z>tAt:ĒaӐ"#F=!I?0M6/XhkgH8+ݍ]"i,g0]sT9eATT^ŁBՒRxI=H"Ⲍ"N( k Qn룋p߹K:kN-e?hSQ^K˛zt0Uǚ?x sD%π(Id 41^7U* TIN)1V}YF)HyYaS> OE _<{`GtdI/K)&ؚ&a풓AI(vQ")v-ek∛}]d5g~S՛rM9S{yԟ;reSM@=WhHr鶨&2  $\$>.(^" R 6.7r [ ^ӔڪB\#avVAkbͩg2cd6TL|m&%3.:i,Q掚U%&`thgfdf38|LH~g }ϬDo7x4 JT+0-^gQZ5²3IC5e\ݡCܸt@_9k;=*(S9RS)OT=Ƽ8Ip*G%#.q9 d~߳*s"ߤ>&&hn|8U ioDkdˆAT|P#itRH5΅kzJ=Q3\鼚%$AeU>ߒ;!16 ܰhh0+q"}ɾ7Ĉ'JҺM"wnbG'>3kOQU02ǔsdQU gģ/qmLfRn j`0#-*3ɴxTJ.zN4=Mh )ڭ jcnNMapq]:$Wi(/>B9{mr-L؛ܻ%zKQ9wfK;o̔;-~cz ;IX!iҶZj9Ə?YikZnb/ZQ>c'rk8.* , IcR÷TWJ>^ E'4#柄IP"ZDm~9䮢 sx,SM-ftO~y~z/G/NN_64HEu׸ɦ;ˋhe)9+O,/,$m+xWyH|Łl lt$P R p5aFj5ğ]L%)Ws(rv'5.ZbKB 1}^WEZZy('Ak(g8a>ơHwq$fdynWwώ|eX:LL"ݬޕcͩw`jh˨Cɟ5K&g7w#oj UgvU@ʏ_k"l!aݗq,@*ҚTDa}Figlaq<OPnpJU! Ќ䚐5F9&D>ڠT<ظTm隓y˔ sD֤<RuɝN:іY`e|JB-^l*%gSڄb8|!2Bq*_Bڜp2RfMfpzS Eݫ%:_ [ݝVO狖Ð` 3ux1I+_\[)7 ULrÖtΝv kL$xWxqaAp=.#QЩE|Yͳ߄0!7.R~S3Tp*DH 媪&V(0ؤȗ@y:>Ǭq+vef7 ()O8+)G;ONH ʆH`IA>唬d`lN O`jBt.xNG{ @Ex&@*!8zHzd")i^n}~(cKٽFO3U]+yn`KSXc@$43x-2w0"j)/yHfv2%y~%msG'cZTv7"D CNu 2ae׼+nwucHk{9wVEEO<\&\3-i٤KrM."2'a!TEwڿs);ڒRm /#^?RIvf#ʖ[DCKqx?7$c;)8Dҥ,iZ1LI,f3yzZ#v0ķt&) Z`6 P3W/Y(jr&h:l#񵮒<5#I{fD^TS f&YDʍ*Jq>4drŶr~ $SJ*#j Fb0s ,C /T&!ӘA  3)h q(v?CS5'AU %m-1>7O$pKw+60 4L|fvz?Kkif+x^&k%]d,a*\qawXU#w$q OzKA I8hwwamhT,ȟ4;jشQ D^ .\Agpt%:RṢ$QrwNw)~n ToyY0.812زga0mA-9@^/̓@cn'ޔېBx#`J=ks F+Pʿ(5Wj6Z̑ 9,ݻAq*wd^:+`~ޫaF ~ v䫀c_6]Ԯ+cLM[ZI20#,N|-fXYߩj`X#!.\ . ^=yB9??|1ۍIbTx‚;&o]vu1Q y͠ 7[abHİ&q> \5$ DҠRNT$O,]J/[#C~ 1+"6m>sn:g_9,Mj7-Mu{ AN͛ѵnI 4KnQa.t|jxD`2<^ץI웰.7I.:=-LY'a^)O. M{4lu=Klܿ7wqNNt/O%]V;\"L&A Gb^#D2B3Z^eZX&Vದ։E-Y)Eg$W55CNtDa)'S^̒x +M#DaQYnF'cwcw/b9oN./.D;x:ӻG"WR^6tC:]fڋJ%q9LGtƥZ ?PR e%O3Uht\$i5-{? <<Ϩ1]Tt'bSm(ĕadA!3"zBS'BǓwN7ONoOp89]p|}ŋi |QT'n>0I.4aqHVj Q|_Z*޸dht:x4n;?so-`KP7>FstNv-l?V).]$OJRBUN@ot՞.vt)+l.l28iv͜ӳ{̯=mUan썛V?K&nqksd#Rb*%wCǐ:qR=>޹z-[%(]k* 4IT;ލ`WdR[sxd !kFCmL/B:z& ksY|d܀ɤi9)Y)ӂ/gH1_b@ dli̋F.熙qQy F]MUa¡.I眙<%0agKbDooZI`߳TC:saIKiۊ3^bm7FU ],E [D2O.s2LP/EE" eF]H? - N[XRX'}r=ÕzMoJZ-DLx=;s PW!;rڈ,ot+g \ :Dys֒c7CԼ쿍11eACg髧OO^r k_ <28:]/a\q@ܳB~l9 Z<'В_ Nhi6Z&qcGt7RخQdG8k+{ɫg=>;iQ޵%""OA }8l0Kȓe㳓> 8۝iOY#O}Ijk[^Is: ؘ$  p =}|ŗ@~Kgx~`\pzl>x$}J՞38̱WꐄouH'(;~eoNlODz PNRvIͫ}uv kϔ|9q;"X/WߵWߝ=Oyv+R:ߗP{6df;LRv8O)e]rvؙt387&S<(`ښݗl,D;1k?:>8zUh ֬l֎3 >oGAF,m1un#%{Lr+ϖG8=0q l\5鎺žX9dq|D́e8`!C @ХvW%M9¬{\qbqef)v7T]^†{=巣v52Q6Zwvē }9^^'M'lDNCL|I$)p/iv]Dzˣcu m觟/.MB5[Yx%ntj1A2v$.7F܄)ܴm>gU A]gߚSNGhcښ4t۔QMiB)6W4fRA|kgs?!^Lv 6wa@oOOP;KІrKzvTb\@:[c@7n+ч4sUͼ-DR1DI[#b qtF-7Y<}8V`_mN8D'HۘPrZ!ӝe+VbeR*@AiCh 2]옲߽Ny(Ts۸gA#b2 1zF.ckbO=~2FF6t_'d kѽFAViVW*Ҽ zq_}`cP[4jaOP!@("܅;sӤqU6?Ay_丙w ՘ILv )PpH,;$oLN =i-M I`ޚ2R#mn޽ʗ91OqU^t}X?LM y0o΋ FlZtܓF >@?"V#b䶮()Fz@#aZXv l?Er?(զK s-0Ümb^zwI͉ct+vX$KBZ&C2}Q;[:Vo$y93©A6^Z&I/J#w]yO^q hvAwW$ t%p\r&B\J̈ZBC^(Cq!u6 x WBh,1PGͭ相CEp/#Qe6/B٥3#OE..j@WKS{yvfii.΋qM{s3+eFS|*7I$zv)3#,GkFi6.q |$^V;7C˫'gh٨g VNbwA9kQ<:Z>H XL\-ث΅yZόէx(;}j|$< mh|MĒ금"ML$glWE|SxFp#XDz80NwjƯ6/u_Eϴ2-: Z@*nmbb,*]|B9 OđaM5:ZcwbLHAΦi150+Ms0hi0&WHiU1s1b &O] UWWbk`{2 S$ h$Pb`mWaZa (:!ȷViOSXh/M[߮Ήzq,LQde JY:vSe ᗝW0埑Rd6-2dgRhHBvWZO-gr^.ݭE 8أؚvmVɒLls7sAH'9ah]jq%.sr,f—>;T+,f[й:giViaĹYsS]6lAX#H̨{GxZw kXv)ZkFj,& RRujv+=NY7·M։DVZ-+:9V>L{XL-esԿ;tr^$-sH$~kKێs:%2y>=7wń@%`Dݥ Sc`G(23[v!l0ܔ7^J'5 MʊQŜ­lmB^‹ġ}a+N:>ɪO=r2m'8\msǼ;7sʨ]MVǗ9>&@(ݾԞzGɣQTl_x/lJГ ݝ-D{4VR9\2YIF^o yACN!'pXhR뙪hn6īCG4۠Uw~PK!̱(dpkg-statoverride.1.gznu[Yms6_SH$7_c]cieD"c_߳ "".> AGF/'2IT*Fb(uxxx)SEoE(z[#Pr%DC%n3TGE&'Jf*JLd5,q8FE&K~J}aL4NRcF}6q~t[^1/$k($^\3ˉQ0L0*TQօtZBzxEMbQcXv.aZb֧#^he14ƤHTdXPKzSX|^әi:y~ t9V,6ԝJP IV:K23HJKJ|4jxT@,c!63qE{,ppq,`ubp}~nB  x879nb_yU}.W܃< ?_>dl/J45өnZO0{KOqUn?Z43d͍>~ln66jRm2Y1Z '1bFrSz?ʡ ,|n:O?n[o<\.~IK#B8NS(TyNгMw3%1KXBMl*-ׂFٞOހEU,d>Gd12)Lx.K:L"L+Y'(H%KVauNS %S3*!Lq0RU洢ap!Xmyצ/\bs>a y 2ҧo_<_=3l,ĈLvH9;0A~:|jD ޼9hk:ع8XH q#ˏ~w! tPi4 OC!.Ė 9?_ /C`cev@u92M”y*ȟeaՕ Xg-x`iXib c5\C=)@rWX5%ERGGV jdS` T82/P^3ćX,r "# 'Zg_}8utrqޤ1|Dэ-F:31=D/m1d78>=홠|F6) %S| E !.bMB)w0 `T!h7/IꚲEH\&sLG2neBxYo!dyU cIa~DAZh8!{E4z|$[)@AsGҡÎ43YҾ?lڇo=_b9Vp|L ጁ7%-6*LLF6CR;L@]'Ma2SD{O0\:G@$MRӋ2Mplʀ/@ 6fe-0lXj_B\l瑌\Ri P@,"* -?C(1%K_"f( msU @` d bCЅxF3nQ+em-pk Xe0:p^Ø̘5$xk UhR5D8* Gћco+EcerRIٱRT<ڐudA1vAO i%|[вHG7Hx zW&(Ҳ)p=ڷ;~Gf!h!*Ġ,Pc0Tf8K{y_T:oKBȅu%d~ 9R9oG]%x6m0}A<=[ʆ^SԄ!yl[;qb\iǃLG)~_?:5WE;ǬK%|4:#д^\LXsMQHgol'K>'5'V>P?Ԝ$ Di(h{5򸌊Q "?Q;%TatmYE8t"03{@Tww3TpKmrintWc ݨ[]Dw&'g0"e8EJL # hϸ=]4At;XE_8Iۖt?Sέj%\u\&*7?BkR.C|ަRqZUߩ-5: xؾKm*Xڢ{jbesI7AķG|4Wb[4 J; t_R3א]NQYNnmfswKH.Qm]$j" q3 2T)B5ɤ 5d$B4Q*&@/~%u#g{؆o6(2{.>:( P%7~_IuιCQaP;A`yQL ̵̨$vSԉ-^LSQf]>кDt"X*3<[ts 2ͫӊP8p#>Ǯ\aW%GPgx$m[zzsn:5㜠EwV2`!'?[n_kQ+8?+ෆqXTqO5jC1X!jtMIPМмĻ8-?,B&l3^-'Ȃ}ʉcYOf}}&spr }A@o O&8uO)X6XVӫ5_ iR3u]DǻZDZS>DUJ4lSr$x11Y.uN=L$© eՄ8>vt~Oklcf\As)TzDEQ}W+mBŠ*X#sJAsBs]wlMR::޹D4+/eN4\F(q!oQJ$WRC$$)}W!u/bDlHeظ0II_eY*Օo6uH?}nzSu|W5\A~mwޤ=6o"667n` *Y]S_me^ޟnvj[-4n63ZՅίnNvjij_TKU~NSm6ܙVZ\ݩx7`yʼ^YǷ\ԅC$$%B7(Adi+l^@s a0k._ܶ5߽AeR'b[s.{VtLD{&32l@]x{C"[Δtэ׫XdT{lUPXmT5l]XtCܘT҃K$/O,W ;tW+9KfӪ$::WW?P֗KK6#PK!kdpkg-realpath.1.gznu[Wms_4!(;Vb-؞H,H>(Ku{=$HP˳~СTxQCDoTFшzn9ٵnq.K:b YѺ,Q A|8nB  mC? u-C-+\s3kCBĨ%)b(2:d[oFRRM[8N?;YSv7Ǒ0.ɠ;R`LWJ%/g:G!#ԫ=?%+r*ˢ:7׷YgW[Arlj X6f,|a]Jˋo_=y fY&y!UM]euǬuR :ރg4}F-QX2&tF`: S;x*]).VsEx8#^|18*` ֶQ:gl9@saY.єiO^8,u;V Χ$]@JʁFh-ao'!535'oń0)㕼:zJ `# 攎<'ZM¹=%"sC'JPG'0U ,_d Ղ*gBM)fYCNZFV9{YMFbE3Qj.bW uG7jrr.oepIr/. % ne,/.Jxu~Z\ۗwG~ɯ)zTSz2d E2ZT?q+!eM ސe (^9Hґ_}H 3QonRy>YGJ4H70}R[3@Qâc^7Fѥ~z ut0/ \m$ˢޯi#Qw#Ax9cVOPѹwwccID=C!8s ݿuv7jC.]im?؆Hj 'q2QY} scG<ޑ4 G\Ĭ.dd}:<\B gO/೯g[>ڟV'ͦ> 6[3iksI;c xii>̎={nf0griɥk"#].L{ϱT]qd `nFyO6* G[qg:gxOĞQu$g|l:<ĥ˹&7h4GMh(,Vb4Ჵ,.47fpz܁: Q=G[- `UeHWC!xUaeq= 2ŅiB=nIO߂7pz9 iKf)08=$p6eT{@pFp,N԰7GEky^8gL wr>nr)vIs14.ώj ^jΰ}9Q\L"A?:y4EH?6n&8ܤ!l ^/>iX#**><o| йtQ$5'vO+7c-94j:ZU-uXu(K~:NC$x7=a#_hJ'|CE$*W[0'|ex3r'am$@%/!\RniA4ć`ά,Nϓ m-'nx$\28WFvH ԐPB>j,92fsvb4uB'.VP F~b|2.k2mNp>Fe/a pK2vN,9P(|o3o-T MoA2 Jdj((=. G9P[CJĠu)0ȈHB2,# `ʚФH ;Ld7ȥG%b>9uaZX_d \rs8nW㴡8|b\0YeiϞ$KsCPY/35>?2= <c\&Xϳs1}{ '5S\9?'/œ tluf GtC[Ņz:N'ua#pg*i=ei,Β ĭy2Al@f*72ȃ ݕuu Tzoe4 TFBud96AJY7Mv)6|0gz7=71'sxe}e$"&S;=ߪ3xnkM , 1xL gZk()`WPd80(52<޾Q:s:W$V~(PymerN"/qVγk\0Z8mf884v;;qFڝT57NS3cԎܶ#e/O\.yƽ4NM38XXp5+W!^׻DkY|>*g5xmľЃ&/>.Iz}6n(\7]| T]@.x%o lՍpW9*[M}U([O~RDS#\mg,z7?bqA ~}!j?u!UOɽU-pd */Eu]]޿ &)"#V&PK!L}4}4man.1.gznu[}iwWe5Hu:Wa;JrVGH$c7-< lC2C ^UIԩSe٤y}yTu}gh;"cNS[MMLtD{"1E5&2 -D2e&SN'RЏE2absq!LJx"y)̈y_ėtk ~ t<{uA{G_3D(`БPFQkrgVѺ`š+=Y6`DKfKVr9{\Cjm?\^k7c0@ 2  H{_ _Zϊ[~/-5KK{>z7-5T<H x1 yʌGm7)6X.ȾKy@3i8t`nb@)L &8Qְ)EcmpʏɖxaKM"{ ܵo&Պ,{yVLޥ$~..$?^^1fpf^vNjmZS}ѝՅ[͈>Zuh#Qp>%ZñP;uVdsJvrMB ֖V@7HYgҷW;ON|Pi<|]U9?V?"ŞiwqKB[MMw2k5Nf[›߄і? fKJU,F׭9<`YUZsU#72$%;O=.D5P^ڲ s' ۃ.PE ;пE.4cI\4S(E~;vfHPq[ٷWRaM]be{tZS*L @\ޱVWq8ٳu-{5iO.[k1;+fO-kp.ͬZ}<zZ/fzy?7F]`p+:WNž-~V Kѡʃ;W+L{nಇ쐕˗n.ʕawuWvN%Ň8$%qX".b")Gz=qGW.2r^O8G’mk Eqb MǛ4JFrfnak _W3F6*nn[ /z`ʕMXwy{Z^x3 :"gPcVܰ&~RD`BMF&*GӈXOȨ;zR?Tv &,hO c ./_ X}*p Ķh$U4К42]+.R +`{nio`]-?Z8~|Ymg2Nw^~=B_^l#ϬmXGLD{;? p>tqRZ_gtEmTZ5J$20aP?y=?` mB|dq'=!x# Khb-h#]Z$iX3Z49tWJKg?o8q1~ZΪW;SmlX/ [DSnMk枕o>E|qzw|>PܙsMjxzp%PEù3] >o8URg?51ȘE9wDh>_-4mWW?=5kjκ;v5>PbnȊ?` >YQk*H=V@ξMveÈg?[=Z*G|N761 XbaB w^F/D}ύfwEG_dA1Ml̩=bC坿O5S(n^%3|ⱡOAl3{s$ADR&aإ!ɥ4 S5xz2 @$-܄X^\ !|աK$xT W-f˛9 A`$x1 GU":4A|Lsfx BrITqMc8-imdQwS$~Kq:a tV9 - h`KBDYǥP~G@׷hȒ~_eaOvSpʬu4m ac2#@@gu:飳 YdmȻV\" D9XuGdwEq}I6t| >'[9GhY D@8%wIQlX2x"@ f oa qu) :+ M+IY Ȓ YZwj0. 92Y0y1X3>L3kv^^z=:#XGPzZfSfckx첼]ZB1<> ύ r?i"{؉&T'XQISXyyq XxXE^ }"ܺ={C:xDYXs㎡RM`aAB;ЙR6E["?#:LE:`<_uQLF@a?[e=>Hҥb~ٔHN#ǜK f2f1cCZ`PցuUV :!XgQs֬Q{UHF d0IFE%[푘(jR\EB8”_ 2eF @w2% \s;s"_©bW )ݥ(C`I[y?qԘ_-=@ydRGWRo\ T'P7+71_6{Ñ˸?E)Uc(= ]rFqe<`k2Q]A-WR} =KwؾPtt lg@!.+s&)ꆲak<r4ShGQ*`14aA֎}5 >[ \55Tf4-5<`'Uv_X"g:Ș=M'.ĺLMD/m]&`V$"ΤDo3ICC+)x/g6n*Vlк""KtdsɄq,wd?謆p \XD  3rP@fF![/QD-b4*qMmw/Fê|+3f*XF|CNdP63hA8dHڢ?R0$9VuWR&[+A̝hT èt +w˵%fNj cJEq"c8jhG4z@2*7՜Ar%KY,Xxf-ĺʝuM/MbBKˌbS: ̓tccǒ [W #L2IpOTfI/!8Q͗쟒 h(8PD}"ZUd!-m6gWob/Pq'7&rj9GUU9rІu*9A>*s' {M )箼,r%lzov'qsxDk~2/*@d$kYC$ XMEn`Sp6'C'T5taqVCqU ĕ^*TD;*Sφ-uʗni>W)B i`@]fPdȷ$Iw VL7,hg#.J 3)&ŹEޞ`#( w'jTqrg8AO"!:{E 7AzpW'sM"΄S;FR= (ۣ07tdсk]GDwEY ⸐'J饴83dCA28`mJ=aCugQwrTP-f&{8?1\2ǠfO42CN<']y]:{?`(Dŭm,jLE ҌJ2ctL X1q*9Z#OdžL$FAqKOԛAUcF˰lTyZ ?q&_\G![p%w h50yׯʜKH9Ø3x&19-ohT k*}.*i᭦[5ݢۦiӐ"\9ЦXۛ8Vrfv=W;U>T,MVnA,>Dq2NB'' gJV+9S0 O yuyU{/[0MO+=R+w&8ZKwfW$9<9UdE舔gt71<0.9K"_+T&yVZ=SrӎgY=*гЫ" 241|UGJq7ET9.DյSfC֢S8wM8nDLqZ\sGtO9e Xvsp?e0}ic{]QW-15kL'vxE6S֟X?KbLxK!vȤz M&`wE缀=_@ڽ]{'z~Ikf bfXq hHOQy=Xe(-Nz/ Ƒ\pcCL^"3Qz8&F{B@Xu ,bLMõ7蹾>ʾk> XX83nݍWA~:pfD[}x_]-tB0BQ G=uϊ~S~1~%_P r(y_TWE92ᔺE,oʵW6r,_}(Hޛ4otz7Oc=v^ CYYUr. 0)D!f`W%J+*煟;'V2 X1<ކ46 Ofr_ٔn*.NA>rNnz|*G9J9"c*m|kk q'f Ri9cХ{TֲrLhhf-Nec1i-< aY/cWW>zcd1 Q;p]m@fr;Q9LSޜg(|ўEidpf$:qq)ѕDڌ;P TSB\ve eCYؓЧG&Ͱc)M!w}Sr*7zv8Vtd06\'67DC)f$I~&RrlL0qf&ǐ{:fBye=駗dq>RS}{SeXSN@*:R_~Iv_:? $M1BZe/N*qӿf`wŭmv r qN_h yk ~] -sftqS|Β1#v7:j]  9نë@ԎػsH-0Ty[V&WTU7'ITAxObe;u QN,T@ޖ͖JGQ~v)Kx#f3 ÐGG=gB hahɰ8y1 hr5\ASﱕ; O^bCdkvqOdɨU5aDVBDD7 іD{)o6y ?rrܥVW3e2=}k4.?-~NlT^ç <|hKhW*sV6>nb ]G{>Ppǵd k@ ,~U21VJo+ ! <\>XWV<ӶKڼIXT`h +mcs2+ *qu}f>~lJVjTȯɳ JC:2{uwۣvj'E$20q +}(QnHǡu(Q]N3x ԕiC6^TSxIK])4؇9T53{A\Hpe+Q@w}{#'[aRaZ5!GĽ!gwZ`P %?G"6׺`cO3X=5St+b'!BzI.+Hq8݃.te,Qu\`@ Yɛ>Tx.('IɁ asf@.+R|ҘI#dPSl<.o3{L;:60=K`i+ "WߜbLa{qay ©N>ۣi :L/>jפXiEuՙw64{⾻j` @xaF#? Sve+cBE<uLPt3r,0p=[,C3?x 'FI4sfËhy~Q=' y%A %]rȏV+Lp5M R NM/Oϝ[uq5|zճj^É;q)?j BxqkvO5xw-5-RM<ܜvhs`)+P]F-"\my䅕_ j`;k>5R!<ѫ%4|*C.a00sY Œ;t'\/YR"?JN,T!$̎Zh"\z6t e ^ڍ޴qŇey/,¬Cac(ƳCJ R<"Yqq/N㨩I`'1O\OR tU ɿMJ;L9MR !2Bi5T^UG= kxNѣpnx/Sjxͷ.4-!Jy{aQfͼcwlan**()d15%lg6ژ5iR!~Y$u V:,cPkK.r7d,,moa7躵JsrU{TmJ fO8L |N@SUFo<4^nvJ9+Jf_3oamN^ {O~Dd޹B=pnԚ)o'O ).57 w v00۾@Mx m\xh¾%wn{d Fk; =?X`޾ KV/VPZlܑw@\$Bb 2j!9SsN¥9Dp1ӜX8u;Ru;]k|LN8Ŵ{ɛey+DSְ7 6SfG4-5 rz&T2& ޢJ`_PHo;a#\JTի(y~ ?s.ֽ{oq/GQ9\Oy 7GoPm7-k7v9ckPj;Yx!:zgvO_^CqE/ߴ6o |S;h2 ހ/>]iN]So!c>7~|b08|ƗQĭ9utcC ¤ h"8&hʽ_\0;>{UA:ՉYK T( /JXAZ>|Xgoݲo\_[c 'Ћ h9 SozIT]&BneQ ai—S̤V9wS lG[?خ6\)q[L !WD@qr~"M١߻ojܹ*خj .]ylj2V #t!bYk/e}2 (X]e[Wejǯ#T_JBהRPDt9l VlfGԭm-ޓu/skߠq` )},lZOf%73IjLgU)L1}OCU}VۓqUドke9QNFTREx~``#Z5'/IX`GD,&E׍<6򪰁~Y W0; ofX^/7b8# @k懶ڢᎠ~^Lw1xk:Р>?]KK@+$)Ȓ>H' "V%M75&f%izRɋ=x"|T3g8Ģ4K|ov2vy̔ ТeMFW\_X/|dqԺ)_$i@:PggQYΑq: g $LT4?cpУ}ꨇݗ&̲UJ/L5ku咰F7J(||?",L<Øbn$LوDݲt挠*GjOtd9mi7G~.H-'WU{B&2MxROaqg-w}5_^ҿyTc':>8N.e̱b+@#݅*)`i26dKвmx1 =ˆog/tUqq@CBknqO lHKlD7wEgܨxG͵h :I̍ c| PK! ]n apropos.1.gznu[YySG_׵R Ʃr%qPZ40%%$`cl.H q|dzfW¾=$Ea~ݞ3]_VV䰬:ܞ3?i)!WitS_H"}"& .m OR#I'*$+D_Zo|KZŐAL@CHa+%G;◂"i}F+"+*"l'}=e $9C94_ܥ/4n&anOn˿/Eѭ+x-xra>fuJ*wo0X"8,,*I" er!u_#W:ovtvtfr\Cλn&zrS4/=Fcw5B'ǍmRH%S~N 甞NG쐾>W93/<>!xg{~~Mً@u3W6kP,o Fa-R3nm 9m%%=\bgGŽco3;b)ptlZ˽+TNrQ=kt9m!ci2>QZ>ӷ@fo)s#N'S1鴱vJE=1ظjiߏZϤhlnuw|hA[Κ}pd:.؈:y#3tkl0^i# )VC^1$Ƴ( kW s̍>739.xj-π]aޘI1y4B/^̶>{St1A{i}>Eӳ4VۛЇ6QQ&i>yv8J|2$^E9BGJ ^rh`fIvNPVhNOj m^JX̀|!_==A9p@ꩤQH/4s@ }v<# VXނ<0z8+`j׶v7'ݼnE 6p^ #AO iH%0(E5TJ","L@ W#Ay@ P]@pj< 7$ [DHpMܝxGe"8<^m@9'3pzEjDP"`w P`!u߼8Ő5149Ka6Bxb 0xF?C.F i8vI!e] /\.f]KXQd.B>7| .kG) mu=\(KGV&FC1q2sa[| \3sT؎VէƵ%j͈$evZњEWKD !/ q&EsYrᴮ8UY,8SUXV:˹Qx@'[0/K5pE0J٘0ȸC8Oro0[A8zk \ϰu*M,}:Lő4 dt{rs7K`ibtTsf$:]h82Rv{=Z1 SgWnO1ȱźQʍ+ЈJ˵S̮U턦| 3shdyΨqBz͉4g)X`, lGmoNS L.Ş˗BP\^3'=kD-s3JG P*F<8"v=k8q]53B􋇳&SHBCծ+W|s!vF+d -=MߏCC8dwJ] 0Mɟj)F 6.RVxWo7R"J3 1tc oe}s2t90#pVzc ( VJ9| y^/te{_ x]a3 ×3}gU]}Qfy0$ o)F՗iW@iJ& q}W5@VL&V̐l$EXraԉI:'7JS' p Z^/㼃|6qx6dX_J~T#wƁIہɎ ERֹ4N~@hAV3!3̋O_ړ,V Gv>T[׿>\؈/4) cb tLN Tk};B-m߶+ |#H y$>I\ffa[wkjps[V9umhyjKx쩽f' t* YEwX^uW,s: 1 8`n)xNuԯ*MjMPcp*vD}=>I C~xeߟa ؟[Puw+x{몃Z}j/K34q:[vΎ@iu`͍Tz@ͮSz;Ru,ј>7B"GI^8aO쑄[V'lal' S{9_kޔPK!8vc gpasswd.1.gznu[VKoF>b` ]hڴAVlszX+icCr}ȡ?"!HE/uf(eE?H7߼7>c]bdg!X̠#^k_ h~z4r* X 2eQ#NB. /f!Q'$R %1Wecr;mX6m-3LTF2H\[%-:Sc $xV؎.2R%y\KbA3b$fS6jNYVf5u#\|v4g z4\KSFUo3RN0!Bc0>ECZ}BP(jPjd_}cH1%'r¡0{v՞ħ k}1Җh_ Jm@E0DEFPϘ%?Š[k&")6UѩNCvlUt-5EȒ4XO/}*;u5/5.+V=N}*X,sʢ(WM^ X/%8 WL>a4F1P/2RBn!L]/2.Bhi³oF2*c'/<9 #4">[R:օL?QxԹ򻃃b>4y=_.'ɛ8 .V0)"#8媠ath_Q;i_t{I+xJKHOтXJx9_},%qtO(v(~^v=a:i%v[k7n>w{_/i/ => V4%jFTY|}sGVjy@N\ȨBXvut-9'_$JAM˺1?M"Nfr]惶XsWnqVzKympNzA%HLؼy]T6 .BƒC!S>RmbT9EeрCn xk%WӒ0,nwHr{VNPThA«S#=L^GKw6ޙla{em,M& {j#an CN=h_u`w|3kHb3^}xKPvlwh~CAOX azBd PK! newgrp.1.gznu[]S[OA}_e_ K[Mh* Qa#{ɲ^Vb5M E".Âaw';s}A<T!.H8 X 4%M) `kA-A@#I! 1YĂ8Ċ1aR 1c Q {v=wOO'Dfa Z/BE$shtC iQmOpuP*EKt9Y'鸪}0+g#SesgV2 Vz<C+L/sP$Əp@+/v._|?Eg:L۩D;* {B;3Iә?;Y1l M(3gz-DBXΘ\&gq!)Jf/S cR M9XKKPRy>@iw>~V7a`zԻO';?5<@Ђ~x݃v=F|gԼfIx3«7p3h݂TEMBeLF@O&lcxM`g\0MywGΝՠsMc(BbXXt%˶I=B8&StͥXtcЅ<k͕*e(ƌ -"@ e8T5!Q#Dydy elSfV#}L!gB@c.XH=ΙCzus3"="NƺTL2d q:`0*HD f- )se#sr\7ei$в 4\ʢ#Nz=y/v= B;ed̓BW:dvhöPԧ”4tܧ ˃uGJh>X[޽jI@&7{p[h!В8>*>>6 -3TfsyZ'R2̙1hz"ֽ+ھz[/?|?  ŧ Ok9nmj&qRRN_<7n?kQJ\bZP}R PK!  chage.1.gznu[Xmo\IJ#RۉP-&R`قHrAmuw{#- [ -Ph /Ni)3w;J~"4yy晙;,n7}B| ܀ y@kv LYr,f[<)Ӵk]܅+ ӓs`b@jAuIw;[o\/p3JWO7WV++[,X忦}ZOfT<9nfZ ^kX<Ц58+=%hG߀ ? u ˭3Ƃm?F)X>j JFj6P:ccdCAҒpt왳VwBiƙYg_t.S˫rv{/tȮ6Z<+8@*>B L#x'Ii!F+jk?ɔFfG@=%!來CFy:>~6;]8u\0}֗ ^4aw?8o/~68wNdwx7\g{pwڿyCTz(bG˳< 3S$NBD傇DD5d`zF󎬾 pl,e{svi F< hPK!\fP. When there is more than one pattern (specified by the use of \fB-e\fP and/or \fB-f\fP), each pattern is applied to each line in the order in which they are defined, except that all the \fB-e\fP patterns are tried before the \fB-f\fP patterns. .P By default, as soon as one pattern matches a line, no further patterns are considered. However, if \fB--colour\fP (or \fB--color\fP) is used to colour the matching substrings, or if \fB--only-matching\fP, \fB--file-offsets\fP, or \fB--line-offsets\fP is used to output only the part of the line that matched (either shown literally, or as an offset), scanning resumes immediately following the match, so that further matches on the same line can be found. If there are multiple patterns, they are all tried on the remainder of the line, but patterns that follow the one that matched are not tried on the earlier part of the line. .P This behaviour means that the order in which multiple patterns are specified can affect the output when one of the above options is used. This is no longer the same behaviour as GNU grep, which now manages to display earlier matches for later patterns (as long as there is no overlap). .P Patterns that can match an empty string are accepted, but empty string matches are never recognized. An example is the pattern "(super)?(man)?", in which all components are optional. This pattern finds all occurrences of both "super" and "man"; the output differs from matching with "super|man" when only the matching substrings are being shown. .P If the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variable is set, \fBpcregrep\fP uses the value to set a locale when calling the PCRE library. The \fB--locale\fP option can be used to override this. . . .SH "SUPPORT FOR COMPRESSED FILES" .rs .sp It is possible to compile \fBpcregrep\fP so that it uses \fBlibz\fP or \fBlibbz2\fP to read files whose names end in \fB.gz\fP or \fB.bz2\fP, respectively. You can find out whether your binary has support for one or both of these file types by running it with the \fB--help\fP option. If the appropriate support is not present, files are treated as plain text. The standard input is always so treated. . . .SH "BINARY FILES" .rs .sp By default, a file that contains a binary zero byte within the first 1024 bytes is identified as a binary file, and is processed specially. (GNU grep also identifies binary files in this manner.) See the \fB--binary-files\fP option for a means of changing the way binary files are handled. . . .SH OPTIONS .rs .sp The order in which some of the options appear can affect the output. For example, both the \fB-h\fP and \fB-l\fP options affect the printing of file names. Whichever comes later in the command line will be the one that takes effect. Similarly, except where noted below, if an option is given twice, the later setting is used. Numerical values for options may be followed by K or M, to signify multiplication by 1024 or 1024*1024 respectively. .TP 10 \fB--\fP This terminates the list of options. It is useful if the next item on the command line starts with a hyphen but is not an option. This allows for the processing of patterns and filenames that start with hyphens. .TP \fB-A\fP \fInumber\fP, \fB--after-context=\fP\fInumber\fP Output \fInumber\fP lines of context after each matching line. If filenames and/or line numbers are being output, a hyphen separator is used instead of a colon for the context lines. A line containing "--" is output between each group of lines, unless they are in fact contiguous in the input file. The value of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP guarantees to have up to 8K of following text available for context output. .TP \fB-a\fP, \fB--text\fP Treat binary files as text. This is equivalent to \fB--binary-files\fP=\fItext\fP. .TP \fB-B\fP \fInumber\fP, \fB--before-context=\fP\fInumber\fP Output \fInumber\fP lines of context before each matching line. If filenames and/or line numbers are being output, a hyphen separator is used instead of a colon for the context lines. A line containing "--" is output between each group of lines, unless they are in fact contiguous in the input file. The value of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP guarantees to have up to 8K of preceding text available for context output. .TP \fB--binary-files=\fP\fIword\fP Specify how binary files are to be processed. If the word is "binary" (the default), pattern matching is performed on binary files, but the only output is "Binary file matches" when a match succeeds. If the word is "text", which is equivalent to the \fB-a\fP or \fB--text\fP option, binary files are processed in the same way as any other file. In this case, when a match succeeds, the output may be binary garbage, which can have nasty effects if sent to a terminal. If the word is "without-match", which is equivalent to the \fB-I\fP option, binary files are not processed at all; they are assumed not to be of interest. .TP \fB--buffer-size=\fP\fInumber\fP Set the parameter that controls how much memory is used for buffering files that are being scanned. .TP \fB-C\fP \fInumber\fP, \fB--context=\fP\fInumber\fP Output \fInumber\fP lines of context both before and after each matching line. This is equivalent to setting both \fB-A\fP and \fB-B\fP to the same value. .TP \fB-c\fP, \fB--count\fP Do not output individual lines from the files that are being scanned; instead output the number of lines that would otherwise have been shown. If no lines are selected, the number zero is output. If several files are are being scanned, a count is output for each of them. However, if the \fB--files-with-matches\fP option is also used, only those files whose counts are greater than zero are listed. When \fB-c\fP is used, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are ignored. .TP \fB--colour\fP, \fB--color\fP If this option is given without any data, it is equivalent to "--colour=auto". If data is required, it must be given in the same shell item, separated by an equals sign. .TP \fB--colour=\fP\fIvalue\fP, \fB--color=\fP\fIvalue\fP This option specifies under what circumstances the parts of a line that matched a pattern should be coloured in the output. By default, the output is not coloured. The value (which is optional, see above) may be "never", "always", or "auto". In the latter case, colouring happens only if the standard output is connected to a terminal. More resources are used when colouring is enabled, because \fBpcregrep\fP has to search for all possible matches in a line, not just one, in order to colour them all. .sp The colour that is used can be specified by setting the environment variable PCREGREP_COLOUR or PCREGREP_COLOR. The value of this variable should be a string of two numbers, separated by a semicolon. They are copied directly into the control string for setting colour on a terminal, so it is your responsibility to ensure that they make sense. If neither of the environment variables is set, the default is "1;31", which gives red. .TP \fB-D\fP \fIaction\fP, \fB--devices=\fP\fIaction\fP If an input path is not a regular file or a directory, "action" specifies how it is to be processed. Valid values are "read" (the default) or "skip" (silently skip the path). .TP \fB-d\fP \fIaction\fP, \fB--directories=\fP\fIaction\fP If an input path is a directory, "action" specifies how it is to be processed. Valid values are "read" (the default in non-Windows environments, for compatibility with GNU grep), "recurse" (equivalent to the \fB-r\fP option), or "skip" (silently skip the path, the default in Windows environments). In the "read" case, directories are read as if they were ordinary files. In some operating systems the effect of reading a directory like this is an immediate end-of-file; in others it may provoke an error. .TP \fB-e\fP \fIpattern\fP, \fB--regex=\fP\fIpattern\fP, \fB--regexp=\fP\fIpattern\fP Specify a pattern to be matched. This option can be used multiple times in order to specify several patterns. It can also be used as a way of specifying a single pattern that starts with a hyphen. When \fB-e\fP is used, no argument pattern is taken from the command line; all arguments are treated as file names. There is no limit to the number of patterns. They are applied to each line in the order in which they are defined until one matches. .sp If \fB-f\fP is used with \fB-e\fP, the command line patterns are matched first, followed by the patterns from the file(s), independent of the order in which these options are specified. Note that multiple use of \fB-e\fP is not the same as a single pattern with alternatives. For example, X|Y finds the first character in a line that is X or Y, whereas if the two patterns are given separately, with X first, \fBpcregrep\fP finds X if it is present, even if it follows Y in the line. It finds Y only if there is no X in the line. This matters only if you are using \fB-o\fP or \fB--colo(u)r\fP to show the part(s) of the line that matched. .TP \fB--exclude\fP=\fIpattern\fP Files (but not directories) whose names match the pattern are skipped without being processed. This applies to all files, whether listed on the command line, obtained from \fB--file-list\fP, or by scanning a directory. The pattern is a PCRE regular expression, and is matched against the final component of the file name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not apply to this pattern. The option may be given any number of times in order to specify multiple patterns. If a file name matches both an \fB--include\fP and an \fB--exclude\fP pattern, it is excluded. There is no short form for this option. .TP \fB--exclude-from=\fP\fIfilename\fP Treat each non-empty line of the file as the data for an \fB--exclude\fP option. What constitutes a newline when reading the file is the operating system's default. The \fB--newline\fP option has no effect on this option. This option may be given more than once in order to specify a number of files to read. .TP \fB--exclude-dir\fP=\fIpattern\fP Directories whose names match the pattern are skipped without being processed, whatever the setting of the \fB--recursive\fP option. This applies to all directories, whether listed on the command line, obtained from \fB--file-list\fP, or by scanning a parent directory. The pattern is a PCRE regular expression, and is matched against the final component of the directory name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not apply to this pattern. The option may be given any number of times in order to specify more than one pattern. If a directory matches both \fB--include-dir\fP and \fB--exclude-dir\fP, it is excluded. There is no short form for this option. .TP \fB-F\fP, \fB--fixed-strings\fP Interpret each data-matching pattern as a list of fixed strings, separated by newlines, instead of as a regular expression. What constitutes a newline for this purpose is controlled by the \fB--newline\fP option. The \fB-w\fP (match as a word) and \fB-x\fP (match whole line) options can be used with \fB-F\fP. They apply to each of the fixed strings. A line is selected if any of the fixed strings are found in it (subject to \fB-w\fP or \fB-x\fP, if present). This option applies only to the patterns that are matched against the contents of files; it does not apply to patterns specified by any of the \fB--include\fP or \fB--exclude\fP options. .TP \fB-f\fP \fIfilename\fP, \fB--file=\fP\fIfilename\fP Read patterns from the file, one per line, and match them against each line of input. What constitutes a newline when reading the file is the operating system's default. The \fB--newline\fP option has no effect on this option. Trailing white space is removed from each line, and blank lines are ignored. An empty file contains no patterns and therefore matches nothing. See also the comments about multiple patterns versus a single pattern with alternatives in the description of \fB-e\fP above. .sp If this option is given more than once, all the specified files are read. A data line is output if any of the patterns match it. A filename can be given as "-" to refer to the standard input. When \fB-f\fP is used, patterns specified on the command line using \fB-e\fP may also be present; they are tested before the file's patterns. However, no other pattern is taken from the command line; all arguments are treated as the names of paths to be searched. .TP \fB--file-list\fP=\fIfilename\fP Read a list of files and/or directories that are to be scanned from the given file, one per line. Trailing white space is removed from each line, and blank lines are ignored. These paths are processed before any that are listed on the command line. The filename can be given as "-" to refer to the standard input. If \fB--file\fP and \fB--file-list\fP are both specified as "-", patterns are read first. This is useful only when the standard input is a terminal, from which further lines (the list of files) can be read after an end-of-file indication. If this option is given more than once, all the specified files are read. .TP \fB--file-offsets\fP Instead of showing lines or parts of lines that match, show each match as an offset from the start of the file and a length, separated by a comma. In this mode, no context is shown. That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are ignored. If there is more than one match in a line, each of them is shown separately. This option is mutually exclusive with \fB--line-offsets\fP and \fB--only-matching\fP. .TP \fB-H\fP, \fB--with-filename\fP Force the inclusion of the filename at the start of output lines when searching a single file. By default, the filename is not shown in this case. For matching lines, the filename is followed by a colon; for context lines, a hyphen separator is used. If a line number is also being output, it follows the file name. .TP \fB-h\fP, \fB--no-filename\fP Suppress the output filenames when searching multiple files. By default, filenames are shown when multiple files are searched. For matching lines, the filename is followed by a colon; for context lines, a hyphen separator is used. If a line number is also being output, it follows the file name. .TP \fB--help\fP Output a help message, giving brief details of the command options and file type support, and then exit. Anything else on the command line is ignored. .TP \fB-I\fP Treat binary files as never matching. This is equivalent to \fB--binary-files\fP=\fIwithout-match\fP. .TP \fB-i\fP, \fB--ignore-case\fP Ignore upper/lower case distinctions during comparisons. .TP \fB--include\fP=\fIpattern\fP If any \fB--include\fP patterns are specified, the only files that are processed are those that match one of the patterns (and do not match an \fB--exclude\fP pattern). This option does not affect directories, but it applies to all files, whether listed on the command line, obtained from \fB--file-list\fP, or by scanning a directory. The pattern is a PCRE regular expression, and is matched against the final component of the file name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not apply to this pattern. The option may be given any number of times. If a file name matches both an \fB--include\fP and an \fB--exclude\fP pattern, it is excluded. There is no short form for this option. .TP \fB--include-from=\fP\fIfilename\fP Treat each non-empty line of the file as the data for an \fB--include\fP option. What constitutes a newline for this purpose is the operating system's default. The \fB--newline\fP option has no effect on this option. This option may be given any number of times; all the files are read. .TP \fB--include-dir\fP=\fIpattern\fP If any \fB--include-dir\fP patterns are specified, the only directories that are processed are those that match one of the patterns (and do not match an \fB--exclude-dir\fP pattern). This applies to all directories, whether listed on the command line, obtained from \fB--file-list\fP, or by scanning a parent directory. The pattern is a PCRE regular expression, and is matched against the final component of the directory name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not apply to this pattern. The option may be given any number of times. If a directory matches both \fB--include-dir\fP and \fB--exclude-dir\fP, it is excluded. There is no short form for this option. .TP \fB-L\fP, \fB--files-without-match\fP Instead of outputting lines from the files, just output the names of the files that do not contain any lines that would have been output. Each file name is output once, on a separate line. .TP \fB-l\fP, \fB--files-with-matches\fP Instead of outputting lines from the files, just output the names of the files containing lines that would have been output. Each file name is output once, on a separate line. Searching normally stops as soon as a matching line is found in a file. However, if the \fB-c\fP (count) option is also used, matching continues in order to obtain the correct count, and those files that have at least one match are listed along with their counts. Using this option with \fB-c\fP is a way of suppressing the listing of files with no matches. .TP \fB--label\fP=\fIname\fP This option supplies a name to be used for the standard input when file names are being output. If not supplied, "(standard input)" is used. There is no short form for this option. .TP \fB--line-buffered\fP When this option is given, input is read and processed line by line, and the output is flushed after each write. By default, input is read in large chunks, unless \fBpcregrep\fP can determine that it is reading from a terminal (which is currently possible only in Unix-like environments). Output to terminal is normally automatically flushed by the operating system. This option can be useful when the input or output is attached to a pipe and you do not want \fBpcregrep\fP to buffer up large amounts of data. However, its use will affect performance, and the \fB-M\fP (multiline) option ceases to work. .TP \fB--line-offsets\fP Instead of showing lines or parts of lines that match, show each match as a line number, the offset from the start of the line, and a length. The line number is terminated by a colon (as usual; see the \fB-n\fP option), and the offset and length are separated by a comma. In this mode, no context is shown. That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are ignored. If there is more than one match in a line, each of them is shown separately. This option is mutually exclusive with \fB--file-offsets\fP and \fB--only-matching\fP. .TP \fB--locale\fP=\fIlocale-name\fP This option specifies a locale to be used for pattern matching. It overrides the value in the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variables. If no locale is specified, the PCRE library's default (usually the "C" locale) is used. There is no short form for this option. .TP \fB--match-limit\fP=\fInumber\fP Processing some regular expression patterns can require a very large amount of memory, leading in some cases to a program crash if not enough is available. Other patterns may take a very long time to search for all possible matching strings. The \fBpcre_exec()\fP function that is called by \fBpcregrep\fP to do the matching has two parameters that can limit the resources that it uses. .sp The \fB--match-limit\fP option provides a means of limiting resource usage when processing patterns that are not going to match, but which have a very large number of possibilities in their search trees. The classic example is a pattern that uses nested unlimited repeats. Internally, PCRE uses a function called \fBmatch()\fP which it calls repeatedly (sometimes recursively). The limit set by \fB--match-limit\fP is imposed on the number of times this function is called during a match, which has the effect of limiting the amount of backtracking that can take place. .sp The \fB--recursion-limit\fP option is similar to \fB--match-limit\fP, but instead of limiting the total number of times that \fBmatch()\fP is called, it limits the depth of recursive calls, which in turn limits the amount of memory that can be used. The recursion depth is a smaller number than the total number of calls, because not all calls to \fBmatch()\fP are recursive. This limit is of use only if it is set smaller than \fB--match-limit\fP. .sp There are no short forms for these options. The default settings are specified when the PCRE library is compiled, with the default default being 10 million. .TP \fB-M\fP, \fB--multiline\fP Allow patterns to match more than one line. When this option is given, patterns may usefully contain literal newline characters and internal occurrences of ^ and $ characters. The output for a successful match may consist of more than one line, the last of which is the one in which the match ended. If the matched string ends with a newline sequence the output ends at the end of that line. .sp When this option is set, the PCRE library is called in "multiline" mode. There is a limit to the number of lines that can be matched, imposed by the way that \fBpcregrep\fP buffers the input file as it scans it. However, \fBpcregrep\fP ensures that at least 8K characters or the rest of the document (whichever is the shorter) are available for forward matching, and similarly the previous 8K characters (or all the previous characters, if fewer than 8K) are guaranteed to be available for lookbehind assertions. This option does not work when input is read line by line (see \fP--line-buffered\fP.) .TP \fB-N\fP \fInewline-type\fP, \fB--newline\fP=\fInewline-type\fP The PCRE library supports five different conventions for indicating the ends of lines. They are the single-character sequences CR (carriage return) and LF (linefeed), the two-character sequence CRLF, an "anycrlf" convention, which recognizes any of the preceding three types, and an "any" convention, in which any Unicode line ending sequence is assumed to end a line. The Unicode sequences are the three just mentioned, plus VT (vertical tab, U+000B), FF (form feed, U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and PS (paragraph separator, U+2029). .sp When the PCRE library is built, a default line-ending sequence is specified. This is normally the standard sequence for the operating system. Unless otherwise specified by this option, \fBpcregrep\fP uses the library's default. The possible values for this option are CR, LF, CRLF, ANYCRLF, or ANY. This makes it possible to use \fBpcregrep\fP to scan files that have come from other environments without having to modify their line endings. If the data that is being scanned does not agree with the convention set by this option, \fBpcregrep\fP may behave in strange ways. Note that this option does not apply to files specified by the \fB-f\fP, \fB--exclude-from\fP, or \fB--include-from\fP options, which are expected to use the operating system's standard newline sequence. .TP \fB-n\fP, \fB--line-number\fP Precede each output line by its line number in the file, followed by a colon for matching lines or a hyphen for context lines. If the filename is also being output, it precedes the line number. This option is forced if \fB--line-offsets\fP is used. .TP \fB--no-jit\fP If the PCRE library is built with support for just-in-time compiling (which speeds up matching), \fBpcregrep\fP automatically makes use of this, unless it was explicitly disabled at build time. This option can be used to disable the use of JIT at run time. It is provided for testing and working round problems. It should never be needed in normal use. .TP \fB-o\fP, \fB--only-matching\fP Show only the part of the line that matched a pattern instead of the whole line. In this mode, no context is shown. That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are ignored. If there is more than one match in a line, each of them is shown separately. If \fB-o\fP is combined with \fB-v\fP (invert the sense of the match to find non-matching lines), no output is generated, but the return code is set appropriately. If the matched portion of the line is empty, nothing is output unless the file name or line number are being printed, in which case they are shown on an otherwise empty line. This option is mutually exclusive with \fB--file-offsets\fP and \fB--line-offsets\fP. .TP \fB-o\fP\fInumber\fP, \fB--only-matching\fP=\fInumber\fP Show only the part of the line that matched the capturing parentheses of the given number. Up to 32 capturing parentheses are supported, and -o0 is equivalent to \fB-o\fP without a number. Because these options can be given without an argument (see above), if an argument is present, it must be given in the same shell item, for example, -o3 or --only-matching=2. The comments given for the non-argument case above also apply to this case. If the specified capturing parentheses do not exist in the pattern, or were not set in the match, nothing is output unless the file name or line number are being printed. .sp If this option is given multiple times, multiple substrings are output, in the order the options are given. For example, -o3 -o1 -o3 causes the substrings matched by capturing parentheses 3 and 1 and then 3 again to be output. By default, there is no separator (but see the next option). .TP \fB--om-separator\fP=\fItext\fP Specify a separating string for multiple occurrences of \fB-o\fP. The default is an empty string. Separating strings are never coloured. .TP \fB-q\fP, \fB--quiet\fP Work quietly, that is, display nothing except error messages. The exit status indicates whether or not any matches were found. .TP \fB-r\fP, \fB--recursive\fP If any given path is a directory, recursively scan the files it contains, taking note of any \fB--include\fP and \fB--exclude\fP settings. By default, a directory is read as a normal file; in some operating systems this gives an immediate end-of-file. This option is a shorthand for setting the \fB-d\fP option to "recurse". .TP \fB--recursion-limit\fP=\fInumber\fP See \fB--match-limit\fP above. .TP \fB-s\fP, \fB--no-messages\fP Suppress error messages about non-existent or unreadable files. Such files are quietly skipped. However, the return code is still 2, even if matches were found in other files. .TP \fB-u\fP, \fB--utf-8\fP Operate in UTF-8 mode. This option is available only if PCRE has been compiled with UTF-8 support. All patterns (including those for any \fB--exclude\fP and \fB--include\fP options) and all subject lines that are scanned must be valid strings of UTF-8 characters. .TP \fB-V\fP, \fB--version\fP Write the version numbers of \fBpcregrep\fP and the PCRE library to the standard output and then exit. Anything else on the command line is ignored. .TP \fB-v\fP, \fB--invert-match\fP Invert the sense of the match, so that lines which do \fInot\fP match any of the patterns are the ones that are found. .TP \fB-w\fP, \fB--word-regex\fP, \fB--word-regexp\fP Force the patterns to match only whole words. This is equivalent to having \eb at the start and end of the pattern. This option applies only to the patterns that are matched against the contents of files; it does not apply to patterns specified by any of the \fB--include\fP or \fB--exclude\fP options. .TP \fB-x\fP, \fB--line-regex\fP, \fB--line-regexp\fP Force the patterns to be anchored (each must start matching at the beginning of a line) and in addition, require them to match entire lines. This is equivalent to having ^ and $ characters at the start and end of each alternative branch in every pattern. This option applies only to the patterns that are matched against the contents of files; it does not apply to patterns specified by any of the \fB--include\fP or \fB--exclude\fP options. . . .SH "ENVIRONMENT VARIABLES" .rs .sp The environment variables \fBLC_ALL\fP and \fBLC_CTYPE\fP are examined, in that order, for a locale. The first one that is set is used. This can be overridden by the \fB--locale\fP option. If no locale is set, the PCRE library's default (usually the "C" locale) is used. . . .SH "NEWLINES" .rs .sp The \fB-N\fP (\fB--newline\fP) option allows \fBpcregrep\fP to scan files with different newline conventions from the default. Any parts of the input files that are written to the standard output are copied identically, with whatever newline sequences they have in the input. However, the setting of this option does not affect the interpretation of files specified by the \fB-f\fP, \fB--exclude-from\fP, or \fB--include-from\fP options, which are assumed to use the operating system's standard newline sequence, nor does it affect the way in which \fBpcregrep\fP writes informational messages to the standard error and output streams. For these it uses the string "\en" to indicate newlines, relying on the C I/O library to convert this to an appropriate sequence. . . .SH "OPTIONS COMPATIBILITY" .rs .sp Many of the short and long forms of \fBpcregrep\fP's options are the same as in the GNU \fBgrep\fP program. Any long option of the form \fB--xxx-regexp\fP (GNU terminology) is also available as \fB--xxx-regex\fP (PCRE terminology). However, the \fB--file-list\fP, \fB--file-offsets\fP, \fB--include-dir\fP, \fB--line-offsets\fP, \fB--locale\fP, \fB--match-limit\fP, \fB-M\fP, \fB--multiline\fP, \fB-N\fP, \fB--newline\fP, \fB--om-separator\fP, \fB--recursion-limit\fP, \fB-u\fP, and \fB--utf-8\fP options are specific to \fBpcregrep\fP, as is the use of the \fB--only-matching\fP option with a capturing parentheses number. .P Although most of the common options work the same way, a few are different in \fBpcregrep\fP. For example, the \fB--include\fP option's argument is a glob for GNU \fBgrep\fP, but a regular expression for \fBpcregrep\fP. If both the \fB-c\fP and \fB-l\fP options are given, GNU grep lists only file names, without counts, but \fBpcregrep\fP gives the counts. . . .SH "OPTIONS WITH DATA" .rs .sp There are four different ways in which an option with data can be specified. If a short form option is used, the data may follow immediately, or (with one exception) in the next command line item. For example: .sp -f/some/file -f /some/file .sp The exception is the \fB-o\fP option, which may appear with or without data. Because of this, if data is present, it must follow immediately in the same item, for example -o3. .P If a long form option is used, the data may appear in the same command line item, separated by an equals character, or (with two exceptions) it may appear in the next command line item. For example: .sp --file=/some/file --file /some/file .sp Note, however, that if you want to supply a file name beginning with ~ as data in a shell command, and have the shell expand ~ to a home directory, you must separate the file name from the option, because the shell does not treat ~ specially unless it is at the start of an item. .P The exceptions to the above are the \fB--colour\fP (or \fB--color\fP) and \fB--only-matching\fP options, for which the data is optional. If one of these options does have data, it must be given in the first form, using an equals character. Otherwise \fBpcregrep\fP will assume that it has no data. . . .SH "MATCHING ERRORS" .rs .sp It is possible to supply a regular expression that takes a very long time to fail to match certain lines. Such patterns normally involve nested indefinite repeats, for example: (a+)*\ed when matched against a line of a's with no final digit. The PCRE matching function has a resource limit that causes it to abort in these circumstances. If this happens, \fBpcregrep\fP outputs an error message and the line that caused the problem to the standard error stream. If there are more than 20 such errors, \fBpcregrep\fP gives up. .P The \fB--match-limit\fP option of \fBpcregrep\fP can be used to set the overall resource limit; there is a second option called \fB--recursion-limit\fP that sets a limit on the amount of memory (usually stack) that is used (see the discussion of these options above). . . .SH DIAGNOSTICS .rs .sp Exit status is 0 if any matches were found, 1 if no matches were found, and 2 for syntax errors, overlong lines, non-existent or inaccessible files (even if matches were found in other files) or too many matching errors. Using the \fB-s\fP option to suppress error messages about inaccessible files does not affect the return code. . . .SH "SEE ALSO" .rs .sp \fBpcrepattern\fP(3), \fBpcresyntax\fP(3), \fBpcretest\fP(1). . . .SH AUTHOR .rs .sp .nf Philip Hazel University Computing Service Cambridge CB2 3QH, England. .fi . . .SH REVISION .rs .sp .nf Last updated: 03 April 2014 Copyright (c) 1997-2014 University of Cambridge. .fi PK!00 pcretest.1nu[.TH PCRETEST 1 "23 February 2017" "PCRE 8.41" .SH NAME pcretest - a program for testing Perl-compatible regular expressions. .SH SYNOPSIS .rs .sp .B pcretest "[options] [input file [output file]]" .sp \fBpcretest\fP was written as a test program for the PCRE regular expression library itself, but it can also be used for experimenting with regular expressions. This document describes the features of the test program; for details of the regular expressions themselves, see the .\" HREF \fBpcrepattern\fP .\" documentation. For details of the PCRE library function calls and their options, see the .\" HREF \fBpcreapi\fP .\" , .\" HREF \fBpcre16\fP and .\" HREF \fBpcre32\fP .\" documentation. .P The input for \fBpcretest\fP is a sequence of regular expression patterns and strings to be matched, as described below. The output shows the result of each match. Options on the command line and the patterns control PCRE options and exactly what is output. .P As PCRE has evolved, it has acquired many different features, and as a result, \fBpcretest\fP now has rather a lot of obscure options for testing every possible feature. Some of these options are specifically designed for use in conjunction with the test script and data files that are distributed as part of PCRE, and are unlikely to be of use otherwise. They are all documented here, but without much justification. . . .SH "INPUT DATA FORMAT" .rs .sp Input to \fBpcretest\fP is processed line by line, either by calling the C library's \fBfgets()\fP function, or via the \fBlibreadline\fP library (see below). In Unix-like environments, \fBfgets()\fP treats any bytes other than newline as data characters. However, in some Windows environments character 26 (hex 1A) causes an immediate end of file, and no further data is read. For maximum portability, therefore, it is safest to use only ASCII characters in \fBpcretest\fP input files. .P The input is processed using using C's string functions, so must not contain binary zeroes, even though in Unix-like environments, \fBfgets()\fP treats any bytes other than newline as data characters. . . .SH "PCRE's 8-BIT, 16-BIT AND 32-BIT LIBRARIES" .rs .sp From release 8.30, two separate PCRE libraries can be built. The original one supports 8-bit character strings, whereas the newer 16-bit library supports character strings encoded in 16-bit units. From release 8.32, a third library can be built, supporting character strings encoded in 32-bit units. The \fBpcretest\fP program can be used to test all three libraries. However, it is itself still an 8-bit program, reading 8-bit input and writing 8-bit output. When testing the 16-bit or 32-bit library, the patterns and data strings are converted to 16- or 32-bit format before being passed to the PCRE library functions. Results are converted to 8-bit for output. .P References to functions and structures of the form \fBpcre[16|32]_xx\fP below mean "\fBpcre_xx\fP when using the 8-bit library, \fBpcre16_xx\fP when using the 16-bit library, or \fBpcre32_xx\fP when using the 32-bit library". . . .SH "COMMAND LINE OPTIONS" .rs .TP 10 \fB-8\fP If both the 8-bit library has been built, this option causes the 8-bit library to be used (which is the default); if the 8-bit library has not been built, this option causes an error. .TP 10 \fB-16\fP If both the 8-bit or the 32-bit, and the 16-bit libraries have been built, this option causes the 16-bit library to be used. If only the 16-bit library has been built, this is the default (so has no effect). If only the 8-bit or the 32-bit library has been built, this option causes an error. .TP 10 \fB-32\fP If both the 8-bit or the 16-bit, and the 32-bit libraries have been built, this option causes the 32-bit library to be used. If only the 32-bit library has been built, this is the default (so has no effect). If only the 8-bit or the 16-bit library has been built, this option causes an error. .TP 10 \fB-b\fP Behave as if each pattern has the \fB/B\fP (show byte code) modifier; the internal form is output after compilation. .TP 10 \fB-C\fP Output the version number of the PCRE library, and all available information about the optional features that are included, and then exit with zero exit code. All other options are ignored. .TP 10 \fB-C\fP \fIoption\fP Output information about a specific build-time option, then exit. This functionality is intended for use in scripts such as \fBRunTest\fP. The following options output the value and set the exit code as indicated: .sp ebcdic-nl the code for LF (= NL) in an EBCDIC environment: 0x15 or 0x25 0 if used in an ASCII environment exit code is always 0 linksize the configured internal link size (2, 3, or 4) exit code is set to the link size newline the default newline setting: CR, LF, CRLF, ANYCRLF, or ANY exit code is always 0 bsr the default setting for what \eR matches: ANYCRLF or ANY exit code is always 0 .sp The following options output 1 for true or 0 for false, and set the exit code to the same value: .sp ebcdic compiled for an EBCDIC environment jit just-in-time support is available pcre16 the 16-bit library was built pcre32 the 32-bit library was built pcre8 the 8-bit library was built ucp Unicode property support is available utf UTF-8 and/or UTF-16 and/or UTF-32 support is available .sp If an unknown option is given, an error message is output; the exit code is 0. .TP 10 \fB-d\fP Behave as if each pattern has the \fB/D\fP (debug) modifier; the internal form and information about the compiled pattern is output after compilation; \fB-d\fP is equivalent to \fB-b -i\fP. .TP 10 \fB-dfa\fP Behave as if each data line contains the \eD escape sequence; this causes the alternative matching function, \fBpcre[16|32]_dfa_exec()\fP, to be used instead of the standard \fBpcre[16|32]_exec()\fP function (more detail is given below). .TP 10 \fB-help\fP Output a brief summary these options and then exit. .TP 10 \fB-i\fP Behave as if each pattern has the \fB/I\fP modifier; information about the compiled pattern is given after compilation. .TP 10 \fB-M\fP Behave as if each data line contains the \eM escape sequence; this causes PCRE to discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings by calling \fBpcre[16|32]_exec()\fP repeatedly with different limits. .TP 10 \fB-m\fP Output the size of each compiled pattern after it has been compiled. This is equivalent to adding \fB/M\fP to each regular expression. The size is given in bytes for both libraries. .TP 10 \fB-O\fP Behave as if each pattern has the \fB/O\fP modifier, that is disable auto-possessification for all patterns. .TP 10 \fB-o\fP \fIosize\fP Set the number of elements in the output vector that is used when calling \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP to be \fIosize\fP. The default value is 45, which is enough for 14 capturing subexpressions for \fBpcre[16|32]_exec()\fP or 22 different matches for \fBpcre[16|32]_dfa_exec()\fP. The vector size can be changed for individual matching calls by including \eO in the data line (see below). .TP 10 \fB-p\fP Behave as if each pattern has the \fB/P\fP modifier; the POSIX wrapper API is used to call PCRE. None of the other options has any effect when \fB-p\fP is set. This option can be used only with the 8-bit library. .TP 10 \fB-q\fP Do not output the version number of \fBpcretest\fP at the start of execution. .TP 10 \fB-S\fP \fIsize\fP On Unix-like systems, set the size of the run-time stack to \fIsize\fP megabytes. .TP 10 \fB-s\fP or \fB-s+\fP Behave as if each pattern has the \fB/S\fP modifier; in other words, force each pattern to be studied. If \fB-s+\fP is used, all the JIT compile options are passed to \fBpcre[16|32]_study()\fP, causing just-in-time optimization to be set up if it is available, for both full and partial matching. Specific JIT compile options can be selected by following \fB-s+\fP with a digit in the range 1 to 7, which selects the JIT compile modes as follows: .sp 1 normal match only 2 soft partial match only 3 normal match and soft partial match 4 hard partial match only 6 soft and hard partial match 7 all three modes (default) .sp If \fB-s++\fP is used instead of \fB-s+\fP (with or without a following digit), the text "(JIT)" is added to the first output line after a match or no match when JIT-compiled code was actually used. .sp Note that there are pattern options that can override \fB-s\fP, either specifying no studying at all, or suppressing JIT compilation. .sp If the \fB/I\fP or \fB/D\fP option is present on a pattern (requesting output about the compiled pattern), information about the result of studying is not included when studying is caused only by \fB-s\fP and neither \fB-i\fP nor \fB-d\fP is present on the command line. This behaviour means that the output from tests that are run with and without \fB-s\fP should be identical, except when options that output information about the actual running of a match are set. .sp The \fB-M\fP, \fB-t\fP, and \fB-tm\fP options, which give information about resources used, are likely to produce different output with and without \fB-s\fP. Output may also differ if the \fB/C\fP option is present on an individual pattern. This uses callouts to trace the the matching process, and this may be different between studied and non-studied patterns. If the pattern contains (*MARK) items there may also be differences, for the same reason. The \fB-s\fP command line option can be overridden for specific patterns that should never be studied (see the \fB/S\fP pattern modifier below). .TP 10 \fB-t\fP Run each compile, study, and match many times with a timer, and output the resulting times per compile, study, or match (in milliseconds). Do not set \fB-m\fP with \fB-t\fP, because you will then get the size output a zillion times, and the timing will be distorted. You can control the number of iterations that are used for timing by following \fB-t\fP with a number (as a separate item on the command line). For example, "-t 1000" iterates 1000 times. The default is to iterate 500000 times. .TP 10 \fB-tm\fP This is like \fB-t\fP except that it times only the matching phase, not the compile or study phases. .TP 10 \fB-T\fP \fB-TM\fP These behave like \fB-t\fP and \fB-tm\fP, but in addition, at the end of a run, the total times for all compiles, studies, and matches are output. . . .SH DESCRIPTION .rs .sp If \fBpcretest\fP is given two filename arguments, it reads from the first and writes to the second. If it is given only one filename argument, it reads from that file and writes to stdout. Otherwise, it reads from stdin and writes to stdout, and prompts for each line of input, using "re>" to prompt for regular expressions, and "data>" to prompt for data lines. .P When \fBpcretest\fP is built, a configuration option can specify that it should be linked with the \fBlibreadline\fP library. When this is done, if the input is from a terminal, it is read using the \fBreadline()\fP function. This provides line-editing and history facilities. The output from the \fB-help\fP option states whether or not \fBreadline()\fP will be used. .P The program handles any number of sets of input on a single input file. Each set starts with a regular expression, and continues with any number of data lines to be matched against that pattern. .P Each data line is matched separately and independently. If you want to do multi-line matches, you have to use the \en escape sequence (or \er or \er\en, etc., depending on the newline setting) in a single line of input to encode the newline sequences. There is no limit on the length of data lines; the input buffer is automatically extended if it is too small. .P An empty line signals the end of the data lines, at which point a new regular expression is read. The regular expressions are given enclosed in any non-alphanumeric delimiters other than backslash, for example: .sp /(a|bc)x+yz/ .sp White space before the initial delimiter is ignored. A regular expression may be continued over several input lines, in which case the newline characters are included within it. It is possible to include the delimiter within the pattern by escaping it, for example .sp /abc\e/def/ .sp If you do so, the escape and the delimiter form part of the pattern, but since delimiters are always non-alphanumeric, this does not affect its interpretation. If the terminating delimiter is immediately followed by a backslash, for example, .sp /abc/\e .sp then a backslash is added to the end of the pattern. This is done to provide a way of testing the error condition that arises if a pattern finishes with a backslash, because .sp /abc\e/ .sp is interpreted as the first line of a pattern that starts with "abc/", causing pcretest to read the next line as a continuation of the regular expression. . . .SH "PATTERN MODIFIERS" .rs .sp A pattern may be followed by any number of modifiers, which are mostly single characters, though some of these can be qualified by further characters. Following Perl usage, these are referred to below as, for example, "the \fB/i\fP modifier", even though the delimiter of the pattern need not always be a slash, and no slash is used when writing modifiers. White space may appear between the final pattern delimiter and the first modifier, and between the modifiers themselves. For reference, here is a complete list of modifiers. They fall into several groups that are described in detail in the following sections. .sp \fB/8\fP set UTF mode \fB/9\fP set PCRE_NEVER_UTF (locks out UTF mode) \fB/?\fP disable UTF validity check \fB/+\fP show remainder of subject after match \fB/=\fP show all captures (not just those that are set) .sp \fB/A\fP set PCRE_ANCHORED \fB/B\fP show compiled code \fB/C\fP set PCRE_AUTO_CALLOUT \fB/D\fP same as \fB/B\fP plus \fB/I\fP \fB/E\fP set PCRE_DOLLAR_ENDONLY \fB/F\fP flip byte order in compiled pattern \fB/f\fP set PCRE_FIRSTLINE \fB/G\fP find all matches (shorten string) \fB/g\fP find all matches (use startoffset) \fB/I\fP show information about pattern \fB/i\fP set PCRE_CASELESS \fB/J\fP set PCRE_DUPNAMES \fB/K\fP show backtracking control names \fB/L\fP set locale \fB/M\fP show compiled memory size \fB/m\fP set PCRE_MULTILINE \fB/N\fP set PCRE_NO_AUTO_CAPTURE \fB/O\fP set PCRE_NO_AUTO_POSSESS \fB/P\fP use the POSIX wrapper \fB/Q\fP test external stack check function \fB/S\fP study the pattern after compilation \fB/s\fP set PCRE_DOTALL \fB/T\fP select character tables \fB/U\fP set PCRE_UNGREEDY \fB/W\fP set PCRE_UCP \fB/X\fP set PCRE_EXTRA \fB/x\fP set PCRE_EXTENDED \fB/Y\fP set PCRE_NO_START_OPTIMIZE \fB/Z\fP don't show lengths in \fB/B\fP output .sp \fB/\fP set PCRE_NEWLINE_ANY \fB/\fP set PCRE_NEWLINE_ANYCRLF \fB/\fP set PCRE_NEWLINE_CR \fB/\fP set PCRE_NEWLINE_CRLF \fB/\fP set PCRE_NEWLINE_LF \fB/\fP set PCRE_BSR_ANYCRLF \fB/\fP set PCRE_BSR_UNICODE \fB/\fP set PCRE_JAVASCRIPT_COMPAT .sp . . .SS "Perl-compatible modifiers" .rs .sp The \fB/i\fP, \fB/m\fP, \fB/s\fP, and \fB/x\fP modifiers set the PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, or PCRE_EXTENDED options, respectively, when \fBpcre[16|32]_compile()\fP is called. These four modifier letters have the same effect as they do in Perl. For example: .sp /caseless/i .sp . . .SS "Modifiers for other PCRE options" .rs .sp The following table shows additional modifiers for setting PCRE compile-time options that do not correspond to anything in Perl: .sp \fB/8\fP PCRE_UTF8 ) when using the 8-bit \fB/?\fP PCRE_NO_UTF8_CHECK ) library .sp \fB/8\fP PCRE_UTF16 ) when using the 16-bit \fB/?\fP PCRE_NO_UTF16_CHECK ) library .sp \fB/8\fP PCRE_UTF32 ) when using the 32-bit \fB/?\fP PCRE_NO_UTF32_CHECK ) library .sp \fB/9\fP PCRE_NEVER_UTF \fB/A\fP PCRE_ANCHORED \fB/C\fP PCRE_AUTO_CALLOUT \fB/E\fP PCRE_DOLLAR_ENDONLY \fB/f\fP PCRE_FIRSTLINE \fB/J\fP PCRE_DUPNAMES \fB/N\fP PCRE_NO_AUTO_CAPTURE \fB/O\fP PCRE_NO_AUTO_POSSESS \fB/U\fP PCRE_UNGREEDY \fB/W\fP PCRE_UCP \fB/X\fP PCRE_EXTRA \fB/Y\fP PCRE_NO_START_OPTIMIZE \fB/\fP PCRE_NEWLINE_ANY \fB/\fP PCRE_NEWLINE_ANYCRLF \fB/\fP PCRE_NEWLINE_CR \fB/\fP PCRE_NEWLINE_CRLF \fB/\fP PCRE_NEWLINE_LF \fB/\fP PCRE_BSR_ANYCRLF \fB/\fP PCRE_BSR_UNICODE \fB/\fP PCRE_JAVASCRIPT_COMPAT .sp The modifiers that are enclosed in angle brackets are literal strings as shown, including the angle brackets, but the letters within can be in either case. This example sets multiline matching with CRLF as the line ending sequence: .sp /^abc/m .sp As well as turning on the PCRE_UTF8/16/32 option, the \fB/8\fP modifier causes all non-printing characters in output strings to be printed using the \ex{hh...} notation. Otherwise, those less than 0x100 are output in hex without the curly brackets. .P Full details of the PCRE options are given in the .\" HREF \fBpcreapi\fP .\" documentation. . . .SS "Finding all matches in a string" .rs .sp Searching for all possible matches within each subject string can be requested by the \fB/g\fP or \fB/G\fP modifier. After finding a match, PCRE is called again to search the remainder of the subject string. The difference between \fB/g\fP and \fB/G\fP is that the former uses the \fIstartoffset\fP argument to \fBpcre[16|32]_exec()\fP to start searching at a new point within the entire string (which is in effect what Perl does), whereas the latter passes over a shortened substring. This makes a difference to the matching process if the pattern begins with a lookbehind assertion (including \eb or \eB). .P If any call to \fBpcre[16|32]_exec()\fP in a \fB/g\fP or \fB/G\fP sequence matches an empty string, the next call is done with the PCRE_NOTEMPTY_ATSTART and PCRE_ANCHORED flags set in order to search for another, non-empty, match at the same point. If this second match fails, the start offset is advanced, and the normal match is retried. This imitates the way Perl handles such cases when using the \fB/g\fP modifier or the \fBsplit()\fP function. Normally, the start offset is advanced by one character, but if the newline convention recognizes CRLF as a newline, and the current character is CR followed by LF, an advance of two is used. . . .SS "Other modifiers" .rs .sp There are yet more modifiers for controlling the way \fBpcretest\fP operates. .P The \fB/+\fP modifier requests that as well as outputting the substring that matched the entire pattern, \fBpcretest\fP should in addition output the remainder of the subject string. This is useful for tests where the subject contains multiple copies of the same substring. If the \fB+\fP modifier appears twice, the same action is taken for captured substrings. In each case the remainder is output on the following line with a plus character following the capture number. Note that this modifier must not immediately follow the /S modifier because /S+ and /S++ have other meanings. .P The \fB/=\fP modifier requests that the values of all potential captured parentheses be output after a match. By default, only those up to the highest one actually used in the match are output (corresponding to the return code from \fBpcre[16|32]_exec()\fP). Values in the offsets vector corresponding to higher numbers should be set to -1, and these are output as "". This modifier gives a way of checking that this is happening. .P The \fB/B\fP modifier is a debugging feature. It requests that \fBpcretest\fP output a representation of the compiled code after compilation. Normally this information contains length and offset values; however, if \fB/Z\fP is also present, this data is replaced by spaces. This is a special feature for use in the automatic test scripts; it ensures that the same output is generated for different internal link sizes. .P The \fB/D\fP modifier is a PCRE debugging feature, and is equivalent to \fB/BI\fP, that is, both the \fB/B\fP and the \fB/I\fP modifiers. .P The \fB/F\fP modifier causes \fBpcretest\fP to flip the byte order of the 2-byte and 4-byte fields in the compiled pattern. This facility is for testing the feature in PCRE that allows it to execute patterns that were compiled on a host with a different endianness. This feature is not available when the POSIX interface to PCRE is being used, that is, when the \fB/P\fP pattern modifier is specified. See also the section about saving and reloading compiled patterns below. .P The \fB/I\fP modifier requests that \fBpcretest\fP output information about the compiled pattern (whether it is anchored, has a fixed first character, and so on). It does this by calling \fBpcre[16|32]_fullinfo()\fP after compiling a pattern. If the pattern is studied, the results of that are also output. In this output, the word "char" means a non-UTF character, that is, the value of a single data item (8-bit, 16-bit, or 32-bit, depending on the library that is being tested). .P The \fB/K\fP modifier requests \fBpcretest\fP to show names from backtracking control verbs that are returned from calls to \fBpcre[16|32]_exec()\fP. It causes \fBpcretest\fP to create a \fBpcre[16|32]_extra\fP block if one has not already been created by a call to \fBpcre[16|32]_study()\fP, and to set the PCRE_EXTRA_MARK flag and the \fBmark\fP field within it, every time that \fBpcre[16|32]_exec()\fP is called. If the variable that the \fBmark\fP field points to is non-NULL for a match, non-match, or partial match, \fBpcretest\fP prints the string to which it points. For a match, this is shown on a line by itself, tagged with "MK:". For a non-match it is added to the message. .P The \fB/L\fP modifier must be followed directly by the name of a locale, for example, .sp /pattern/Lfr_FR .sp For this reason, it must be the last modifier. The given locale is set, \fBpcre[16|32]_maketables()\fP is called to build a set of character tables for the locale, and this is then passed to \fBpcre[16|32]_compile()\fP when compiling the regular expression. Without an \fB/L\fP (or \fB/T\fP) modifier, NULL is passed as the tables pointer; that is, \fB/L\fP applies only to the expression on which it appears. .P The \fB/M\fP modifier causes the size in bytes of the memory block used to hold the compiled pattern to be output. This does not include the size of the \fBpcre[16|32]\fP block; it is just the actual compiled data. If the pattern is successfully studied with the PCRE_STUDY_JIT_COMPILE option, the size of the JIT compiled code is also output. .P The \fB/Q\fP modifier is used to test the use of \fBpcre_stack_guard\fP. It must be followed by '0' or '1', specifying the return code to be given from an external function that is passed to PCRE and used for stack checking during compilation (see the .\" HREF \fBpcreapi\fP .\" documentation for details). .P The \fB/S\fP modifier causes \fBpcre[16|32]_study()\fP to be called after the expression has been compiled, and the results used when the expression is matched. There are a number of qualifying characters that may follow \fB/S\fP. They may appear in any order. .P If \fB/S\fP is followed by an exclamation mark, \fBpcre[16|32]_study()\fP is called with the PCRE_STUDY_EXTRA_NEEDED option, causing it always to return a \fBpcre_extra\fP block, even when studying discovers no useful information. .P If \fB/S\fP is followed by a second S character, it suppresses studying, even if it was requested externally by the \fB-s\fP command line option. This makes it possible to specify that certain patterns are always studied, and others are never studied, independently of \fB-s\fP. This feature is used in the test files in a few cases where the output is different when the pattern is studied. .P If the \fB/S\fP modifier is followed by a + character, the call to \fBpcre[16|32]_study()\fP is made with all the JIT study options, requesting just-in-time optimization support if it is available, for both normal and partial matching. If you want to restrict the JIT compiling modes, you can follow \fB/S+\fP with a digit in the range 1 to 7: .sp 1 normal match only 2 soft partial match only 3 normal match and soft partial match 4 hard partial match only 6 soft and hard partial match 7 all three modes (default) .sp If \fB/S++\fP is used instead of \fB/S+\fP (with or without a following digit), the text "(JIT)" is added to the first output line after a match or no match when JIT-compiled code was actually used. .P Note that there is also an independent \fB/+\fP modifier; it must not be given immediately after \fB/S\fP or \fB/S+\fP because this will be misinterpreted. .P If JIT studying is successful, the compiled JIT code will automatically be used when \fBpcre[16|32]_exec()\fP is run, except when incompatible run-time options are specified. For more details, see the .\" HREF \fBpcrejit\fP .\" documentation. See also the \fB\eJ\fP escape sequence below for a way of setting the size of the JIT stack. .P Finally, if \fB/S\fP is followed by a minus character, JIT compilation is suppressed, even if it was requested externally by the \fB-s\fP command line option. This makes it possible to specify that JIT is never to be used for certain patterns. .P The \fB/T\fP modifier must be followed by a single digit. It causes a specific set of built-in character tables to be passed to \fBpcre[16|32]_compile()\fP. It is used in the standard PCRE tests to check behaviour with different character tables. The digit specifies the tables as follows: .sp 0 the default ASCII tables, as distributed in pcre_chartables.c.dist 1 a set of tables defining ISO 8859 characters .sp In table 1, some characters whose codes are greater than 128 are identified as letters, digits, spaces, etc. . . .SS "Using the POSIX wrapper API" .rs .sp The \fB/P\fP modifier causes \fBpcretest\fP to call PCRE via the POSIX wrapper API rather than its native API. This supports only the 8-bit library. When \fB/P\fP is set, the following modifiers set options for the \fBregcomp()\fP function: .sp /i REG_ICASE /m REG_NEWLINE /N REG_NOSUB /s REG_DOTALL ) /U REG_UNGREEDY ) These options are not part of /W REG_UCP ) the POSIX standard /8 REG_UTF8 ) .sp The \fB/+\fP modifier works as described above. All other modifiers are ignored. . . .SS "Locking out certain modifiers" .rs .sp PCRE can be compiled with or without support for certain features such as UTF-8/16/32 or Unicode properties. Accordingly, the standard tests are split up into a number of different files that are selected for running depending on which features are available. When updating the tests, it is all too easy to put a new test into the wrong file by mistake; for example, to put a test that requires UTF support into a file that is used when it is not available. To help detect such mistakes as early as possible, there is a facility for locking out specific modifiers. If an input line for \fBpcretest\fP starts with the string "< forbid " the following sequence of characters is taken as a list of forbidden modifiers. For example, in the test files that must not use UTF or Unicode property support, this line appears: .sp < forbid 8W .sp This locks out the /8 and /W modifiers. An immediate error is given if they are subsequently encountered. If the character string contains < but not >, all the multi-character modifiers that begin with < are locked out. Otherwise, such modifiers must be explicitly listed, for example: .sp < forbid .sp There must be a single space between < and "forbid" for this feature to be recognised. If there is not, the line is interpreted either as a request to re-load a pre-compiled pattern (see "SAVING AND RELOADING COMPILED PATTERNS" below) or, if there is a another < character, as a pattern that uses < as its delimiter. . . .SH "DATA LINES" .rs .sp Before each data line is passed to \fBpcre[16|32]_exec()\fP, leading and trailing white space is removed, and it is then scanned for \e escapes. Some of these are pretty esoteric features, intended for checking out some of the more complicated features of PCRE. If you are just testing "ordinary" regular expressions, you probably don't need any of these. The following escapes are recognized: .sp \ea alarm (BEL, \ex07) \eb backspace (\ex08) \ee escape (\ex27) \ef form feed (\ex0c) \en newline (\ex0a) .\" JOIN \eqdd set the PCRE_MATCH_LIMIT limit to dd (any number of digits) \er carriage return (\ex0d) \et tab (\ex09) \ev vertical tab (\ex0b) \ennn octal character (up to 3 octal digits); always a byte unless > 255 in UTF-8 or 16-bit or 32-bit mode \eo{dd...} octal character (any number of octal digits} \exhh hexadecimal byte (up to 2 hex digits) \ex{hh...} hexadecimal character (any number of hex digits) .\" JOIN \eA pass the PCRE_ANCHORED option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \eB pass the PCRE_NOTBOL option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \eCdd call pcre[16|32]_copy_substring() for substring dd after a successful match (number less than 32) .\" JOIN \eCname call pcre[16|32]_copy_named_substring() for substring "name" after a successful match (name terminated by next non alphanumeric character) .\" JOIN \eC+ show the current captured substrings at callout time \eC- do not supply a callout function .\" JOIN \eC!n return 1 instead of 0 when callout number n is reached .\" JOIN \eC!n!m return 1 instead of 0 when callout number n is reached for the nth time .\" JOIN \eC*n pass the number n (may be negative) as callout data; this is used as the callout return value \eD use the \fBpcre[16|32]_dfa_exec()\fP match function \eF only shortest match for \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \eGdd call pcre[16|32]_get_substring() for substring dd after a successful match (number less than 32) .\" JOIN \eGname call pcre[16|32]_get_named_substring() for substring "name" after a successful match (name terminated by next non-alphanumeric character) .\" JOIN \eJdd set up a JIT stack of dd kilobytes maximum (any number of digits) .\" JOIN \eL call pcre[16|32]_get_substringlist() after a successful match .\" JOIN \eM discover the minimum MATCH_LIMIT and MATCH_LIMIT_RECURSION settings .\" JOIN \eN pass the PCRE_NOTEMPTY option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP; if used twice, pass the PCRE_NOTEMPTY_ATSTART option .\" JOIN \eOdd set the size of the output vector passed to \fBpcre[16|32]_exec()\fP to dd (any number of digits) .\" JOIN \eP pass the PCRE_PARTIAL_SOFT option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP; if used twice, pass the PCRE_PARTIAL_HARD option .\" JOIN \eQdd set the PCRE_MATCH_LIMIT_RECURSION limit to dd (any number of digits) \eR pass the PCRE_DFA_RESTART option to \fBpcre[16|32]_dfa_exec()\fP \eS output details of memory get/free calls during matching .\" JOIN \eY pass the PCRE_NO_START_OPTIMIZE option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \eZ pass the PCRE_NOTEOL option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e? pass the PCRE_NO_UTF[8|16|32]_CHECK option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e>dd start the match at offset dd (optional "-"; then any number of digits); this sets the \fIstartoffset\fP argument for \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e pass the PCRE_NEWLINE_CR option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e pass the PCRE_NEWLINE_LF option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e pass the PCRE_NEWLINE_CRLF option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e pass the PCRE_NEWLINE_ANYCRLF option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .\" JOIN \e pass the PCRE_NEWLINE_ANY option to \fBpcre[16|32]_exec()\fP or \fBpcre[16|32]_dfa_exec()\fP .sp The use of \ex{hh...} is not dependent on the use of the \fB/8\fP modifier on the pattern. It is recognized always. There may be any number of hexadecimal digits inside the braces; invalid values provoke error messages. .P Note that \exhh specifies one byte rather than one character in UTF-8 mode; this makes it possible to construct invalid UTF-8 sequences for testing purposes. On the other hand, \ex{hh} is interpreted as a UTF-8 character in UTF-8 mode, generating more than one byte if the value is greater than 127. When testing the 8-bit library not in UTF-8 mode, \ex{hh} generates one byte for values less than 256, and causes an error for greater values. .P In UTF-16 mode, all 4-digit \ex{hhhh} values are accepted. This makes it possible to construct invalid UTF-16 sequences for testing purposes. .P In UTF-32 mode, all 4- to 8-digit \ex{...} values are accepted. This makes it possible to construct invalid UTF-32 sequences for testing purposes. .P The escapes that specify line ending sequences are literal strings, exactly as shown. No more than one newline setting should be present in any data line. .P A backslash followed by anything else just escapes the anything else. If the very last character is a backslash, it is ignored. This gives a way of passing an empty line as data, since a real empty line terminates the data input. .P The \fB\eJ\fP escape provides a way of setting the maximum stack size that is used by the just-in-time optimization code. It is ignored if JIT optimization is not being used. Providing a stack that is larger than the default 32K is necessary only for very complicated patterns. .P If \eM is present, \fBpcretest\fP calls \fBpcre[16|32]_exec()\fP several times, with different values in the \fImatch_limit\fP and \fImatch_limit_recursion\fP fields of the \fBpcre[16|32]_extra\fP data structure, until it finds the minimum numbers for each parameter that allow \fBpcre[16|32]_exec()\fP to complete without error. Because this is testing a specific feature of the normal interpretive \fBpcre[16|32]_exec()\fP execution, the use of any JIT optimization that might have been set up by the \fB/S+\fP qualifier of \fB-s+\fP option is disabled. .P The \fImatch_limit\fP number is a measure of the amount of backtracking that takes place, and checking it out can be instructive. For most simple matches, the number is quite small, but for patterns with very large numbers of matching possibilities, it can become large very quickly with increasing length of subject string. The \fImatch_limit_recursion\fP number is a measure of how much stack (or, if PCRE is compiled with NO_RECURSE, how much heap) memory is needed to complete the match attempt. .P When \eO is used, the value specified may be higher or lower than the size set by the \fB-O\fP command line option (or defaulted to 45); \eO applies only to the call of \fBpcre[16|32]_exec()\fP for the line in which it appears. .P If the \fB/P\fP modifier was present on the pattern, causing the POSIX wrapper API to be used, the only option-setting sequences that have any effect are \eB, \eN, and \eZ, causing REG_NOTBOL, REG_NOTEMPTY, and REG_NOTEOL, respectively, to be passed to \fBregexec()\fP. . . .SH "THE ALTERNATIVE MATCHING FUNCTION" .rs .sp By default, \fBpcretest\fP uses the standard PCRE matching function, \fBpcre[16|32]_exec()\fP to match each data line. PCRE also supports an alternative matching function, \fBpcre[16|32]_dfa_test()\fP, which operates in a different way, and has some restrictions. The differences between the two functions are described in the .\" HREF \fBpcrematching\fP .\" documentation. .P If a data line contains the \eD escape sequence, or if the command line contains the \fB-dfa\fP option, the alternative matching function is used. This function finds all possible matches at a given point. If, however, the \eF escape sequence is present in the data line, it stops after the first match is found. This is always the shortest possible match. . . .SH "DEFAULT OUTPUT FROM PCRETEST" .rs .sp This section describes the output when the normal matching function, \fBpcre[16|32]_exec()\fP, is being used. .P When a match succeeds, \fBpcretest\fP outputs the list of captured substrings that \fBpcre[16|32]_exec()\fP returns, starting with number 0 for the string that matched the whole pattern. Otherwise, it outputs "No match" when the return is PCRE_ERROR_NOMATCH, and "Partial match:" followed by the partially matching substring when \fBpcre[16|32]_exec()\fP returns PCRE_ERROR_PARTIAL. (Note that this is the entire substring that was inspected during the partial match; it may include characters before the actual match start if a lookbehind assertion, \eK, \eb, or \eB was involved.) For any other return, \fBpcretest\fP outputs the PCRE negative error number and a short descriptive phrase. If the error is a failed UTF string check, the offset of the start of the failing character and the reason code are also output, provided that the size of the output vector is at least two. Here is an example of an interactive \fBpcretest\fP run. .sp $ pcretest PCRE version 8.13 2011-04-30 .sp re> /^abc(\ed+)/ data> abc123 0: abc123 1: 123 data> xyz No match .sp Unset capturing substrings that are not followed by one that is set are not returned by \fBpcre[16|32]_exec()\fP, and are not shown by \fBpcretest\fP. In the following example, there are two capturing substrings, but when the first data line is matched, the second, unset substring is not shown. An "internal" unset substring is shown as "", as for the second data line. .sp re> /(a)|(b)/ data> a 0: a 1: a data> b 0: b 1: 2: b .sp If the strings contain any non-printing characters, they are output as \exhh escapes if the value is less than 256 and UTF mode is not set. Otherwise they are output as \ex{hh...} escapes. See below for the definition of non-printing characters. If the pattern has the \fB/+\fP modifier, the output for substring 0 is followed by the the rest of the subject string, identified by "0+" like this: .sp re> /cat/+ data> cataract 0: cat 0+ aract .sp If the pattern has the \fB/g\fP or \fB/G\fP modifier, the results of successive matching attempts are output in sequence, like this: .sp re> /\eBi(\ew\ew)/g data> Mississippi 0: iss 1: ss 0: iss 1: ss 0: ipp 1: pp .sp "No match" is output only if the first match attempt fails. Here is an example of a failure message (the offset 4 that is specified by \e>4 is past the end of the subject string): .sp re> /xyz/ data> xyz\e>4 Error -24 (bad offset value) .P If any of the sequences \fB\eC\fP, \fB\eG\fP, or \fB\eL\fP are present in a data line that is successfully matched, the substrings extracted by the convenience functions are output with C, G, or L after the string number instead of a colon. This is in addition to the normal full list. The string length (that is, the return from the extraction function) is given in parentheses after each string for \fB\eC\fP and \fB\eG\fP. .P Note that whereas patterns can be continued over several lines (a plain ">" prompt is used for continuations), data lines may not. However newlines can be included in data by means of the \en escape (or \er, \er\en, etc., depending on the newline sequence setting). . . . .SH "OUTPUT FROM THE ALTERNATIVE MATCHING FUNCTION" .rs .sp When the alternative matching function, \fBpcre[16|32]_dfa_exec()\fP, is used (by means of the \eD escape sequence or the \fB-dfa\fP command line option), the output consists of a list of all the matches that start at the first point in the subject where there is at least one match. For example: .sp re> /(tang|tangerine|tan)/ data> yellow tangerine\eD 0: tangerine 1: tang 2: tan .sp (Using the normal matching function on this data finds only "tang".) The longest matching string is always given first (and numbered zero). After a PCRE_ERROR_PARTIAL return, the output is "Partial match:", followed by the partially matching substring. (Note that this is the entire substring that was inspected during the partial match; it may include characters before the actual match start if a lookbehind assertion, \eK, \eb, or \eB was involved.) .P If \fB/g\fP is present on the pattern, the search for further matches resumes at the end of the longest match. For example: .sp re> /(tang|tangerine|tan)/g data> yellow tangerine and tangy sultana\eD 0: tangerine 1: tang 2: tan 0: tang 1: tan 0: tan .sp Since the matching function does not support substring capture, the escape sequences that are concerned with captured substrings are not relevant. . . .SH "RESTARTING AFTER A PARTIAL MATCH" .rs .sp When the alternative matching function has given the PCRE_ERROR_PARTIAL return, indicating that the subject partially matched the pattern, you can restart the match with additional subject data by means of the \eR escape sequence. For example: .sp re> /^\ed?\ed(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\ed\ed$/ data> 23ja\eP\eD Partial match: 23ja data> n05\eR\eD 0: n05 .sp For further information about partial matching, see the .\" HREF \fBpcrepartial\fP .\" documentation. . . .SH CALLOUTS .rs .sp If the pattern contains any callout requests, \fBpcretest\fP's callout function is called during matching. This works with both matching functions. By default, the called function displays the callout number, the start and current positions in the text at the callout time, and the next pattern item to be tested. For example: .sp --->pqrabcdef 0 ^ ^ \ed .sp This output indicates that callout number 0 occurred for a match attempt starting at the fourth character of the subject string, when the pointer was at the seventh character of the data, and when the next pattern item was \ed. Just one circumflex is output if the start and current positions are the same. .P Callouts numbered 255 are assumed to be automatic callouts, inserted as a result of the \fB/C\fP pattern modifier. In this case, instead of showing the callout number, the offset in the pattern, preceded by a plus, is output. For example: .sp re> /\ed?[A-E]\e*/C data> E* --->E* +0 ^ \ed? +3 ^ [A-E] +8 ^^ \e* +10 ^ ^ 0: E* .sp If a pattern contains (*MARK) items, an additional line is output whenever a change of latest mark is passed to the callout function. For example: .sp re> /a(*MARK:X)bc/C data> abc --->abc +0 ^ a +1 ^^ (*MARK:X) +10 ^^ b Latest Mark: X +11 ^ ^ c +12 ^ ^ 0: abc .sp The mark changes between matching "a" and "b", but stays the same for the rest of the match, so nothing more is output. If, as a result of backtracking, the mark reverts to being unset, the text "" is output. .P The callout function in \fBpcretest\fP returns zero (carry on matching) by default, but you can use a \eC item in a data line (as described above) to change this and other parameters of the callout. .P Inserting callouts can be helpful when using \fBpcretest\fP to check complicated regular expressions. For further information about callouts, see the .\" HREF \fBpcrecallout\fP .\" documentation. . . . .SH "NON-PRINTING CHARACTERS" .rs .sp When \fBpcretest\fP is outputting text in the compiled version of a pattern, bytes other than 32-126 are always treated as non-printing characters are are therefore shown as hex escapes. .P When \fBpcretest\fP is outputting text that is a matched part of a subject string, it behaves in the same way, unless a different locale has been set for the pattern (using the \fB/L\fP modifier). In this case, the \fBisprint()\fP function to distinguish printing and non-printing characters. . . . .SH "SAVING AND RELOADING COMPILED PATTERNS" .rs .sp The facilities described in this section are not available when the POSIX interface to PCRE is being used, that is, when the \fB/P\fP pattern modifier is specified. .P When the POSIX interface is not in use, you can cause \fBpcretest\fP to write a compiled pattern to a file, by following the modifiers with > and a file name. For example: .sp /pattern/im >/some/file .sp See the .\" HREF \fBpcreprecompile\fP .\" documentation for a discussion about saving and re-using compiled patterns. Note that if the pattern was successfully studied with JIT optimization, the JIT data cannot be saved. .P The data that is written is binary. The first eight bytes are the length of the compiled pattern data followed by the length of the optional study data, each written as four bytes in big-endian order (most significant byte first). If there is no study data (either the pattern was not studied, or studying did not return any data), the second length is zero. The lengths are followed by an exact copy of the compiled pattern. If there is additional study data, this (excluding any JIT data) follows immediately after the compiled pattern. After writing the file, \fBpcretest\fP expects to read a new pattern. .P A saved pattern can be reloaded into \fBpcretest\fP by specifying < and a file name instead of a pattern. There must be no space between < and the file name, which must not contain a < character, as otherwise \fBpcretest\fP will interpret the line as a pattern delimited by < characters. For example: .sp re> .\" Modified by Steven R. Loomis . .\" With help from http://www.igpm.rwth-aachen.de/~albrecht/manpage.html .TH ICU-CONFIG 1 "17 May 2004" "ICU MANPAGE" "ICU 64.2 Manual" .\".Dd "17 May 2004" .\".Dt ICU-CONFIG 1 .\".Os .SH NAME .B icu-config \- output ICU build options .SH SYNOPSIS .B icu-config [ .BI "\-\-bindir" ] [ .BI "\-\-cc" ] [ .BI "\-\-cflags" ] [ .BI "\-\-cppflags" ] [ .BI "\-\-cppflags\-searchpath" ] [ .BI "\-\-cxx" ] [ .BI "\-\-cxxflags" ] [ .BI "\-\-detect\-prefix" ] [ .BI "\-\-exec\-prefix" ] [ .BI "\-\-exists" ] [ .BI "\-\-help\fP, \fB\-?\fP,\fB" .BI "\-\-usage" ] [ .BI "\-\-icudata" ] [ .BI "\-\-icudata\-install\-dir" ] [ .BI "\-\-icudata\-mode" ] [ .BI "\-\-icudatadir" ] [ .BI "\-\-invoke" ] [ .BI "\-\-invoke=" "prog" ] [ .BI "\-\-ldflags" ] [ .BI "\-\-ldflags\-libsonly" ] [ .BI "\-\-ldflags\-searchpath" ] [ .BI "\-\-ldflags\-system" ] [ .BI "\-\-ldflags\-icuio" ] [ .BI "\-\-mandir" ] [ .BI "\-\-prefix" ] [ .BI "\-\-prefix=" "prefix" ] [ .BI "\-\-sbindir" ] [ .BI "\-\-shared\-datadir" ] [ .BI "\-\-sysconfdir" ] [ .BI "\-\-unicode\-version" ] [ .BI "\-\-version" ] [ .BI "\-\-incfile" ] .SH DESCRIPTION .B icu-config simplifies the task of building and linking against ICU as compared to manually configuring user makefiles or equivalent. Because .B icu-config is an executable script, it also solves the problem of locating the ICU libraries and headers, by allowing the system PATH to locate it. .SH EXAMPLES .B icu-config can be used without a makefile. The command line below is sufficient for building a single-file c++ program against ICU. (For example, \fBicu/source/samples/props/props.cpp\fR) .PP .RS `icu-config --cxx --cxxflags --cppflags --ldflags` -o props props.cpp .RE .PP More commonly, .B icu-config will be called from within a makefile, and used to set up variables. The following example also builds the \fIprops\fR example. .PP .RS CC=$(shell icu-config --cc) CXX=$(shell icu-config --cxx) CPPFLAGS=$(shell icu-config --cppflags) CXXFLAGS=$(shell icu-config --cxxflags) LDFLAGS =$(shell icu-config --ldflags) all: props props.o: props.cpp .RE .PP make(1) will automatically use the above variables. .SH OPTIONS .TP .BI "\-\-bindir" Prints the binary (executable) directory path. Normally equivalent to 'bin'. ICU user-executable applications and scripts are found here. .TP .BI "\-\-cc" Print the C compiler used. Equivalent to the $(CC) Makefile variable. .TP .BI "\-\-cflags" Print the C compiler flags. Equivalent to the $(CFLAGS) Makefile variable. Does NOT include preprocessor directives such as include path or defined symbols. Examples include debugging (\-g) and optimization flags .TP .BI "\-\-cppflags" Print the C preprocessor flags. Equivalent to the $(CPPFLAGS) Makefile variable. Examples are \-I include paths and \-D define directives. .TP .BI "\-\-cppflags\-searchpath" Print the C preprocessor flags, as above but only \-I search paths. .TP .BI "\-\-cxx" Print the C++ compiler. Equivalent to the $(CXX) Makefile variable. .TP .BI "\-\-cxxflags" Print the C++ compiler flags. Equivalent to the $(CXXFLAGS) Makefile variable. .TP .BI "\-\-detect\-prefix" If ICU has been moved from its installed location, prepending this flag to other .B icu-config calls will attempt to locate ICU relative to where the .B icu-config script has been located. Can be used as a last-chance effort if the ICU install has been damaged. .TP .BI "\-\-exec\-prefix" Print the prefix used for executable program directories (such as bin, sbin, etc). Normally the same as the prefix. .TP .BI "\-\-exists" Script will return with a successful (0) status if ICU seems to be installed and located correctly, otherwise an error message and nonzero status will be displayed. .TP .BI "\-\-help\fP, \fB\-?\fP,\fB\-\-usage" Print a help and usage message. .TP .BI "\-\-icudata" Print the \fIshortname\fP of the ICU data file. This does not include any suffix such as .dat, .dll, .so, .lib, .a, etc nor does it include prefixes such as 'lib'. It may be in the form \fBicudt21b\fP .TP .BI "\-\-icudata\-install\-dir" Print the directory where ICU packaged data should be installed. Can use as pkgdata(1)'s --install option. .TP .BI "\-\-icudata\-mode" Print the default ICU pkgdata mode, such as dll or common. Can use as pkgdata(1)'s --mode option. .TP .BI "\-\-icudatadir" Print the path to packaged archive data. (should be where $ICU_DATA or equivalent default path points.) Will NOT point to the libdir. .TP .BI "\-\-invoke" If ICU is not installed in a location where the operating system will locate its shared libraries, this option will print out commands so as to set the appropriate environment variables to load ICU's shared libraries. For example, on many systems a variable named LD_LIBRARY_PATH or equivalent must be set. .TP .BI "\-\-invoke=" "prog" Same as the \fB\-\-invoke\fP option, except includes options for invoking a program named \fIprog\fP. If \fIprog\fP is the name of an ICU tool, such as genrb(1), then \fBicu-config\fP will also include the full path to that tool. .TP .BI "\-\-ldflags" Print any flags which should be passed to the linker. These may include -L for library search paths, and -l for including ICU libraries. By default, this option will attempt to link in the "common" (libicuuc) and "i18n" (libicui18n) libraries, as well as the data library. If additional libraries are required, any of the following two flags may be added in conjunction with this one, for example "\-\-ldflags \-\-ldflags-icuio" if the icuio library is required in addition to the standard ICU libraries. Equivalent to the $(LDFLAGS) Makefile variable. .TP .BI "\-\-ldflags\-layout" Prints the link option for the ICU layout library. .TP .BI "\-\-ldflags\-icuio" Prints the link option to add the ICU I/O package .TP .BI "\-\-ldflags\-libsonly" Similar to \fI\-\-ldflags\fP but only includes the \-l options. .TP .BI "\-\-ldflags\-searchpath" Similar to \fI\-\-ldflags\fP but only includes the \-L search path options. .TP .BI "\-\-ldflags\-system" Similar to \fI\-\-ldflags\fP but only includes system libraries (such as pthreads) .BI "\-\-mandir" Prints the location of the installed ICU man pages. Normally (man) .TP .BI "\-\-prefix" Prints the prefix (base directory) under which the installed ICU resides. .TP .BI "\-\-prefix=" "prefix" Sets the ICU prefix to \fIprefix\fP for the remainder of this command line. Does test whether the new prefix is valid. .TP .BI "\-\-sbindir" Prints the location of ICU system binaries, normally (sbin) .TP .BI "\-\-shared\-datadir" Prints the location of ICU shared data, normally (share) .TP .BI "\-\-sysconfdir" Prints the location of ICU system configuration data, normally (etc) .TP .BI "\-\-unicode\-version" Prints the Version of the Unicode Standard which the current ICU uses. .TP .BI "\-\-version" Prints the current version of ICU. .TP .BI "\-\-incfile" Prints the 'Makefile.inc' path, suitable for use with pkgdata(1)'s \-O option. .PP .SH AUTHORS Steven Loomis .SH VERSION 64.2 .SH COPYRIGHT Copyright (C) 2002-2004 IBM, Inc. and others. PK!P bundle-gem.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-GEM" "1" "September 2024" "" .SH "NAME" \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem .SH "SYNOPSIS" \fBbundle gem\fR \fIGEM_NAME\fR \fIOPTIONS\fR .SH "DESCRIPTION" Generates a directory named \fBGEM_NAME\fR with a \fBRakefile\fR, \fBGEM_NAME\.gemspec\fR, and other supporting files and directories that can be used to develop a rubygem with that name\. .P Run \fBrake \-T\fR in the resulting project for a list of Rake tasks that can be used to test and publish the gem to rubygems\.org\. .P The generated project skeleton can be customized with OPTIONS, as explained below\. Note that these options can also be specified via Bundler's global configuration file using the following names: .IP "\(bu" 4 \fBgem\.coc\fR .IP "\(bu" 4 \fBgem\.mit\fR .IP "\(bu" 4 \fBgem\.test\fR .IP "" 0 .SH "OPTIONS" .IP "\(bu" 4 \fB\-\-exe\fR or \fB\-b\fR or \fB\-\-bin\fR: Specify that Bundler should create a binary executable (as \fBexe/GEM_NAME\fR) in the generated rubygem project\. This binary will also be added to the \fBGEM_NAME\.gemspec\fR manifest\. This behavior is disabled by default\. .IP "\(bu" 4 \fB\-\-no\-exe\fR: Do not create a binary (overrides \fB\-\-exe\fR specified in the global config)\. .IP "\(bu" 4 \fB\-\-coc\fR: Add a \fBCODE_OF_CONDUCT\.md\fR file to the root of the generated project\. If this option is unspecified, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\. .IP "\(bu" 4 \fB\-\-no\-coc\fR: Do not create a \fBCODE_OF_CONDUCT\.md\fR (overrides \fB\-\-coc\fR specified in the global config)\. .IP "\(bu" 4 \fB\-\-ext=c\fR, \fB\-\-ext=rust\fR Add boilerplate for C or Rust (currently magnus \fIhttps://docs\.rs/magnus\fR based) extension code to the generated project\. This behavior is disabled by default\. .IP "\(bu" 4 \fB\-\-no\-ext\fR: Do not add extension code (overrides \fB\-\-ext\fR specified in the global config)\. .IP "\(bu" 4 \fB\-\-mit\fR: Add an MIT license to a \fBLICENSE\.txt\fR file in the root of the generated project\. Your name from the global git config is used for the copyright statement\. If this option is unspecified, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\. .IP "\(bu" 4 \fB\-\-no\-mit\fR: Do not create a \fBLICENSE\.txt\fR (overrides \fB\-\-mit\fR specified in the global config)\. .IP "\(bu" 4 \fB\-t\fR, \fB\-\-test=minitest\fR, \fB\-\-test=rspec\fR, \fB\-\-test=test\-unit\fR: Specify the test framework that Bundler should use when generating the project\. Acceptable values are \fBminitest\fR, \fBrspec\fR and \fBtest\-unit\fR\. The \fBGEM_NAME\.gemspec\fR will be configured and a skeleton test/spec directory will be created based on this option\. Given no option is specified: .IP When Bundler is configured to generate tests, this defaults to Bundler's global config setting \fBgem\.test\fR\. .IP When Bundler is configured to not generate tests, an interactive prompt will be displayed and the answer will be used for the current rubygem project\. .IP When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\. .IP "\(bu" 4 \fB\-\-no\-test\fR: Do not use a test framework (overrides \fB\-\-test\fR specified in the global config)\. .IP "\(bu" 4 \fB\-\-ci\fR, \fB\-\-ci=github\fR, \fB\-\-ci=gitlab\fR, \fB\-\-ci=circle\fR: Specify the continuous integration service that Bundler should use when generating the project\. Acceptable values are \fBgithub\fR, \fBgitlab\fR and \fBcircle\fR\. A configuration file will be generated in the project directory\. Given no option is specified: .IP When Bundler is configured to generate CI files, this defaults to Bundler's global config setting \fBgem\.ci\fR\. .IP When Bundler is configured to not generate CI files, an interactive prompt will be displayed and the answer will be used for the current rubygem project\. .IP When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\. .IP "\(bu" 4 \fB\-\-no\-ci\fR: Do not use a continuous integration service (overrides \fB\-\-ci\fR specified in the global config)\. .IP "\(bu" 4 \fB\-\-linter\fR, \fB\-\-linter=rubocop\fR, \fB\-\-linter=standard\fR: Specify the linter and code formatter that Bundler should add to the project's development dependencies\. Acceptable values are \fBrubocop\fR and \fBstandard\fR\. A configuration file will be generated in the project directory\. Given no option is specified: .IP When Bundler is configured to add a linter, this defaults to Bundler's global config setting \fBgem\.linter\fR\. .IP When Bundler is configured not to add a linter, an interactive prompt will be displayed and the answer will be used for the current rubygem project\. .IP When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler's global config for future \fBbundle gem\fR use\. .IP "\(bu" 4 \fB\-\-no\-linter\fR: Do not add a linter (overrides \fB\-\-linter\fR specified in the global config)\. .IP "\(bu" 4 \fB\-e\fR, \fB\-\-edit[=EDITOR]\fR: Open the resulting GEM_NAME\.gemspec in EDITOR, or the default editor if not specified\. The default is \fB$BUNDLER_EDITOR\fR, \fB$VISUAL\fR, or \fB$EDITOR\fR\. .IP "" 0 .SH "SEE ALSO" .IP "\(bu" 4 bundle config(1) \fIbundle\-config\.1\.html\fR .IP "" 0 PK!! bundle-list.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-LIST" "1" "September 2024" "" .SH "NAME" \fBbundle\-list\fR \- List all the gems in the bundle .SH "SYNOPSIS" \fBbundle list\fR [\-\-name\-only] [\-\-paths] [\-\-without\-group=GROUP[ GROUP\|\.\|\.\|\.]] [\-\-only\-group=GROUP[ GROUP\|\.\|\.\|\.]] .SH "DESCRIPTION" Prints a list of all the gems in the bundle including their version\. .P Example: .P bundle list \-\-name\-only .P bundle list \-\-paths .P bundle list \-\-without\-group test .P bundle list \-\-only\-group dev .P bundle list \-\-only\-group dev test \-\-paths .SH "OPTIONS" .TP \fB\-\-name\-only\fR Print only the name of each gem\. .TP \fB\-\-paths\fR Print the path to each gem in the bundle\. .TP \fB\-\-without\-group=\fR A space\-separated list of groups of gems to skip during printing\. .TP \fB\-\-only\-group=\fR A space\-separated list of groups of gems to print\. PK!=bundle-platform.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-PLATFORM" "1" "September 2024" "" .SH "NAME" \fBbundle\-platform\fR \- Displays platform compatibility information .SH "SYNOPSIS" \fBbundle platform\fR [\-\-ruby] .SH "DESCRIPTION" \fBplatform\fR displays information from your Gemfile, Gemfile\.lock, and Ruby VM about your platform\. .P For instance, using this Gemfile(5): .IP "" 4 .nf source "https://rubygems\.org" ruby "3\.1\.2" gem "rack" .fi .IP "" 0 .P If you run \fBbundle platform\fR on Ruby 3\.1\.2, it displays the following output: .IP "" 4 .nf Your platform is: x86_64\-linux Your app has gems that work on these platforms: * arm64\-darwin\-21 * ruby * x64\-mingw\-ucrt * x86_64\-linux Your Gemfile specifies a Ruby version requirement: * ruby 3\.1\.2 Your current platform satisfies the Ruby version requirement\. .fi .IP "" 0 .P \fBplatform\fR lists all the platforms in your \fBGemfile\.lock\fR as well as the \fBruby\fR directive if applicable from your Gemfile(5)\. It also lets you know if the \fBruby\fR directive requirement has been met\. If \fBruby\fR directive doesn't match the running Ruby VM, it tells you what part does not\. .SH "OPTIONS" .TP \fB\-\-ruby\fR It will display the ruby directive information, so you don't have to parse it from the Gemfile(5)\. .SH "SEE ALSO" .IP "\(bu" 4 bundle\-lock(1) \fIbundle\-lock\.1\.html\fR .IP "" 0 PK!b bundle-open.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-OPEN" "1" "September 2024" "" .SH "NAME" \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle .SH "SYNOPSIS" \fBbundle open\fR [GEM] [\-\-path=PATH] .SH "DESCRIPTION" Opens the source directory of the provided GEM in your editor\. .P For this to work the \fBEDITOR\fR or \fBBUNDLER_EDITOR\fR environment variable has to be set\. .P Example: .IP "" 4 .nf bundle open 'rack' .fi .IP "" 0 .P Will open the source directory for the 'rack' gem in your bundle\. .IP "" 4 .nf bundle open 'rack' \-\-path 'README\.md' .fi .IP "" 0 .P Will open the README\.md file of the 'rack' gem source in your bundle\. .SH "OPTIONS" .TP \fB\-\-path\fR Specify GEM source relative path to open\. PK!Nr//bundle-inject.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-INJECT" "1" "September 2024" "" .SH "NAME" \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile .SH "SYNOPSIS" \fBbundle inject\fR [GEM] [VERSION] .SH "DESCRIPTION" Adds the named gem(s) with their version requirements to the resolved [\fBGemfile(5)\fR][Gemfile(5)]\. .P This command will add the gem to both your [\fBGemfile(5)\fR][Gemfile(5)] and Gemfile\.lock if it isn't listed yet\. .P Example: .IP "" 4 .nf bundle install bundle inject 'rack' '> 0' .fi .IP "" 0 .P This will inject the 'rack' gem with a version greater than 0 in your [\fBGemfile(5)\fR][Gemfile(5)] and Gemfile\.lock\. .P The \fBbundle inject\fR command was deprecated in Bundler 2\.1 and will be removed in Bundler 3\.0\. PK! rrbundle-plugin.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-PLUGIN" "1" "September 2024" "" .SH "NAME" \fBbundle\-plugin\fR \- Manage Bundler plugins .SH "SYNOPSIS" \fBbundle plugin\fR install PLUGINS [\-\-source=\fISOURCE\fR] [\-\-version=\fIversion\fR] [\-\-git=\fIgit\-url\fR] [\-\-branch=\fIbranch\fR|\-\-ref=\fIrev\fR] [\-\-path=\fIpath\fR] .br \fBbundle plugin\fR uninstall PLUGINS .br \fBbundle plugin\fR list .br \fBbundle plugin\fR help [COMMAND] .SH "DESCRIPTION" You can install, uninstall, and list plugin(s) with this command to extend functionalities of Bundler\. .SH "SUB\-COMMANDS" .SS "install" Install the given plugin(s)\. .TP \fBbundle plugin install bundler\-graph\fR Install bundler\-graph gem from globally configured sources (defaults to RubyGems\.org)\. The global source, specified in source in Gemfile is ignored\. .TP \fBbundle plugin install bundler\-graph \-\-source https://example\.com\fR Install bundler\-graph gem from example\.com\. The global source, specified in source in Gemfile is not considered\. .TP \fBbundle plugin install bundler\-graph \-\-version 0\.2\.1\fR You can specify the version of the gem via \fB\-\-version\fR\. .TP \fBbundle plugin install bundler\-graph \-\-git https://github\.com/rubygems/bundler\-graph\fR Install bundler\-graph gem from Git repository\. You can use standard Git URLs like: .IP \fBssh://[user@]host\.xz[:port]/path/to/repo\.git\fR .br \fBhttp[s]://host\.xz[:port]/path/to/repo\.git\fR .br \fB/path/to/repo\fR .br \fBfile:///path/to/repo\fR .IP When you specify \fB\-\-git\fR, you can use \fB\-\-branch\fR or \fB\-\-ref\fR to specify any branch, tag, or commit hash (revision) to use\. .TP \fBbundle plugin install bundler\-graph \-\-path \.\./bundler\-graph\fR Install bundler\-graph gem from a local path\. .SS "uninstall" Uninstall the plugin(s) specified in PLUGINS\. .SS "list" List the installed plugins and available commands\. .P No options\. .SS "help" Describe subcommands or one specific subcommand\. .P No options\. .SH "SEE ALSO" .IP "\(bu" 4 How to write a Bundler plugin \fIhttps://bundler\.io/guides/bundler_plugins\.html\fR .IP "" 0 PK!gԙGGruby.1nu[.\"Ruby is copyrighted by Yukihiro Matsumoto . .Dd November 7, 2012 .Dt RUBY(1) "" "Ruby Programmers Reference Guide" .\".Dt RUBY 1 .Os UNIX .Sh NAME .Nm ruby .Nd Interpreted object-oriented scripting language .Sh SYNOPSIS .Nm .Op Fl -copyright .Op Fl -version .Op Fl SUacdlnpswvy .Op Fl 0 Ns Op Ar octal .Op Fl C Ar directory .Op Fl E Ar external Ns Op : Ns Ar internal .Op Fl F Ar pattern .Op Fl I Ar directory .Op Fl K Ar c .Op Fl T Ns Op Ar level .Op Fl W Ns Op Ar level .Op Fl e Ar command .Op Fl i Ns Op Ar extension .Op Fl r Ar library .Op Fl x Ns Op Ar directory .Op - Ns Bro Cm enable Ns | Ns Cm disable Brc Ns - Ns Ar FEATURE .Op Fl -dump Ns = Ns Ar target .Op Fl -verbose .Op Fl - .Op Ar program_file .Op Ar argument ... .Sh DESCRIPTION Ruby is an interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (like in Perl). It is simple, straight-forward, and extensible. .Pp If you want a language for easy object-oriented programming, or you don't like the Perl ugliness, or you do like the concept of LISP, but don't like too many parentheses, Ruby might be your language of choice. .Sh FEATURES Ruby's features are as follows: .Bl -tag -width 6n .It Sy "Interpretive" Ruby is an interpreted language, so you don't have to recompile programs written in Ruby to execute them. .Pp .It Sy "Variables have no type (dynamic typing)" Variables in Ruby can contain data of any type. You don't have to worry about variable typing. Consequently, it has a weaker compile time check. .Pp .It Sy "No declaration needed" You can use variables in your Ruby programs without any declarations. Variable names denote their scope - global, class, instance, or local. .Pp .It Sy "Simple syntax" Ruby has a simple syntax influenced slightly from Eiffel. .Pp .It Sy "No user-level memory management" Ruby has automatic memory management. Objects no longer referenced from anywhere are automatically collected by the garbage collector built into the interpreter. .Pp .It Sy "Everything is an object" Ruby is a purely object-oriented language, and was so since its creation. Even such basic data as integers are seen as objects. .Pp .It Sy "Class, inheritance, and methods" Being an object-oriented language, Ruby naturally has basic features like classes, inheritance, and methods. .Pp .It Sy "Singleton methods" Ruby has the ability to define methods for certain objects. For example, you can define a press-button action for certain widget by defining a singleton method for the button. Or, you can make up your own prototype based object system using singleton methods, if you want to. .Pp .It Sy "Mix-in by modules" Ruby intentionally does not have the multiple inheritance as it is a source of confusion. Instead, Ruby has the ability to share implementations across the inheritance tree. This is often called a .Sq Mix-in . .Pp .It Sy "Iterators" Ruby has iterators for loop abstraction. .Pp .It Sy "Closures" In Ruby, you can objectify the procedure. .Pp .It Sy "Text processing and regular expressions" Ruby has a bunch of text processing features like in Perl. .Pp .It Sy "M17N, character set independent" Ruby supports multilingualized programming. Easy to process texts written in many different natural languages and encoded in many different character encodings, without dependence on Unicode. .Pp .It Sy "Bignums" With built-in bignums, you can for example calculate factorial(400). .Pp .It Sy "Reflection and domain specific languages" Class is also an instance of the Class class. Definition of classes and methods is an expression just as 1+1 is. So your programs can even write and modify programs. Thus you can write your application in your own programming language on top of Ruby. .Pp .It Sy "Exception handling" As in Java(tm). .Pp .It Sy "Direct access to the OS" Ruby can use most .Ux system calls, often used in system programming. .Pp .It Sy "Dynamic loading" On most .Ux systems, you can load object files into the Ruby interpreter on-the-fly. .It Sy "Rich libraries" Libraries called "builtin libraries" and "standard libraries" are bundled with Ruby. And you can obtain more libraries via the package management system called `RubyGems'. .Pp Moreover there are thousands of Ruby projects on GitHub .Aq Pa https://github.com/languages/Ruby . .El .Pp .Sh OPTIONS Ruby interpreter accepts following command-line options (switches). They are quite similar to those of .Xr perl 1 . .Bl -tag -width "1234567890123" -compact .Pp .It Fl -copyright Prints the copyright notice. .Pp .It Fl -version Prints the version of Ruby interpreter. .Pp .It Fl 0 Ns Op Ar octal (The digit .Dq zero . ) Specifies the input record separator .Pf ( Li "$/" ) as an octal number. If no digit is given, the null character is taken as the separator. Other switches may follow the digits. .Fl 00 turns Ruby into paragraph mode. .Fl 0777 makes Ruby read whole file at once as a single string since there is no legal character with that value. .Pp .It Fl C Ar directory .It Fl X Ar directory Causes Ruby to switch to the directory. .Pp .It Fl E Ar external Ns Op : Ns Ar internal .It Fl -encoding Ar external Ns Op : Ns Ar internal Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). .Pp You can omit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp .It Fl -external-encoding Ns = Ns Ar encoding .It Fl -internal-encoding Ns = Ns Ar encoding Specify the default external or internal character encoding .Pp .It Fl F Ar pattern Specifies input field separator .Pf ( Li "$;" ) . .Pp .It Fl I Ar directory Used to tell Ruby where to load the library scripts. Directory path will be added to the load-path variable .Pf ( Li "$:" ) . .Pp .It Fl K Ar kcode Specifies KANJI (Japanese) encoding. The default value for script encodings .Pf ( Li "__ENCODING__" ) and external encodings ( Li "Encoding.default_external" ) will be the specified one. .Ar kcode can be one of .Bl -hang -offset indent .It Sy e EUC-JP .Pp .It Sy s Windows-31J (CP932) .Pp .It Sy u UTF-8 .Pp .It Sy n ASCII-8BIT (BINARY) .El .Pp .It Fl S Makes Ruby use the .Ev PATH environment variable to search for script, unless its name begins with a slash. This is used to emulate .Li #! on machines that don't support it, in the following manner: .Bd -literal -offset indent #! /usr/local/bin/ruby # This line makes the next one a comment in Ruby \e exec /usr/local/bin/ruby -S $0 $* .Ed .Pp .It Fl T Ns Op Ar level=1 Turns on taint checks at the specified level (default 1). .Pp .It Fl U Sets the default value for internal encodings .Pf ( Li "Encoding.default_internal" ) to UTF-8. .Pp .It Fl W Ns Op Ar level=2 Turns on verbose mode at the specified level without printing the version message at the beginning. The level can be; .Bl -hang -offset indent .It Sy 0 Verbose mode is "silence". It sets the .Li "$VERBOSE" to nil. .Pp .It Sy 1 Verbose mode is "medium". It sets the .Li "$VERBOSE" to false. .Pp .It Sy 2 (default) Verbose mode is "verbose". It sets the .Li "$VERBOSE" to true. .Fl W Ns 2 is same as .Fl w . .El .Pp .It Fl a Turns on auto-split mode when used with .Fl n or .Fl p . In auto-split mode, Ruby executes .Dl $F = $_.split at beginning of each loop. .Pp .It Fl c Causes Ruby to check the syntax of the script and exit without executing. If there are no syntax errors, Ruby will print .Dq Syntax OK to the standard output. .Pp .It Fl d .It Fl -debug Turns on debug mode. .Li "$DEBUG" will be set to true. .Pp .It Fl e Ar command Specifies script from command-line while telling Ruby not to search the rest of the arguments for a script file name. .Pp .It Fl h .It Fl -help Prints a summary of the options. .Pp .It Fl i Ar extension Specifies in-place-edit mode. The extension, if specified, is added to old file name to make a backup copy. For example: .Bd -literal -offset indent % echo matz > /tmp/junk % cat /tmp/junk matz % ruby -p -i.bak -e '$_.upcase!' /tmp/junk % cat /tmp/junk MATZ % cat /tmp/junk.bak matz .Ed .Pp .It Fl l (The lowercase letter .Dq ell . ) Enables automatic line-ending processing, which means to firstly set .Li "$\e" to the value of .Li "$/" , and secondly chops every line read using .Li chop! . .Pp .It Fl n Causes Ruby to assume the following loop around your script, which makes it iterate over file name arguments somewhat like .Nm sed .Fl n or .Nm awk . .Bd -literal -offset indent while gets ... end .Ed .Pp .It Fl p Acts mostly same as -n switch, but print the value of variable .Li "$_" at the each end of the loop. For example: .Bd -literal -offset indent % echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ .Ed .Pp .It Fl r Ar library Causes Ruby to load the library using require. It is useful when using .Fl n or .Fl p . .Pp .It Fl s Enables some switch parsing for switches after script name but before any file name arguments (or before a .Fl - ) . Any switches found there are removed from .Li ARGV and set the corresponding variable in the script. For example: .Bd -literal -offset indent #! /usr/local/bin/ruby -s # prints "true" if invoked with `-xyz' switch. print "true\en" if $xyz .Ed .Pp On some systems .Li "$0" does not always contain the full pathname, so you need the .Fl S switch to tell Ruby to search for the script if necessary (to handle embedded spaces and such). A better construct than .Li "$*" would be .Li ${1+"$@"} , but it does not work if the script is being interpreted by .Xr csh 1 . .Pp .It Fl v Enables verbose mode. Ruby will print its version at the beginning and set the variable .Li "$VERBOSE" to true. Some methods print extra messages if this variable is true. If this switch is given, and no other switches are present, Ruby quits after printing its version. .Pp .It Fl w Enables verbose mode without printing version message at the beginning. It sets the .Li "$VERBOSE" variable to true. .Pp .It Fl x Ns Op Ar directory Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first line that starts with .Dq #! and contains the string, .Dq ruby . Any meaningful switches on that line will be applied. The end of the script must be specified with either .Li EOF , .Li "^D" ( Li "control-D" ) , .Li "^Z" ( Li "control-Z" ) , or the reserved word .Li __END__ . If the directory name is specified, Ruby will switch to that directory before executing script. .Pp .It Fl y .It Fl -yydebug DO NOT USE. .Pp Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compilation. Only specify this switch you are going to debug the Ruby interpreter. .Pp .It Fl -disable- Ns Ar FEATURE .It Fl -enable- Ns Ar FEATURE Disables (or enables) the specified .Ar FEATURE Ns \&. .Bl -tag -width "--disable-rubyopt" -compact .It Fl -disable-gems .It Fl -enable-gems Disables (or enables) RubyGems libraries. By default, Ruby will load the latest version of each installed gem. The .Li Gem constant is true if RubyGems is enabled, false if otherwise. .Pp .It Fl -disable-rubyopt .It Fl -enable-rubyopt Ignores (or considers) the .Ev RUBYOPT environment variable. By default, Ruby considers the variable. .Pp .It Fl -disable-all .It Fl -enable-all Disables (or enables) all features. .Pp .El .Pp .It Fl -dump Ns = Ns Ar target DO NOT USE. .Pp Prints the specified target. .Ar target can be one of; .Bl -hang -offset indent .It Sy insns disassembled instructions .Pp .El .Pp Only specify this switch if you are going to debug the Ruby interpreter. .Pp .It Fl -verbose Enables verbose mode without printing version message at the beginning. It sets the .Li "$VERBOSE" variable to true. If this switch is given, and no other switches are present, Ruby quits after printing its version. .El .Pp .Sh ENVIRONMENT .Bl -tag -width "RUBYSHELL" -compact .It Ev RUBYLIB A colon-separated list of directories that are added to Ruby's library load path .Pf ( Li "$:" ) . Directories from this environment variable are searched before the standard load path is searched. .Pp e.g.: .Dl RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext" .Pp .It Ev RUBYOPT Additional Ruby options. .Pp e.g. .Dl RUBYOPT="-w -Ke" .Pp Note that RUBYOPT can contain only .Fl d , Fl E , Fl I , Fl K , Fl r , Fl T , Fl U , Fl v , Fl w , Fl W, Fl -debug , .Fl -disable- Ns Ar FEATURE and .Fl -enable- Ns Ar FEATURE . .Pp .It Ev RUBYPATH A colon-separated list of directories that Ruby searches for Ruby programs when the .Fl S flag is specified. This variable precedes the .Ev PATH environment variable. .Pp .It Ev RUBYSHELL The path to the system shell command. This environment variable is enabled for only mswin32, mingw32, and OS/2 platforms. If this variable is not defined, Ruby refers to .Ev COMSPEC . .Pp .It Ev PATH Ruby refers to the .Ev PATH environment variable on calling Kernel#system. .El .Pp And Ruby depends on some RubyGems related environment variables unless RubyGems is disabled. See the help of .Xr gem 1 as below. .Bd -literal -offset indent % gem help .Ed .Pp .Sh GC ENVIRONMENT The Ruby garbage collector (GC) tracks objects in fixed-sized slots, but each object may have auxiliary memory allocations handled by the malloc family of C standard library calls ( .Xr malloc 3 , .Xr calloc 3 , and .Xr realloc 3 ) . In this documentatation, the "heap" refers to the Ruby object heap of fixed-sized slots, while "malloc" refers to auxiliary allocations commonly referred to as the "process heap". Thus there are at least two possible ways to trigger GC: .Bl -hang -offset indent .It Sy 1 Reaching the object limit. .It Sy 2 Reaching the malloc limit. .Pp .El In Ruby 2.1, the generational GC was introduced and the limits are divided into young and old generations, providing two additional ways to trigger a GC: .Bl -hang -offset indent .It Sy 3 Reaching the old object limit. .It Sy 4 Reaching the old malloc limit. .El .Pp There are currently 4 possible areas where the GC may be tuned by the the following 11 environment variables: .Bl -hang -compact -width "RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR" .It Ev RUBY_GC_HEAP_INIT_SLOTS Initial allocation slots. Introduced in Ruby 2.1, default: 10000. .Pp .It Ev RUBY_GC_HEAP_FREE_SLOTS Prepare at least this amount of slots after GC. Allocate this number slots if there are not enough slots. Introduced in Ruby 2.1, default: 4096 .Pp .It Ev RUBY_GC_HEAP_GROWTH_FACTOR Increase allocation rate of heap slots by this factor. Introduced in Ruby 2.1, default: 1.8, minimum: 1.0 (no growth) .Pp .It Ev RUBY_GC_HEAP_GROWTH_MAX_SLOTS Allocation rate is limited to this number of slots, preventing excessive allocation due to RUBY_GC_HEAP_GROWTH_FACTOR. Introduced in Ruby 2.1, default: 0 (no limit) .Pp .It Ev RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR Perform a full GC when the number of old objects is more than R * N, where R is this factor and N is the number of old objects after the last full GC. Introduced in Ruby 2.1.1, default: 2.0 .Pp .It Ev RUBY_GC_MALLOC_LIMIT The initial limit of young generation allocation from the malloc-family. GC will start when this limit is reached. Default: 16MB .Pp .It Ev RUBY_GC_MALLOC_LIMIT_MAX The maximum limit of young generation allocation from malloc before GC starts. Prevents excessive malloc growth due to RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR. Introduced in Ruby 2.1, default: 32MB. .Pp .It Ev RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR Increases the limit of young generation malloc calls, reducing GC frequency but increasing malloc growth until RUBY_GC_MALLOC_LIMIT_MAX is reached. Introduced in Ruby 2.1, default: 1.4, minimum: 1.0 (no growth) .Pp .It Ev RUBY_GC_OLDMALLOC_LIMIT The initial limit of old generation allocation from malloc, a full GC will start when this limit is reached. Introduced in Ruby 2.1, default: 16MB .Pp .It Ev RUBY_GC_OLDMALLOC_LIMIT_MAX The maximum limit of old generation allocation from malloc before a full GC starts. Prevents excessive malloc growth due to RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR. Introduced in Ruby 2.1, default: 128MB .Pp .It Ev RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR Increases the limit of old generation malloc allocation, reducing full GC frequency but increasing malloc growth until RUBY_GC_OLDMALLOC_LIMIT_MAX is reached. Introduced in Ruby 2.1, default: 1.2, minimum: 1.0 (no growth) .Pp .El .Sh STACK SIZE ENVIRONMENT Stack size environment variables are implementation-dependent and subject to change with different versions of Ruby. The VM stack is used for pure-Ruby code and managed by the virtual machine. Machine stack is used by the operating system and its usage is dependent on C extensions as well as C compiler options. Using lower values for these may allow applications to keep more Fibers or Threads running; but increases the chance of SystemStackError exceptions and segmentation faults (SIGSEGV). These environment variables are available since Ruby 2.0.0. All values are specified in bytes. .Pp .Bl -hang -compact -width "RUBY_THREAD_MACHINE_STACK_SIZE" .It Ev RUBY_THREAD_VM_STACK_SIZE VM stack size used at thread creation. default: 131072 (32-bit CPU) or 262144 (64-bit) .Pp .It Ev RUBY_THREAD_MACHINE_STACK_SIZE Machine stack size used at thread creation. default: 524288 or 1048575 .Pp .It Ev RUBY_FIBER_VM_STACK_SIZE VM stack size used at fiber creation. default: 65536 or 131072 .Pp .It Ev RUBY_FIBER_MACHINE_STACK_SIZE Machine stack size used at fiber creation. default: 262144 or 524288 .Pp .El .Sh SEE ALSO .Bl -hang -compact -width "http://www.ruby-lang.org/123" .It https://www.ruby-lang.org/ The official web site. .It https://www.ruby-toolbox.com/ Comprehensive catalog of Ruby libraries. .El .Pp .Sh REPORTING BUGS .Bl -bullet .Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after they've been fixed. .Pp .Li And you can report other bugs and feature requests via the Ruby Issue Tracking System (https://bugs.ruby-lang.org/). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immediately. .El .Sh AUTHORS Ruby is designed and implemented by .An Yukihiro Matsumoto Aq matz@netlab.jp . .Pp See .Aq Pa https://bugs.ruby-lang.org/projects/ruby/wiki/Contributors for contributors to Ruby. PK!Vdevvbundle-pristine.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-PRISTINE" "1" "September 2024" "" .SH "NAME" \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition .SH "SYNOPSIS" \fBbundle pristine\fR .SH "DESCRIPTION" \fBpristine\fR restores the installed gems in the bundle to their pristine condition using the local gem cache from RubyGems\. For git gems, a forced checkout will be performed\. .P For further explanation, \fBbundle pristine\fR ignores unpacked files on disk\. In other words, this command utilizes the local \fB\.gem\fR cache or the gem's git repository as if one were installing from scratch\. .P Note: the Bundler gem cannot be restored to its original state with \fBpristine\fR\. One also cannot use \fBbundle pristine\fR on gems with a 'path' option in the Gemfile, because bundler has no original copy it can restore from\. .P When is it practical to use \fBbundle pristine\fR? .P It comes in handy when a developer is debugging a gem\. \fBbundle pristine\fR is a great way to get rid of experimental changes to a gem that one may not want\. .P Why use \fBbundle pristine\fR over \fBgem pristine \-\-all\fR? .P Both commands are very similar\. For context: \fBbundle pristine\fR, without arguments, cleans all gems from the lockfile\. Meanwhile, \fBgem pristine \-\-all\fR cleans all installed gems for that Ruby version\. .P If a developer forgets which gems in their project they might have been debugging, the Rubygems \fBgem pristine [GEMNAME]\fR command may be inconvenient\. One can avoid waiting for \fBgem pristine \-\-all\fR, and instead run \fBbundle pristine\fR\. PK!!BF F bundle-lock.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-LOCK" "1" "September 2024" "" .SH "NAME" \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing .SH "SYNOPSIS" \fBbundle lock\fR [\-\-update] [\-\-local] [\-\-print] [\-\-lockfile=PATH] [\-\-full\-index] [\-\-add\-platform] [\-\-remove\-platform] [\-\-patch] [\-\-minor] [\-\-major] [\-\-strict] [\-\-conservative] .SH "DESCRIPTION" Lock the gems specified in Gemfile\. .SH "OPTIONS" .TP \fB\-\-update=<*gems>\fR Ignores the existing lockfile\. Resolve then updates lockfile\. Taking a list of gems or updating all gems if no list is given\. .TP \fB\-\-local\fR Do not attempt to connect to \fBrubygems\.org\fR\. Instead, Bundler will use the gems already present in Rubygems' cache or in \fBvendor/cache\fR\. Note that if a appropriate platform\-specific gem exists on \fBrubygems\.org\fR it will not be found\. .TP \fB\-\-print\fR Prints the lockfile to STDOUT instead of writing to the file system\. .TP \fB\-\-lockfile=\fR The path where the lockfile should be written to\. .TP \fB\-\-full\-index\fR Fall back to using the single\-file index of all gems\. .TP \fB\-\-add\-platform\fR Add a new platform to the lockfile, re\-resolving for the addition of that platform\. .TP \fB\-\-remove\-platform\fR Remove a platform from the lockfile\. .TP \fB\-\-patch\fR If updating, prefer updating only to next patch version\. .TP \fB\-\-minor\fR If updating, prefer updating only to next minor version\. .TP \fB\-\-major\fR If updating, prefer updating to next major version (default)\. .TP \fB\-\-strict\fR If updating, do not allow any gem to be updated past latest \-\-patch | \-\-minor | \-\-major\. .TP \fB\-\-conservative\fR If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated\. .SH "UPDATING ALL GEMS" If you run \fBbundle lock\fR with \fB\-\-update\fR option without list of gems, bundler will ignore any previously installed gems and resolve all dependencies again based on the latest versions of all gems available in the sources\. .SH "UPDATING A LIST OF GEMS" Sometimes, you want to update a single gem in the Gemfile(5), and leave the rest of the gems that you specified locked to the versions in the \fBGemfile\.lock\fR\. .P For instance, you only want to update \fBnokogiri\fR, run \fBbundle lock \-\-update nokogiri\fR\. .P Bundler will update \fBnokogiri\fR and any of its dependencies, but leave the rest of the gems that you specified locked to the versions in the \fBGemfile\.lock\fR\. .SH "SUPPORTING OTHER PLATFORMS" If you want your bundle to support platforms other than the one you're running locally, you can run \fBbundle lock \-\-add\-platform PLATFORM\fR to add PLATFORM to the lockfile, force bundler to re\-resolve and consider the new platform when picking gems, all without needing to have a machine that matches PLATFORM handy to install those platform\-specific gems on\. .P For a full explanation of gem platforms, see \fBgem help platform\fR\. .SH "PATCH LEVEL OPTIONS" See bundle update(1) \fIbundle\-update\.1\.html\fR for details\. PK!U.ϺAAbundle-install.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-INSTALL" "1" "September 2024" "" .SH "NAME" \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile .SH "SYNOPSIS" \fBbundle install\fR [\-\-binstubs[=DIRECTORY]] [\-\-clean] [\-\-deployment] [\-\-frozen] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-no\-prune] [\-\-path PATH] [\-\-prefer\-local] [\-\-quiet] [\-\-redownload] [\-\-retry=NUMBER] [\-\-shebang] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-system] [\-\-trust\-policy=POLICY] [\-\-with=GROUP[ GROUP\|\.\|\.\|\.]] [\-\-without=GROUP[ GROUP\|\.\|\.\|\.]] .SH "DESCRIPTION" Install the gems specified in your Gemfile(5)\. If this is the first time you run bundle install (and a \fBGemfile\.lock\fR does not exist), Bundler will fetch all remote sources, resolve dependencies and install all needed gems\. .P If a \fBGemfile\.lock\fR does exist, and you have not updated your Gemfile(5), Bundler will fetch all remote sources, but use the dependencies specified in the \fBGemfile\.lock\fR instead of resolving dependencies\. .P If a \fBGemfile\.lock\fR does exist, and you have updated your Gemfile(5), Bundler will use the dependencies in the \fBGemfile\.lock\fR for all gems that you did not update, but will re\-resolve the dependencies of gems that you did update\. You can find more information about this update process below under \fICONSERVATIVE UPDATING\fR\. .SH "OPTIONS" The \fB\-\-clean\fR, \fB\-\-deployment\fR, \fB\-\-frozen\fR, \fB\-\-no\-prune\fR, \fB\-\-path\fR, \fB\-\-shebang\fR, \fB\-\-system\fR, \fB\-\-without\fR and \fB\-\-with\fR options are deprecated because they only make sense if they are applied to every subsequent \fBbundle install\fR run automatically and that requires \fBbundler\fR to silently remember them\. Since \fBbundler\fR will no longer remember CLI flags in future versions, \fBbundle config\fR (see bundle\-config(1)) should be used to apply them permanently\. .TP \fB\-\-binstubs[=]\fR Binstubs are scripts that wrap around executables\. Bundler creates a small Ruby file (a binstub) that loads Bundler, runs the command, and puts it in \fBbin/\fR\. This lets you link the binstub inside of an application to the exact gem version the application needs\. .IP Creates a directory (defaults to \fB~/bin\fR) and places any executables from the gem there\. These executables run in Bundler's context\. If used, you might add this directory to your environment's \fBPATH\fR variable\. For instance, if the \fBrails\fR gem comes with a \fBrails\fR executable, this flag will create a \fBbin/rails\fR executable that ensures that all referred dependencies will be resolved using the bundled gems\. .TP \fB\-\-clean\fR On finishing the installation Bundler is going to remove any gems not present in the current Gemfile(5)\. Don't worry, gems currently in use will not be removed\. .IP This option is deprecated in favor of the \fBclean\fR setting\. .TP \fB\-\-deployment\fR In \fIdeployment mode\fR, Bundler will 'roll\-out' the bundle for production or CI use\. Please check carefully if you want to have this option enabled in your development environment\. .IP This option is deprecated in favor of the \fBdeployment\fR setting\. .TP \fB\-\-redownload\fR Force download every gem, even if the required versions are already available locally\. .TP \fB\-\-frozen\fR Do not allow the Gemfile\.lock to be updated after this install\. Exits non\-zero if there are going to be changes to the Gemfile\.lock\. .IP This option is deprecated in favor of the \fBfrozen\fR setting\. .TP \fB\-\-full\-index\fR Bundler will not call Rubygems' API endpoint (default) but download and cache a (currently big) index file of all gems\. Performance can be improved for large bundles that seldom change by enabling this option\. .TP \fB\-\-gemfile=\fR The location of the Gemfile(5) which Bundler should use\. This defaults to a Gemfile(5) in the current working directory\. In general, Bundler will assume that the location of the Gemfile(5) is also the project's root and will try to find \fBGemfile\.lock\fR and \fBvendor/cache\fR relative to this location\. .TP \fB\-\-jobs=[]\fR, \fB\-j[]\fR The maximum number of parallel download and install jobs\. The default is the number of available processors\. .TP \fB\-\-local\fR Do not attempt to connect to \fBrubygems\.org\fR\. Instead, Bundler will use the gems already present in Rubygems' cache or in \fBvendor/cache\fR\. Note that if an appropriate platform\-specific gem exists on \fBrubygems\.org\fR it will not be found\. .TP \fB\-\-prefer\-local\fR Force using locally installed gems, or gems already present in Rubygems' cache or in \fBvendor/cache\fR, when resolving, even if newer versions are available remotely\. Only attempt to connect to \fBrubygems\.org\fR for gems that are not present locally\. .TP \fB\-\-no\-cache\fR Do not update the cache in \fBvendor/cache\fR with the newly bundled gems\. This does not remove any gems in the cache but keeps the newly bundled gems from being cached during the install\. .TP \fB\-\-no\-prune\fR Don't remove stale gems from the cache when the installation finishes\. .IP This option is deprecated in favor of the \fBno_prune\fR setting\. .TP \fB\-\-path=\fR The location to install the specified gems to\. This defaults to Rubygems' setting\. Bundler shares this location with Rubygems, \fBgem install \|\.\|\.\|\.\fR will have gem installed there, too\. Therefore, gems installed without a \fB\-\-path \|\.\|\.\|\.\fR setting will show up by calling \fBgem list\fR\. Accordingly, gems installed to other locations will not get listed\. .IP This option is deprecated in favor of the \fBpath\fR setting\. .TP \fB\-\-quiet\fR Do not print progress information to the standard output\. Instead, Bundler will exit using a status code (\fB$?\fR)\. .TP \fB\-\-retry=[]\fR Retry failed network or git requests for \fInumber\fR times\. .TP \fB\-\-shebang=\fR Uses the specified ruby executable (usually \fBruby\fR) to execute the scripts created with \fB\-\-binstubs\fR\. In addition, if you use \fB\-\-binstubs\fR together with \fB\-\-shebang jruby\fR these executables will be changed to execute \fBjruby\fR instead\. .IP This option is deprecated in favor of the \fBshebang\fR setting\. .TP \fB\-\-standalone[=]\fR Makes a bundle that can work without depending on Rubygems or Bundler at runtime\. A space separated list of groups to install has to be specified\. Bundler creates a directory named \fBbundle\fR and installs the bundle there\. It also generates a \fBbundle/bundler/setup\.rb\fR file to replace Bundler's own setup in the manner required\. Using this option implicitly sets \fBpath\fR, which is a [remembered option][REMEMBERED OPTIONS]\. .TP \fB\-\-system\fR Installs the gems specified in the bundle to the system's Rubygems location\. This overrides any previous configuration of \fB\-\-path\fR\. .IP This option is deprecated in favor of the \fBsystem\fR setting\. .TP \fB\-\-trust\-policy=[]\fR Apply the Rubygems security policy \fIpolicy\fR, where policy is one of \fBHighSecurity\fR, \fBMediumSecurity\fR, \fBLowSecurity\fR, \fBAlmostNoSecurity\fR, or \fBNoSecurity\fR\. For more details, please see the Rubygems signing documentation linked below in \fISEE ALSO\fR\. .TP \fB\-\-with=\fR A space\-separated list of groups referencing gems to install\. If an optional group is given it is installed\. If a group is given that is in the remembered list of groups given to \-\-without, it is removed from that list\. .IP This option is deprecated in favor of the \fBwith\fR setting\. .TP \fB\-\-without=\fR A space\-separated list of groups referencing gems to skip during installation\. If a group is given that is in the remembered list of groups given to \-\-with, it is removed from that list\. .IP This option is deprecated in favor of the \fBwithout\fR setting\. .SH "DEPLOYMENT MODE" Bundler's defaults are optimized for development\. To switch to defaults optimized for deployment and for CI, use the \fB\-\-deployment\fR flag\. Do not activate deployment mode on development machines, as it will cause an error when the Gemfile(5) is modified\. .IP "1." 4 A \fBGemfile\.lock\fR is required\. .IP To ensure that the same versions of the gems you developed with and tested with are also used in deployments, a \fBGemfile\.lock\fR is required\. .IP This is mainly to ensure that you remember to check your \fBGemfile\.lock\fR into version control\. .IP "2." 4 The \fBGemfile\.lock\fR must be up to date .IP In development, you can modify your Gemfile(5) and re\-run \fBbundle install\fR to \fIconservatively update\fR your \fBGemfile\.lock\fR snapshot\. .IP In deployment, your \fBGemfile\.lock\fR should be up\-to\-date with changes made in your Gemfile(5)\. .IP "3." 4 Gems are installed to \fBvendor/bundle\fR not your default system location .IP In development, it's convenient to share the gems used in your application with other applications and other scripts that run on the system\. .IP In deployment, isolation is a more important default\. In addition, the user deploying the application may not have permission to install gems to the system, or the web server may not have permission to read them\. .IP As a result, \fBbundle install \-\-deployment\fR installs gems to the \fBvendor/bundle\fR directory in the application\. This may be overridden using the \fB\-\-path\fR option\. .IP "" 0 .SH "INSTALLING GROUPS" By default, \fBbundle install\fR will install all gems in all groups in your Gemfile(5), except those declared for a different platform\. .P However, you can explicitly tell Bundler to skip installing certain groups with the \fB\-\-without\fR option\. This option takes a space\-separated list of groups\. .P While the \fB\-\-without\fR option will skip \fIinstalling\fR the gems in the specified groups, it will still \fIdownload\fR those gems and use them to resolve the dependencies of every gem in your Gemfile(5)\. .P This is so that installing a different set of groups on another machine (such as a production server) will not change the gems and versions that you have already developed and tested against\. .P \fBBundler offers a rock\-solid guarantee that the third\-party code you are running in development and testing is also the third\-party code you are running in production\. You can choose to exclude some of that code in different environments, but you will never be caught flat\-footed by different versions of third\-party code being used in different environments\.\fR .P For a simple illustration, consider the following Gemfile(5): .IP "" 4 .nf source 'https://rubygems\.org' gem 'sinatra' group :production do gem 'rack\-perftools\-profiler' end .fi .IP "" 0 .P In this case, \fBsinatra\fR depends on any version of Rack (\fB>= 1\.0\fR), while \fBrack\-perftools\-profiler\fR depends on 1\.x (\fB~> 1\.0\fR)\. .P When you run \fBbundle install \-\-without production\fR in development, we look at the dependencies of \fBrack\-perftools\-profiler\fR as well\. That way, you do not spend all your time developing against Rack 2\.0, using new APIs unavailable in Rack 1\.x, only to have Bundler switch to Rack 1\.2 when the \fBproduction\fR group \fIis\fR used\. .P This should not cause any problems in practice, because we do not attempt to \fBinstall\fR the gems in the excluded groups, and only evaluate as part of the dependency resolution process\. .P This also means that you cannot include different versions of the same gem in different groups, because doing so would result in different sets of dependencies used in development and production\. Because of the vagaries of the dependency resolution process, this usually affects more than the gems you list in your Gemfile(5), and can (surprisingly) radically change the gems you are using\. .SH "THE GEMFILE\.LOCK" When you run \fBbundle install\fR, Bundler will persist the full names and versions of all gems that you used (including dependencies of the gems specified in the Gemfile(5)) into a file called \fBGemfile\.lock\fR\. .P Bundler uses this file in all subsequent calls to \fBbundle install\fR, which guarantees that you always use the same exact code, even as your application moves across machines\. .P Because of the way dependency resolution works, even a seemingly small change (for instance, an update to a point\-release of a dependency of a gem in your Gemfile(5)) can result in radically different gems being needed to satisfy all dependencies\. .P As a result, you \fBSHOULD\fR check your \fBGemfile\.lock\fR into version control, in both applications and gems\. If you do not, every machine that checks out your repository (including your production server) will resolve all dependencies again, which will result in different versions of third\-party code being used if \fBany\fR of the gems in the Gemfile(5) or any of their dependencies have been updated\. .P When Bundler first shipped, the \fBGemfile\.lock\fR was included in the \fB\.gitignore\fR file included with generated gems\. Over time, however, it became clear that this practice forces the pain of broken dependencies onto new contributors, while leaving existing contributors potentially unaware of the problem\. Since \fBbundle install\fR is usually the first step towards a contribution, the pain of broken dependencies would discourage new contributors from contributing\. As a result, we have revised our guidance for gem authors to now recommend checking in the lock for gems\. .SH "CONSERVATIVE UPDATING" When you make a change to the Gemfile(5) and then run \fBbundle install\fR, Bundler will update only the gems that you modified\. .P In other words, if a gem that you \fBdid not modify\fR worked before you called \fBbundle install\fR, it will continue to use the exact same versions of all dependencies as it used before the update\. .P Let's take a look at an example\. Here's your original Gemfile(5): .IP "" 4 .nf source 'https://rubygems\.org' gem 'actionpack', '2\.3\.8' gem 'activemerchant' .fi .IP "" 0 .P In this case, both \fBactionpack\fR and \fBactivemerchant\fR depend on \fBactivesupport\fR\. The \fBactionpack\fR gem depends on \fBactivesupport 2\.3\.8\fR and \fBrack ~> 1\.1\.0\fR, while the \fBactivemerchant\fR gem depends on \fBactivesupport >= 2\.3\.2\fR, \fBbraintree >= 2\.0\.0\fR, and \fBbuilder >= 2\.0\.0\fR\. .P When the dependencies are first resolved, Bundler will select \fBactivesupport 2\.3\.8\fR, which satisfies the requirements of both gems in your Gemfile(5)\. .P Next, you modify your Gemfile(5) to: .IP "" 4 .nf source 'https://rubygems\.org' gem 'actionpack', '3\.0\.0\.rc' gem 'activemerchant' .fi .IP "" 0 .P The \fBactionpack 3\.0\.0\.rc\fR gem has a number of new dependencies, and updates the \fBactivesupport\fR dependency to \fB= 3\.0\.0\.rc\fR and the \fBrack\fR dependency to \fB~> 1\.2\.1\fR\. .P When you run \fBbundle install\fR, Bundler notices that you changed the \fBactionpack\fR gem, but not the \fBactivemerchant\fR gem\. It evaluates the gems currently being used to satisfy its requirements: .TP \fBactivesupport 2\.3\.8\fR also used to satisfy a dependency in \fBactivemerchant\fR, which is not being updated .TP \fBrack ~> 1\.1\.0\fR not currently being used to satisfy another dependency .P Because you did not explicitly ask to update \fBactivemerchant\fR, you would not expect it to suddenly stop working after updating \fBactionpack\fR\. However, satisfying the new \fBactivesupport 3\.0\.0\.rc\fR dependency of actionpack requires updating one of its dependencies\. .P Even though \fBactivemerchant\fR declares a very loose dependency that theoretically matches \fBactivesupport 3\.0\.0\.rc\fR, Bundler treats gems in your Gemfile(5) that have not changed as an atomic unit together with their dependencies\. In this case, the \fBactivemerchant\fR dependency is treated as \fBactivemerchant 1\.7\.1 + activesupport 2\.3\.8\fR, so \fBbundle install\fR will report that it cannot update \fBactionpack\fR\. .P To explicitly update \fBactionpack\fR, including its dependencies which other gems in the Gemfile(5) still depend on, run \fBbundle update actionpack\fR (see \fBbundle update(1)\fR)\. .P \fBSummary\fR: In general, after making a change to the Gemfile(5) , you should first try to run \fBbundle install\fR, which will guarantee that no other gem in the Gemfile(5) is impacted by the change\. If that does not work, run bundle update(1) \fIbundle\-update\.1\.html\fR\. .SH "SEE ALSO" .IP "\(bu" 4 Gem install docs \fIhttps://guides\.rubygems\.org/rubygems\-basics/#installing\-gems\fR .IP "\(bu" 4 Rubygems signing docs \fIhttps://guides\.rubygems\.org/security/\fR .IP "" 0 PK!odbundle-clean.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-CLEAN" "1" "September 2024" "" .SH "NAME" \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory .SH "SYNOPSIS" \fBbundle clean\fR [\-\-dry\-run] [\-\-force] .SH "DESCRIPTION" This command will remove all unused gems in your bundler directory\. This is useful when you have made many changes to your gem dependencies\. .SH "OPTIONS" .TP \fB\-\-dry\-run\fR Print the changes, but do not clean the unused gems\. .TP \fB\-\-force\fR Forces cleaning up unused gems even if Bundler is configured to use globally installed gems\. As a consequence, removes all system gems except for the ones in the current application\. PK!g& bundle-outdated.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-OUTDATED" "1" "September 2024" "" .SH "NAME" \fBbundle\-outdated\fR \- List installed gems with newer versions available .SH "SYNOPSIS" \fBbundle outdated\fR [GEM] [\-\-local] [\-\-pre] [\-\-source] [\-\-strict] [\-\-parseable | \-\-porcelain] [\-\-group=GROUP] [\-\-groups] [\-\-patch|\-\-minor|\-\-major] [\-\-filter\-major] [\-\-filter\-minor] [\-\-filter\-patch] [\-\-only\-explicit] .SH "DESCRIPTION" Outdated lists the names and versions of gems that have a newer version available in the given source\. Calling outdated with [GEM [GEM]] will only check for newer versions of the given gems\. Prerelease gems are ignored by default\. If your gems are up to date, Bundler will exit with a status of 0\. Otherwise, it will exit 1\. .SH "OPTIONS" .TP \fB\-\-local\fR Do not attempt to fetch gems remotely and use the gem cache instead\. .TP \fB\-\-pre\fR Check for newer pre\-release gems\. .TP \fB\-\-source\fR Check against a specific source\. .TP \fB\-\-strict\fR Only list newer versions allowed by your Gemfile requirements, also respecting conservative update flags (\-\-patch, \-\-minor, \-\-major)\. .TP \fB\-\-parseable\fR, \fB\-\-porcelain\fR Use minimal formatting for more parseable output\. .TP \fB\-\-group\fR List gems from a specific group\. .TP \fB\-\-groups\fR List gems organized by groups\. .TP \fB\-\-minor\fR Prefer updating only to next minor version\. .TP \fB\-\-major\fR Prefer updating to next major version (default)\. .TP \fB\-\-patch\fR Prefer updating only to next patch version\. .TP \fB\-\-filter\-major\fR Only list major newer versions\. .TP \fB\-\-filter\-minor\fR Only list minor newer versions\. .TP \fB\-\-filter\-patch\fR Only list patch newer versions\. .TP \fB\-\-only\-explicit\fR Only list gems specified in your Gemfile, not their dependencies\. .SH "PATCH LEVEL OPTIONS" See bundle update(1) \fIbundle\-update\.1\.html\fR for details\. .SH "FILTERING OUTPUT" The 3 filtering options do not affect the resolution of versions, merely what versions are shown in the output\. .P If the regular output shows the following: .IP "" 4 .nf * Gem Current Latest Requested Groups * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test .fi .IP "" 0 .P \fB\-\-filter\-major\fR would only show: .IP "" 4 .nf * Gem Current Latest Requested Groups * hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default .fi .IP "" 0 .P \fB\-\-filter\-minor\fR would only show: .IP "" 4 .nf * Gem Current Latest Requested Groups * headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test .fi .IP "" 0 .P \fB\-\-filter\-patch\fR would only show: .IP "" 4 .nf * Gem Current Latest Requested Groups * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test .fi .IP "" 0 .P Filter options can be combined\. \fB\-\-filter\-minor\fR and \fB\-\-filter\-patch\fR would show: .IP "" 4 .nf * Gem Current Latest Requested Groups * faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test .fi .IP "" 0 .P Combining all three \fBfilter\fR options would be the same result as providing none of them\. PK! bundle-add.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-ADD" "1" "September 2024" "" .SH "NAME" \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install .SH "SYNOPSIS" \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-path=PATH] [\-\-git=GIT|\-\-github=GITHUB] [\-\-branch=BRANCH] [\-\-ref=REF] [\-\-skip\-install] [\-\-strict|\-\-optimistic] .SH "DESCRIPTION" Adds the named gem to the [\fBGemfile(5)\fR][Gemfile(5)] and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\. .SH "OPTIONS" .TP \fB\-\-version\fR, \fB\-v\fR Specify version requirements(s) for the added gem\. .TP \fB\-\-group\fR, \fB\-g\fR Specify the group(s) for the added gem\. Multiple groups should be separated by commas\. .TP \fB\-\-source\fR, \fB\-s\fR Specify the source for the added gem\. .TP \fB\-\-require\fR, \fB\-r\fR Adds require path to gem\. Provide false, or a path as a string\. .TP \fB\-\-path\fR Specify the file system path for the added gem\. .TP \fB\-\-git\fR Specify the git source for the added gem\. .TP \fB\-\-github\fR Specify the github source for the added gem\. .TP \fB\-\-branch\fR Specify the git branch for the added gem\. .TP \fB\-\-ref\fR Specify the git ref for the added gem\. .TP \fB\-\-skip\-install\fR Adds the gem to the Gemfile but does not install it\. .TP \fB\-\-optimistic\fR Adds optimistic declaration of version\. .TP \fB\-\-strict\fR Adds strict declaration of version\. .SH "EXAMPLES" .IP "1." 4 You can add the \fBrails\fR gem to the Gemfile without any version restriction\. The source of the gem will be the global source\. .IP \fBbundle add rails\fR .IP "2." 4 You can add the \fBrails\fR gem with version greater than 1\.1 (not including 1\.1) and less than 3\.0\. .IP \fBbundle add rails \-\-version "> 1\.1, < 3\.0"\fR .IP "3." 4 You can use the \fBhttps://gems\.example\.com\fR custom source and assign the gem to a group\. .IP \fBbundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"\fR .IP "4." 4 The following adds the \fBgem\fR entry to the Gemfile without installing the gem\. You can install gems later via \fBbundle install\fR\. .IP \fBbundle add rails \-\-skip\-install\fR .IP "5." 4 You can assign the gem to more than one group\. .IP \fBbundle add rails \-\-group "development, test"\fR .IP "" 0 .SH "SEE ALSO" Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR, bundle\-remove(1) \fIbundle\-remove\.1\.html\fR PK!G" erb.1nu[.\"Ruby is copyrighted by Yukihiro Matsumoto . .Dd November 7, 2012 .Dt ERB(1) "" "Ruby Programmers Reference Guide" .Os UNIX .Sh NAME .Nm erb .Nd Ruby Templating .Sh SYNOPSIS .Nm .Op Fl -version .Op Fl UPdnvx .Op Fl E Ar ext Ns Op Ns : Ns int .Op Fl S Ar level .Op Fl T Ar mode .Op Fl r Ar library .Op Fl - .Op file ... .Pp .Sh DESCRIPTION .Nm is a command line front-end for .Li "ERB" library, which is an implementation of eRuby. .Pp ERB provides an easy to use but powerful templating system for Ruby. Using ERB, actual Ruby code can be added to any plain text document for the purposes of generating document information details and/or flow control. .Pp .Nm is a part of .Nm Ruby . .Pp .Sh OPTIONS .Bl -tag -width "1234567890123" -compact .Pp .It Fl -version Prints the version of .Nm . .Pp .It Fl E Ar external Ns Op : Ns Ar internal .It Fl -encoding Ar external Ns Op : Ns Ar internal Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). .Pp You can omit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp .It Fl P Evaluates lines starting with .Li "%" as Ruby code and removes the tailing EOLs. .Pp .It Fl S Ar level Specifies the safe level in which eRuby script will run. .Pp .It Fl T Ar mode Specifies trim mode (default 0). .Ar mode can be one of .Bl -hang -offset indent .It Sy 0 EOL remains after the embedded ruby script is evaluated. .Pp .It Sy 1 EOL is removed if the line ends with .Li "%>" . .Pp .It Sy 2 EOL is removed if the line starts with .Li "<%" and ends with .Li "%>" . .Pp .It Sy - EOL is removed if the line ends with .Li "-%>" . And leading whitespaces are removed if the erb directive starts with .Li "<%-" . .Pp .El .Pp .It Fl U can be one of Sets the default value for internal encodings .Pf ( Li "Encoding.default_internal" ) to UTF-8. .Pp .It Fl d .It Fl -debug Turns on debug mode. .Li "$DEBUG" will be set to true. .Pp .It Fl h .It Fl -help Prints a summary of the options. .Pp .It Fl n Used with .Fl x . Prepends the line number to each line in the output. .Pp .It Fl v Enables verbose mode. .Li "$VERBOSE" will be set to true. .Pp .It Fl x Converts the eRuby script into Ruby script and prints it without line numbers. .Pp .El .Pp .Sh EXAMPLES Here is an eRuby script .Bd -literal -offset indent <% require 'prime' -%> <%= 1+1 %> <%= __FILE__ %> <%= Prime.each(10).to_a.join(", ") %> .Ed .Pp Command .Dl "% erb -T - example.erb" prints .Bd -literal -offset indent 2 example.erb 2, 3, 5, 7 .Ed .Pp .Sh SEE ALSO .Xr ruby 1 . .Pp And see .Xr ri 1 documentation for .Li "ERB" class. .Pp .Sh REPORTING BUGS .Bl -bullet .Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after being fixed. .Pp .Li And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://bugs.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immediately. .El .Sh AUTHORS Written by Masatoshi SEKI. PK!}/rake.1nu[.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH RAKE 1 "August 27, 2014" "rake 10.3.2" "Rake User Commands" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME rake \- a make-like build utility for Ruby .SH SYNOPSIS \fBrake\fR [\fI\-f rakefile\fR] {\fIOPTIONS\fR} \fITARGETS...\fR .br .SH DESCRIPTION .B rake is a make-like build utility for Ruby. Tasks and dependencies are specified in standard Ruby syntax. .SH OPTIONS .TP \fB\-m\fR, \fB\-\-multitask\fR Treat all tasks as multitasks. .TP \fB\-B\fR, \fB\-\-build\-all\fR Build all prerequisites, including those which are up\-to\-date. .TP \fB\-j\fR, \fB\-\-jobs\fR [\fINUMBER\fR] Specifies the maximum number of tasks to execute in parallel (default is number of CPU cores + 4). .SS Modules .TP \fB\-I\fR, \fB\-\-libdir\fR \fILIBDIR\fR Include \fILIBDIR\fR in the search path for required modules. .TP \fB\-r\fR, \fB\-\-require\fR \fIMODULE\fR Require \fIMODULE\fR before executing rakefile. .SS Rakefile location .TP \fB\-f\fR, \fB\-\-rakefile\fR [\fIFILENAME\fR] Use \fIFILENAME\fR as the rakefile to search for. .TP \fB\-N\fR, \fB\-\-no\-search\fR, \fB\-\-nosearch\fR Do not search parent directories for the Rakefile. .TP \fB\-G\fR, \fB\-\-no\-system\fR, \fB\-\-nosystem\fR Use standard project Rakefile search paths, ignore system wide rakefiles. .TP \fB\-R\fR, \fB\-\-rakelibdir\fR \fIRAKELIBDIR\fR Auto\-import any .rake files in \fIRAKELIBDIR\fR (default is 'rakelib') .HP \fB\-\-rakelib\fR .TP \fB\-g\fR, \fB\-\-system\fR Using system wide (global) rakefiles (usually '\fI~/.rake/*.rake\fR'). .SS Debugging .TP \fB\-\-backtrace\fR=\fI\,[OUT]\/\fR Enable full backtrace. \fIOUT\fR can be stderr (default) or stdout. .TP \fB\-t\fR, \fB\-\-trace\fR=\fI\,[OUT]\/\fR Turn on invoke/execute tracing, enable full backtrace. \fIOUT\fR can be stderr (default) or stdout. .TP \fB\-\-suppress\-backtrace\fR \fIPATTERN\fR Suppress backtrace lines matching regexp \fIPATTERN\fR. Ignored if \fI\-\-trace\fR is on. .TP \fB\-\-rules\fR Trace the rules resolution. .TP \fB\-n\fR, \fB\-\-dry\-run\fR Do a dry run without executing actions. .TP \fB\-T\fR, \fB\-\-tasks\fR [\fIPATTERN\fR] Display the tasks (matching optional \fIPATTERN\fR) with descriptions, then exit. .TP \fB\-D\fR, \fB\-\-describe\fR [\fIPATTERN\fR] Describe the tasks (matching optional \fIPATTERN\fR), then exit. .TP \fB\-W\fR, \fB\-\-where\fR [\fIPATTERN\fR] Describe the tasks (matching optional \fIPATTERN\fR), then exit. .TP \fB\-P\fR, \fB\-\-prereqs\fR Display the tasks and dependencies, then exit. .TP \fB\-e\fR, \fB\-\-execute\fR \fICODE\fR Execute some Ruby code and exit. .TP \fB\-p\fR, \fB\-\-execute\-print\fR \fICODE\fR Execute some Ruby code, print the result, then exit. .TP \fB\-E\fR, \fB\-\-execute\-continue\fR \fICODE\fR Execute some Ruby code, then continue with normal task processing. .SS Information .TP \fB\-v\fR, \fB\-\-verbose\fR Log message to standard output. .TP \fB\-q\fR, \fB\-\-quiet\fR Do not log messages to standard output. .TP \fB\-s\fR, \fB\-\-silent\fR Like \fB\-\-quiet\fR, but also suppresses the 'in directory' announcement. .TP \fB\-X\fR, \fB\-\-no\-deprecation\-warnings\fR Disable the deprecation warnings. .TP \fB\-\-comments\fR Show commented tasks only .TP \fB\-A\fR, \fB\-\-all\fR Show all tasks, even uncommented ones (in combination with \fB\-T\fR or \fB\-D\fR) .TP \fB\-\-job\-stats\fR [\fILEVEL\fR] Display job statistics. \fILEVEL=history\fR displays a complete job list .TP \fB\-V\fR, \fB\-\-version\fR Display the program version. .TP \fB\-h\fR, \fB\-H\fR, \fB\-\-help\fR Display a help message. .SH SEE ALSO The complete documentation for \fBrake\fR has been installed at \fI/usr/share/doc/rake-doc/html/index.html\fR. It is also available online at \fIhttp://docs.seattlerb.org/rake\fR. .SH AUTHOR .B rake was written by Jim Weirich .PP This manual was created by Caitlin Matos for the Debian project (but may be used by others). It was inspired by the manual by Jani Monoses for the Ubuntu project. PK!%y bundle-exec.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-EXEC" "1" "September 2024" "" .SH "NAME" \fBbundle\-exec\fR \- Execute a command in the context of the bundle .SH "SYNOPSIS" \fBbundle exec\fR [\-\-keep\-file\-descriptors] \fIcommand\fR .SH "DESCRIPTION" This command executes the command, making all gems specified in the [\fBGemfile(5)\fR][Gemfile(5)] available to \fBrequire\fR in Ruby programs\. .P Essentially, if you would normally have run something like \fBrspec spec/my_spec\.rb\fR, and you want to use the gems specified in the [\fBGemfile(5)\fR][Gemfile(5)] and installed via bundle install(1) \fIbundle\-install\.1\.html\fR, you should run \fBbundle exec rspec spec/my_spec\.rb\fR\. .P Note that \fBbundle exec\fR does not require that an executable is available on your shell's \fB$PATH\fR\. .SH "OPTIONS" .TP \fB\-\-keep\-file\-descriptors\fR Passes all file descriptors to the new processes\. Default is true from bundler version 2\.2\.26\. Setting it to false is now deprecated\. .SH "BUNDLE INSTALL \-\-BINSTUBS" If you use the \fB\-\-binstubs\fR flag in bundle install(1) \fIbundle\-install\.1\.html\fR, Bundler will automatically create a directory (which defaults to \fBapp_root/bin\fR) containing all of the executables available from gems in the bundle\. .P After using \fB\-\-binstubs\fR, \fBbin/rspec spec/my_spec\.rb\fR is identical to \fBbundle exec rspec spec/my_spec\.rb\fR\. .SH "ENVIRONMENT MODIFICATIONS" \fBbundle exec\fR makes a number of changes to the shell environment, then executes the command you specify in full\. .IP "\(bu" 4 make sure that it's still possible to shell out to \fBbundle\fR from inside a command invoked by \fBbundle exec\fR (using \fB$BUNDLE_BIN_PATH\fR) .IP "\(bu" 4 put the directory containing executables (like \fBrails\fR, \fBrspec\fR, \fBrackup\fR) for your bundle on \fB$PATH\fR .IP "\(bu" 4 make sure that if bundler is invoked in the subshell, it uses the same \fBGemfile\fR (by setting \fBBUNDLE_GEMFILE\fR) .IP "\(bu" 4 add \fB\-rbundler/setup\fR to \fB$RUBYOPT\fR, which makes sure that Ruby programs invoked in the subshell can see the gems in the bundle .IP "" 0 .P It also modifies Rubygems: .IP "\(bu" 4 disallow loading additional gems not in the bundle .IP "\(bu" 4 modify the \fBgem\fR method to be a no\-op if a gem matching the requirements is in the bundle, and to raise a \fBGem::LoadError\fR if it's not .IP "\(bu" 4 Define \fBGem\.refresh\fR to be a no\-op, since the source index is always frozen when using bundler, and to prevent gems from the system leaking into the environment .IP "\(bu" 4 Override \fBGem\.bin_path\fR to use the gems in the bundle, making system executables work .IP "\(bu" 4 Add all gems in the bundle into Gem\.loaded_specs .IP "" 0 .P Finally, \fBbundle exec\fR also implicitly modifies \fBGemfile\.lock\fR if the lockfile and the Gemfile do not match\. Bundler needs the Gemfile to determine things such as a gem's groups, \fBautorequire\fR, and platforms, etc\., and that information isn't stored in the lockfile\. The Gemfile and lockfile must be synced in order to \fBbundle exec\fR successfully, so \fBbundle exec\fR updates the lockfile beforehand\. .SS "Loading" By default, when attempting to \fBbundle exec\fR to a file with a ruby shebang, Bundler will \fBKernel\.load\fR that file instead of using \fBKernel\.exec\fR\. For the vast majority of cases, this is a performance improvement\. In a rare few cases, this could cause some subtle side\-effects (such as dependence on the exact contents of \fB$0\fR or \fB__FILE__\fR) and the optimization can be disabled by enabling the \fBdisable_exec_load\fR setting\. .SS "Shelling out" Any Ruby code that opens a subshell (like \fBsystem\fR, backticks, or \fB%x{}\fR) will automatically use the current Bundler environment\. If you need to shell out to a Ruby command that is not part of your current bundle, use the \fBwith_unbundled_env\fR method with a block\. Any subshells created inside the block will be given the environment present before Bundler was activated\. For example, Homebrew commands run Ruby, but don't work inside a bundle: .IP "" 4 .nf Bundler\.with_unbundled_env do `brew install wget` end .fi .IP "" 0 .P Using \fBwith_unbundled_env\fR is also necessary if you are shelling out to a different bundle\. Any Bundler commands run in a subshell will inherit the current Gemfile, so commands that need to run in the context of a different bundle also need to use \fBwith_unbundled_env\fR\. .IP "" 4 .nf Bundler\.with_unbundled_env do Dir\.chdir "/other/bundler/project" do `bundle exec \./script` end end .fi .IP "" 0 .P Bundler provides convenience helpers that wrap \fBsystem\fR and \fBexec\fR, and they can be used like this: .IP "" 4 .nf Bundler\.clean_system('brew install wget') Bundler\.clean_exec('brew install wget') .fi .IP "" 0 .SH "RUBYGEMS PLUGINS" At present, the Rubygems plugin system requires all files named \fBrubygems_plugin\.rb\fR on the load path of \fIany\fR installed gem when any Ruby code requires \fBrubygems\.rb\fR\. This includes executables installed into the system, like \fBrails\fR, \fBrackup\fR, and \fBrspec\fR\. .P Since Rubygems plugins can contain arbitrary Ruby code, they commonly end up activating themselves or their dependencies\. .P For instance, the \fBgemcutter 0\.5\fR gem depended on \fBjson_pure\fR\. If you had that version of gemcutter installed (even if you \fIalso\fR had a newer version without this problem), Rubygems would activate \fBgemcutter 0\.5\fR and \fBjson_pure \fR\. .P If your Gemfile(5) also contained \fBjson_pure\fR (or a gem with a dependency on \fBjson_pure\fR), the latest version on your system might conflict with the version in your Gemfile(5), or the snapshot version in your \fBGemfile\.lock\fR\. .P If this happens, bundler will say: .IP "" 4 .nf You have already activated json_pure 1\.4\.6 but your Gemfile requires json_pure 1\.4\.3\. Consider using bundle exec\. .fi .IP "" 0 .P In this situation, you almost certainly want to remove the underlying gem with the problematic gem plugin\. In general, the authors of these plugins (in this case, the \fBgemcutter\fR gem) have released newer versions that are more careful in their plugins\. .P You can find a list of all the gems containing gem plugins by running .IP "" 4 .nf ruby \-e "puts Gem\.find_files('rubygems_plugin\.rb')" .fi .IP "" 0 .P At the very least, you should remove all but the newest version of each gem plugin, and also remove all gem plugins that you aren't using (\fBgem uninstall gem_name\fR)\. PK!:# bundle-help.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-HELP" "1" "September 2024" "" .SH "NAME" \fBbundle\-help\fR \- Displays detailed help for each subcommand .SH "SYNOPSIS" \fBbundle help\fR [COMMAND] .SH "DESCRIPTION" Displays detailed help for the given subcommand\. You can specify a single \fBCOMMAND\fR at the same time\. When \fBCOMMAND\fR is omitted, help for \fBhelp\fR command will be displayed\. PK!SkGGbundle-check.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-CHECK" "1" "September 2024" "" .SH "NAME" \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems .SH "SYNOPSIS" \fBbundle check\fR [\-\-dry\-run] [\-\-gemfile=FILE] [\-\-path=PATH] .SH "DESCRIPTION" \fBcheck\fR searches the local machine for each of the gems requested in the Gemfile\. If all gems are found, Bundler prints a success message and exits with a status of 0\. .P If not, the first missing gem is listed and Bundler exits status 1\. .P If the lockfile needs to be updated then it will be resolved using the gems installed on the local machine, if they satisfy the requirements\. .SH "OPTIONS" .TP \fB\-\-dry\-run\fR Locks the [\fBGemfile(5)\fR][Gemfile(5)] before running the command\. .TP \fB\-\-gemfile\fR Use the specified gemfile instead of the [\fBGemfile(5)\fR][Gemfile(5)]\. .TP \fB\-\-path\fR Specify a different path than the system default (\fB$BUNDLE_PATH\fR or \fB$GEM_HOME\fR)\. Bundler will remember this value for future installs on this machine\. PK!_dYbundle.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE" "1" "September 2024" "" .SH "NAME" \fBbundle\fR \- Ruby Dependency Management .SH "SYNOPSIS" \fBbundle\fR COMMAND [\-\-no\-color] [\-\-verbose] [ARGS] .SH "DESCRIPTION" Bundler manages an \fBapplication's dependencies\fR through its entire life across many machines systematically and repeatably\. .P See the bundler website \fIhttps://bundler\.io\fR for information on getting started, and Gemfile(5) for more information on the \fBGemfile\fR format\. .SH "OPTIONS" .TP \fB\-\-no\-color\fR Print all output without color .TP \fB\-\-retry\fR, \fB\-r\fR Specify the number of times you wish to attempt network commands .TP \fB\-\-verbose\fR, \fB\-V\fR Print out additional logging information .SH "BUNDLE COMMANDS" We divide \fBbundle\fR subcommands into primary commands and utilities: .SH "PRIMARY COMMANDS" .TP \fBbundle install(1)\fR \fIbundle\-install\.1\.html\fR Install the gems specified by the \fBGemfile\fR or \fBGemfile\.lock\fR .TP \fBbundle update(1)\fR \fIbundle\-update\.1\.html\fR Update dependencies to their latest versions .TP \fBbundle cache(1)\fR \fIbundle\-cache\.1\.html\fR Package the \.gem files required by your application into the \fBvendor/cache\fR directory (aliases: \fBbundle package\fR, \fBbundle pack\fR) .TP \fBbundle exec(1)\fR \fIbundle\-exec\.1\.html\fR Execute a script in the current bundle .TP \fBbundle config(1)\fR \fIbundle\-config\.1\.html\fR Specify and read configuration options for Bundler .TP \fBbundle help(1)\fR \fIbundle\-help\.1\.html\fR Display detailed help for each subcommand .SH "UTILITIES" .TP \fBbundle add(1)\fR \fIbundle\-add\.1\.html\fR Add the named gem to the Gemfile and run \fBbundle install\fR .TP \fBbundle binstubs(1)\fR \fIbundle\-binstubs\.1\.html\fR Generate binstubs for executables in a gem .TP \fBbundle check(1)\fR \fIbundle\-check\.1\.html\fR Determine whether the requirements for your application are installed and available to Bundler .TP \fBbundle show(1)\fR \fIbundle\-show\.1\.html\fR Show the source location of a particular gem in the bundle .TP \fBbundle outdated(1)\fR \fIbundle\-outdated\.1\.html\fR Show all of the outdated gems in the current bundle .TP \fBbundle console(1)\fR (deprecated) Start an IRB session in the current bundle .TP \fBbundle open(1)\fR \fIbundle\-open\.1\.html\fR Open an installed gem in the editor .TP \fBbundle lock(1)\fR \fIbundle\-lock\.1\.html\fR Generate a lockfile for your dependencies .TP \fBbundle viz(1)\fR \fIbundle\-viz\.1\.html\fR (deprecated) Generate a visual representation of your dependencies .TP \fBbundle init(1)\fR \fIbundle\-init\.1\.html\fR Generate a simple \fBGemfile\fR, placed in the current directory .TP \fBbundle gem(1)\fR \fIbundle\-gem\.1\.html\fR Create a simple gem, suitable for development with Bundler .TP \fBbundle platform(1)\fR \fIbundle\-platform\.1\.html\fR Display platform compatibility information .TP \fBbundle clean(1)\fR \fIbundle\-clean\.1\.html\fR Clean up unused gems in your Bundler directory .TP \fBbundle doctor(1)\fR \fIbundle\-doctor\.1\.html\fR Display warnings about common problems .TP \fBbundle remove(1)\fR \fIbundle\-remove\.1\.html\fR Removes gems from the Gemfile .TP \fBbundle plugin(1)\fR \fIbundle\-plugin\.1\.html\fR Manage Bundler plugins .TP \fBbundle version(1)\fR \fIbundle\-version\.1\.html\fR Prints Bundler version information .SH "PLUGINS" When running a command that isn't listed in PRIMARY COMMANDS or UTILITIES, Bundler will try to find an executable on your path named \fBbundler\-\fR and execute it, passing down any extra arguments to it\. .SH "OBSOLETE" These commands are obsolete and should no longer be used: .IP "\(bu" 4 \fBbundle inject(1)\fR .IP "" 0 PK!¤wwbundle-console.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-CONSOLE" "1" "September 2024" "" .SH "NAME" \fBbundle\-console\fR \- Deprecated way to open an IRB session with the bundle pre\-loaded .SH "SYNOPSIS" \fBbundle console\fR [GROUP] .SH "DESCRIPTION" Starts an interactive Ruby console session in the context of the current bundle\. .P If no \fBGROUP\fR is specified, all gems in the \fBdefault\fR group in the Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR are preliminarily loaded\. .P If \fBGROUP\fR is specified, all gems in the given group in the Gemfile in addition to the gems in \fBdefault\fR group are loaded\. Even if the given group does not exist in the Gemfile, IRB console starts without any warning or error\. .P The environment variable \fBBUNDLE_CONSOLE\fR or \fBbundle config set console\fR can be used to change the shell from the following: .IP "\(bu" 4 \fBirb\fR (default) .IP "\(bu" 4 \fBpry\fR (https://github\.com/pry/pry) .IP "\(bu" 4 \fBripl\fR (https://github\.com/cldwalker/ripl) .IP "" 0 .P \fBbundle console\fR uses irb by default\. An alternative Pry or Ripl can be used with \fBbundle console\fR by adjusting the \fBconsole\fR Bundler setting\. Also make sure that \fBpry\fR or \fBripl\fR is in your Gemfile\. .SH "EXAMPLE" .nf $ bundle config set console pry $ bundle console Resolving dependencies\|\.\|\.\|\. [1] pry(main)> .fi .SH "NOTES" This command was deprecated in Bundler 2\.1 and will be removed in 3\.0\. Use \fBbin/console\fR script, which can be generated by \fBbundle gem \fR\. .SH "SEE ALSO" Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR PK!1A!~~ bundle-init.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-INIT" "1" "September 2024" "" .SH "NAME" \fBbundle\-init\fR \- Generates a Gemfile into the current working directory .SH "SYNOPSIS" \fBbundle init\fR [\-\-gemspec=FILE] .SH "DESCRIPTION" Init generates a default [\fBGemfile(5)\fR][Gemfile(5)] in the current working directory\. When adding a [\fBGemfile(5)\fR][Gemfile(5)] to a gem with a gemspec, the \fB\-\-gemspec\fR option will automatically add each dependency listed in the gemspec file to the newly created [\fBGemfile(5)\fR][Gemfile(5)]\. .SH "OPTIONS" .TP \fB\-\-gemspec\fR Use the specified \.gemspec to create the [\fBGemfile(5)\fR][Gemfile(5)] .TP \fB\-\-gemfile\fR Use the specified name for the gemfile instead of \fBGemfile\fR .SH "FILES" Included in the default [\fBGemfile(5)\fR][Gemfile(5)] generated is the line \fB# frozen_string_literal: true\fR\. This is a magic comment supported for the first time in Ruby 2\.3\. The presence of this line results in all string literals in the file being implicitly frozen\. .SH "SEE ALSO" Gemfile(5) \fIhttps://bundler\.io/man/gemfile\.5\.html\fR PK!: bundle-info.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-INFO" "1" "September 2024" "" .SH "NAME" \fBbundle\-info\fR \- Show information for the given gem in your bundle .SH "SYNOPSIS" \fBbundle info\fR [GEM_NAME] [\-\-path] .SH "DESCRIPTION" Given a gem name present in your bundle, print the basic information about it such as homepage, version, path and summary\. .SH "OPTIONS" .TP \fB\-\-path\fR Print the path of the given gem PK!좡DDbundle-remove.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-REMOVE" "1" "September 2024" "" .SH "NAME" \fBbundle\-remove\fR \- Removes gems from the Gemfile .SH "SYNOPSIS" \fBbundle remove [GEM [GEM \|\.\|\.\|\.]] [\-\-install]\fR .SH "DESCRIPTION" Removes the given gems from the Gemfile while ensuring that the resulting Gemfile is still valid\. If a gem cannot be removed, a warning is printed\. If a gem is already absent from the Gemfile, and error is raised\. .SH "OPTIONS" .TP \fB\-\-install\fR Runs \fBbundle install\fR after the given gems have been removed from the Gemfile, which ensures that both the lockfile and the installed gems on disk are also updated to remove the given gem(s)\. .P Example: .P bundle remove rails .P bundle remove rails rack .P bundle remove rails rack \-\-install PK!u  bundle-show.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-SHOW" "1" "September 2024" "" .SH "NAME" \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem .SH "SYNOPSIS" \fBbundle show\fR [GEM] [\-\-paths] .SH "DESCRIPTION" Without the [GEM] option, \fBshow\fR will print a list of the names and versions of all gems that are required by your [\fBGemfile(5)\fR][Gemfile(5)], sorted by name\. .P Calling show with [GEM] will list the exact location of that gem on your machine\. .SH "OPTIONS" .TP \fB\-\-paths\fR List the paths of all gems that are required by your [\fBGemfile(5)\fR][Gemfile(5)], sorted by gem name\. PK!O A77bundle-binstubs.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-BINSTUBS" "1" "September 2024" "" .SH "NAME" \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems .SH "SYNOPSIS" \fBbundle binstubs\fR \fIGEM_NAME\fR [\-\-force] [\-\-path PATH] [\-\-standalone] .SH "DESCRIPTION" Binstubs are scripts that wrap around executables\. Bundler creates a small Ruby file (a binstub) that loads Bundler, runs the command, and puts it into \fBbin/\fR\. Binstubs are a shortcut\-or alternative\- to always using \fBbundle exec\fR\. This gives you a file that can be run directly, and one that will always run the correct gem version used by the application\. .P For example, if you run \fBbundle binstubs rspec\-core\fR, Bundler will create the file \fBbin/rspec\fR\. That file will contain enough code to load Bundler, tell it to load the bundled gems, and then run rspec\. .P This command generates binstubs for executables in \fBGEM_NAME\fR\. Binstubs are put into \fBbin\fR, or the \fB\-\-path\fR directory if one has been set\. Calling binstubs with [GEM [GEM]] will create binstubs for all given gems\. .SH "OPTIONS" .TP \fB\-\-force\fR Overwrite existing binstubs if they exist\. .TP \fB\-\-path\fR The location to install the specified binstubs to\. This defaults to \fBbin\fR\. .TP \fB\-\-standalone\fR Makes binstubs that can work without depending on Rubygems or Bundler at runtime\. .TP \fB\-\-shebang\fR Specify a different shebang executable name than the default (default 'ruby') .TP \fB\-\-all\fR Create binstubs for all gems in the bundle\. PK!kCri.1nu[.\"Ruby is copyrighted by Yukihiro Matsumoto . .Dd November 7, 2012 .Dt RI(1) "" "Ruby Programmers Reference Guide" .Os UNIX .Sh NAME .Nm ri .Nd Ruby API reference front end .Sh SYNOPSIS .Nm .Op Fl Ti .Op Fl d Ar directory .Op Fl f Ar format .Op Fl -list-doc-dirs .Op Fl -no-standard-docs .Op Fl - Ns Oo Cm no- Oc Ns Bro Cm system Ns | Ns Cm site Ns | Ns Cm gems Ns | Ns Cm home Brc .Op Fl - Ns Oo Cm no- Oc Ns Cm use-cache .Op Fl -width Ns = Ns Ar width .Op Ar target ... .Sh DESCRIPTION .Nm is a CLI front end for the Ruby API reference. You can search and read API reference for classes and methods with .Nm . .Pp .Nm is a part of Ruby. .Pp .Ar target can be one of the following forms: .Bl -diag -offset indent .It Class for classes .It Class::method for class methods .It Class#method for instance methods .It Class.method for both class and instance methods .It method for both class and instance methods .El .Pp All class names may be abbreviated to their minimum unambiguous form. If a name is ambiguous, all valid options will be listed. .Pp For example: .Bd -literal -offset indent ri Fil ri File ri File.new ri zip .Ed .Pp Note that shell quoting may be required for method names containing punctuation: .Bd -literal -offset indent ri 'Array.[]' ri compact\! .Ed .Sh OPTIONS .Bl -tag -width "1234567890123" -compact .Pp .It Fl -version Prints the version of .Nm . .Pp .It Fl T .It Fl -no-pager Send output directly to stdout, rather than to a pager. .Pp .It Fl d Ar directory .It Fl -doc-dir Ns = Ns Ar directory List of directories from which to source documentation in addition to the standard directories. May be repeated. .Pp .It Fl f Ar FORMAT .It Fl -fmt Ar FORMAT .It Fl -format Ns = Ns FORMAT Format to use when displaying output: .Pp ansi, bs, html, plain, simple .Pp Use 'bs' (backspace) with most pager programs. To use ANSI, either disable the pager or tell the pager to allow control characters. .Pp .It Fl i .It Fl -interactive This makes .Nm go into interactive mode. .Pp When .Nm is in interactive mode it will allow the user to disambiguate lists of methods in case multiple methods match against a method search string. It also will allow the user to enter in a method name (with auto-completion, if readline is supported) when viewing a class. .Pp .It Fl -list-doc-dirs List the directories from which ri will source documentation on stdout and exit. .Pp .It Fl -no-standard-docs Do not include documentation from the Ruby standard library, .Pa site_lib , installed gems, or .Pa ~/.rdoc . .Pp Equivalent to specifying the options .Fl -no-system , Fl -no-site , Fl -no-gems , and .Fl -no-home . .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm system Include documentation from Ruby's standard library. Defaults to true. .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm site Include documentation from libraries installed in site_lib. Defaults to true. .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm gems Include documentation from RubyGems. Defaults to true. .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm home Include documentation stored in ~/.rdoc. Defaults to true. .Pp .It Fl - Ns Oo Cm no- Oc Ns Cm use-cache Whether or not to use .Nm Ns .Ns 's cache. True by default. .Pp .It Fl w Ar width .It Fl -width Ns = Ns Ar width Set the width of the output. .Pp .El .Pp .Sh ENVIRONMENT .Bl -tag -width "USERPROFILE" -compact .Pp .It Ev RI Additional options. .Pp .It Ev PAGER Used as the name of pager program for displaying. .Pp .It Ev HOME .It Ev USERPROFILE .It Ev HOMEPATH Path to user's home directory. .El .Pp .Sh FILES .Bl -tag -width "USERPROFILE" -compact .Pp .It Pa ~/.ri Caches recently referenced documents here. .Pp .It Pa ~/.rdoc Searches user-wide documents here. .Pp .El .Pp .Sh SEE ALSO .Xr ruby 1 .Xr rdoc 1 .Xr gem 1 .Pp .Sh REPORTING BUGS .Bl -bullet .Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after being fixed. .Pp .Li And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://bugs.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immediately. .El .Sh AUTHORS Written by Dave Thomas .Aq dave@pragmaticprogrammer.com PK!^ bundle-viz.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-VIZ" "1" "September 2024" "" .SH "NAME" \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile .SH "SYNOPSIS" \fBbundle viz\fR [\-\-file=FILE] [\-\-format=FORMAT] [\-\-requirements] [\-\-version] [\-\-without=GROUP GROUP] .SH "DESCRIPTION" \fBviz\fR generates a PNG file of the current \fBGemfile(5)\fR as a dependency graph\. \fBviz\fR requires the ruby\-graphviz gem (and its dependencies)\. .P The associated gems must also be installed via \fBbundle install(1)\fR \fIbundle\-install\.1\.html\fR\. .P \fBviz\fR command was deprecated in Bundler 2\.2\. Use bundler\-graph plugin \fIhttps://github\.com/rubygems/bundler\-graph\fR instead\. .SH "OPTIONS" .TP \fB\-\-file\fR, \fB\-f\fR The name to use for the generated file\. See \fB\-\-format\fR option .TP \fB\-\-format\fR, \fB\-F\fR This is output format option\. Supported format is png, jpg, svg, dot \|\.\|\.\|\. .TP \fB\-\-requirements\fR, \fB\-R\fR Set to show the version of each required dependency\. .TP \fB\-\-version\fR, \fB\-v\fR Set to show each gem version\. .TP \fB\-\-without\fR, \fB\-W\fR Exclude gems that are part of the specified named group\. PK!c:jjbundle-version.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-VERSION" "1" "September 2024" "" .SH "NAME" \fBbundle\-version\fR \- Prints Bundler version information .SH "SYNOPSIS" \fBbundle version\fR .SH "DESCRIPTION" Prints Bundler version information\. .SH "OPTIONS" No options\. .SH "EXAMPLE" Print the version of Bundler with build date and commit hash of the in the Git source\. .IP "" 4 .nf bundle version .fi .IP "" 0 .P shows \fBBundler version 2\.3\.21 (2022\-08\-24 commit d54be5fdd8)\fR for example\. .P cf\. \fBbundle \-\-version\fR shows \fBBundler version 2\.3\.21\fR\. PK!L qqbundle-doctor.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-DOCTOR" "1" "September 2024" "" .SH "NAME" \fBbundle\-doctor\fR \- Checks the bundle for common problems .SH "SYNOPSIS" \fBbundle doctor\fR [\-\-quiet] [\-\-gemfile=GEMFILE] .SH "DESCRIPTION" Checks your Gemfile and gem environment for common problems\. If issues are detected, Bundler prints them and exits status 1\. Otherwise, Bundler prints a success message and exits status 0\. .P Examples of common problems caught by bundle\-doctor include: .IP "\(bu" 4 Invalid Bundler settings .IP "\(bu" 4 Mismatched Ruby versions .IP "\(bu" 4 Mismatched platforms .IP "\(bu" 4 Uninstalled gems .IP "\(bu" 4 Missing dependencies .IP "" 0 .SH "OPTIONS" .TP \fB\-\-quiet\fR Only output warnings and errors\. .TP \fB\-\-gemfile=\fR The location of the Gemfile(5) which Bundler should use\. This defaults to a Gemfile(5) in the current working directory\. In general, Bundler will assume that the location of the Gemfile(5) is also the project's root and will try to find \fBGemfile\.lock\fR and \fBvendor/cache\fR relative to this location\. PK!tTTbundle-config.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-CONFIG" "1" "September 2024" "" .SH "NAME" \fBbundle\-config\fR \- Set bundler configuration options .SH "SYNOPSIS" \fBbundle config\fR list .br \fBbundle config\fR [get] NAME .br \fBbundle config\fR [set] NAME VALUE .br \fBbundle config\fR unset NAME .SH "DESCRIPTION" This command allows you to interact with Bundler's configuration system\. .P Bundler loads configuration settings in this order: .IP "1." 4 Local config (\fB/\.bundle/config\fR or \fB$BUNDLE_APP_CONFIG/config\fR) .IP "2." 4 Environmental variables (\fBENV\fR) .IP "3." 4 Global config (\fB~/\.bundle/config\fR) .IP "4." 4 Bundler default config .IP "" 0 .P Executing \fBbundle config list\fR will print a list of all bundler configuration for the current bundle, and where that configuration was set\. .P Executing \fBbundle config get \fR will print the value of that configuration setting, and where it was set\. .P Executing \fBbundle config set \fR defaults to setting \fBlocal\fR configuration if executing from within a local application, otherwise it will set \fBglobal\fR configuration\. See \fB\-\-local\fR and \fB\-\-global\fR options below\. .P Executing \fBbundle config set \-\-local \fR will set that configuration in the directory for the local application\. The configuration will be stored in \fB/\.bundle/config\fR\. If \fBBUNDLE_APP_CONFIG\fR is set, the configuration will be stored in \fB$BUNDLE_APP_CONFIG/config\fR\. .P Executing \fBbundle config set \-\-global \fR will set that configuration to the value specified for all bundles executed as the current user\. The configuration will be stored in \fB~/\.bundle/config\fR\. If \fIname\fR already is set, \fIname\fR will be overridden and user will be warned\. .P Executing \fBbundle config unset \fR will delete the configuration in both local and global sources\. .P Executing \fBbundle config unset \-\-global \fR will delete the configuration only from the user configuration\. .P Executing \fBbundle config unset \-\-local \fR will delete the configuration only from the local application\. .P Executing bundle with the \fBBUNDLE_IGNORE_CONFIG\fR environment variable set will cause it to ignore all configuration\. .SH "REMEMBERING OPTIONS" Flags passed to \fBbundle install\fR or the Bundler runtime, such as \fB\-\-path foo\fR or \fB\-\-without production\fR, are remembered between commands and saved to your local application's configuration (normally, \fB\./\.bundle/config\fR)\. .P However, this will be changed in bundler 3, so it's better not to rely on this behavior\. If these options must be remembered, it's better to set them using \fBbundle config\fR (e\.g\., \fBbundle config set \-\-local path foo\fR)\. .P The options that can be configured are: .TP \fBbin\fR Creates a directory (defaults to \fB~/bin\fR) and place any executables from the gem there\. These executables run in Bundler's context\. If used, you might add this directory to your environment's \fBPATH\fR variable\. For instance, if the \fBrails\fR gem comes with a \fBrails\fR executable, this flag will create a \fBbin/rails\fR executable that ensures that all referred dependencies will be resolved using the bundled gems\. .TP \fBdeployment\fR In deployment mode, Bundler will 'roll\-out' the bundle for \fBproduction\fR use\. Please check carefully if you want to have this option enabled in \fBdevelopment\fR or \fBtest\fR environments\. .TP \fBonly\fR A space\-separated list of groups to install only gems of the specified groups\. .TP \fBpath\fR The location to install the specified gems to\. This defaults to Rubygems' setting\. Bundler shares this location with Rubygems, \fBgem install \|\.\|\.\|\.\fR will have gem installed there, too\. Therefore, gems installed without a \fB\-\-path \|\.\|\.\|\.\fR setting will show up by calling \fBgem list\fR\. Accordingly, gems installed to other locations will not get listed\. .TP \fBwithout\fR A space\-separated list of groups referencing gems to skip during installation\. .TP \fBwith\fR A space\-separated list of \fBoptional\fR groups referencing gems to include during installation\. .SH "BUILD OPTIONS" You can use \fBbundle config\fR to give Bundler the flags to pass to the gem installer every time bundler tries to install a particular gem\. .P A very common example, the \fBmysql\fR gem, requires Snow Leopard users to pass configuration flags to \fBgem install\fR to specify where to find the \fBmysql_config\fR executable\. .IP "" 4 .nf gem install mysql \-\- \-\-with\-mysql\-config=/usr/local/mysql/bin/mysql_config .fi .IP "" 0 .P Since the specific location of that executable can change from machine to machine, you can specify these flags on a per\-machine basis\. .IP "" 4 .nf bundle config set \-\-global build\.mysql \-\-with\-mysql\-config=/usr/local/mysql/bin/mysql_config .fi .IP "" 0 .P After running this command, every time bundler needs to install the \fBmysql\fR gem, it will pass along the flags you specified\. .SH "CONFIGURATION KEYS" Configuration keys in bundler have two forms: the canonical form and the environment variable form\. .P For instance, passing the \fB\-\-without\fR flag to bundle install(1) \fIbundle\-install\.1\.html\fR prevents Bundler from installing certain groups specified in the Gemfile(5)\. Bundler persists this value in \fBapp/\.bundle/config\fR so that calls to \fBBundler\.setup\fR do not try to find gems from the \fBGemfile\fR that you didn't install\. Additionally, subsequent calls to bundle install(1) \fIbundle\-install\.1\.html\fR remember this setting and skip those groups\. .P The canonical form of this configuration is \fB"without"\fR\. To convert the canonical form to the environment variable form, capitalize it, and prepend \fBBUNDLE_\fR\. The environment variable form of \fB"without"\fR is \fBBUNDLE_WITHOUT\fR\. .P Any periods in the configuration keys must be replaced with two underscores when setting it via environment variables\. The configuration key \fBlocal\.rack\fR becomes the environment variable \fBBUNDLE_LOCAL__RACK\fR\. .SH "LIST OF AVAILABLE KEYS" The following is a list of all configuration keys and their purpose\. You can learn more about their operation in bundle install(1) \fIbundle\-install\.1\.html\fR\. .IP "\(bu" 4 \fBallow_offline_install\fR (\fBBUNDLE_ALLOW_OFFLINE_INSTALL\fR): Allow Bundler to use cached data when installing without network access\. .IP "\(bu" 4 \fBauto_clean_without_path\fR (\fBBUNDLE_AUTO_CLEAN_WITHOUT_PATH\fR): Automatically run \fBbundle clean\fR after installing when an explicit \fBpath\fR has not been set and Bundler is not installing into the system gems\. .IP "\(bu" 4 \fBauto_install\fR (\fBBUNDLE_AUTO_INSTALL\fR): Automatically run \fBbundle install\fR when gems are missing\. .IP "\(bu" 4 \fBbin\fR (\fBBUNDLE_BIN\fR): Install executables from gems in the bundle to the specified directory\. Defaults to \fBfalse\fR\. .IP "\(bu" 4 \fBcache_all\fR (\fBBUNDLE_CACHE_ALL\fR): Cache all gems, including path and git gems\. This needs to be explicitly configured on bundler 1 and bundler 2, but will be the default on bundler 3\. .IP "\(bu" 4 \fBcache_all_platforms\fR (\fBBUNDLE_CACHE_ALL_PLATFORMS\fR): Cache gems for all platforms\. .IP "\(bu" 4 \fBcache_path\fR (\fBBUNDLE_CACHE_PATH\fR): The directory that bundler will place cached gems in when running \fBbundle package\fR, and that bundler will look in when installing gems\. Defaults to \fBvendor/cache\fR\. .IP "\(bu" 4 \fBclean\fR (\fBBUNDLE_CLEAN\fR): Whether Bundler should run \fBbundle clean\fR automatically after \fBbundle install\fR\. .IP "\(bu" 4 \fBconsole\fR (\fBBUNDLE_CONSOLE\fR): The console that \fBbundle console\fR starts\. Defaults to \fBirb\fR\. .IP "\(bu" 4 \fBdefault_install_uses_path\fR (\fBBUNDLE_DEFAULT_INSTALL_USES_PATH\fR): Whether a \fBbundle install\fR without an explicit \fB\-\-path\fR argument defaults to installing gems in \fB\.bundle\fR\. .IP "\(bu" 4 \fBdeployment\fR (\fBBUNDLE_DEPLOYMENT\fR): Disallow changes to the \fBGemfile\fR\. When the \fBGemfile\fR is changed and the lockfile has not been updated, running Bundler commands will be blocked\. .IP "\(bu" 4 \fBdisable_checksum_validation\fR (\fBBUNDLE_DISABLE_CHECKSUM_VALIDATION\fR): Allow installing gems even if they do not match the checksum provided by RubyGems\. .IP "\(bu" 4 \fBdisable_exec_load\fR (\fBBUNDLE_DISABLE_EXEC_LOAD\fR): Stop Bundler from using \fBload\fR to launch an executable in\-process in \fBbundle exec\fR\. .IP "\(bu" 4 \fBdisable_local_branch_check\fR (\fBBUNDLE_DISABLE_LOCAL_BRANCH_CHECK\fR): Allow Bundler to use a local git override without a branch specified in the Gemfile\. .IP "\(bu" 4 \fBdisable_local_revision_check\fR (\fBBUNDLE_DISABLE_LOCAL_REVISION_CHECK\fR): Allow Bundler to use a local git override without checking if the revision present in the lockfile is present in the repository\. .IP "\(bu" 4 \fBdisable_shared_gems\fR (\fBBUNDLE_DISABLE_SHARED_GEMS\fR): Stop Bundler from accessing gems installed to RubyGems' normal location\. .IP "\(bu" 4 \fBdisable_version_check\fR (\fBBUNDLE_DISABLE_VERSION_CHECK\fR): Stop Bundler from checking if a newer Bundler version is available on rubygems\.org\. .IP "\(bu" 4 \fBforce_ruby_platform\fR (\fBBUNDLE_FORCE_RUBY_PLATFORM\fR): Ignore the current machine's platform and install only \fBruby\fR platform gems\. As a result, gems with native extensions will be compiled from source\. .IP "\(bu" 4 \fBfrozen\fR (\fBBUNDLE_FROZEN\fR): Disallow changes to the \fBGemfile\fR\. When the \fBGemfile\fR is changed and the lockfile has not been updated, running Bundler commands will be blocked\. Defaults to \fBtrue\fR when \fB\-\-deployment\fR is used\. .IP "\(bu" 4 \fBgem\.github_username\fR (\fBBUNDLE_GEM__GITHUB_USERNAME\fR): Sets a GitHub username or organization to be used in \fBREADME\fR file when you create a new gem via \fBbundle gem\fR command\. It can be overridden by passing an explicit \fB\-\-github\-username\fR flag to \fBbundle gem\fR\. .IP "\(bu" 4 \fBgem\.push_key\fR (\fBBUNDLE_GEM__PUSH_KEY\fR): Sets the \fB\-\-key\fR parameter for \fBgem push\fR when using the \fBrake release\fR command with a private gemstash server\. .IP "\(bu" 4 \fBgemfile\fR (\fBBUNDLE_GEMFILE\fR): The name of the file that bundler should use as the \fBGemfile\fR\. This location of this file also sets the root of the project, which is used to resolve relative paths in the \fBGemfile\fR, among other things\. By default, bundler will search up from the current working directory until it finds a \fBGemfile\fR\. .IP "\(bu" 4 \fBglobal_gem_cache\fR (\fBBUNDLE_GLOBAL_GEM_CACHE\fR): Whether Bundler should cache all gems globally, rather than locally to the installing Ruby installation\. .IP "\(bu" 4 \fBignore_funding_requests\fR (\fBBUNDLE_IGNORE_FUNDING_REQUESTS\fR): When set, no funding requests will be printed\. .IP "\(bu" 4 \fBignore_messages\fR (\fBBUNDLE_IGNORE_MESSAGES\fR): When set, no post install messages will be printed\. To silence a single gem, use dot notation like \fBignore_messages\.httparty true\fR\. .IP "\(bu" 4 \fBinit_gems_rb\fR (\fBBUNDLE_INIT_GEMS_RB\fR): Generate a \fBgems\.rb\fR instead of a \fBGemfile\fR when running \fBbundle init\fR\. .IP "\(bu" 4 \fBjobs\fR (\fBBUNDLE_JOBS\fR): The number of gems Bundler can install in parallel\. Defaults to the number of available processors\. .IP "\(bu" 4 \fBno_install\fR (\fBBUNDLE_NO_INSTALL\fR): Whether \fBbundle package\fR should skip installing gems\. .IP "\(bu" 4 \fBno_prune\fR (\fBBUNDLE_NO_PRUNE\fR): Whether Bundler should leave outdated gems unpruned when caching\. .IP "\(bu" 4 \fBonly\fR (\fBBUNDLE_ONLY\fR): A space\-separated list of groups to install only gems of the specified groups\. .IP "\(bu" 4 \fBpath\fR (\fBBUNDLE_PATH\fR): The location on disk where all gems in your bundle will be located regardless of \fB$GEM_HOME\fR or \fB$GEM_PATH\fR values\. Bundle gems not found in this location will be installed by \fBbundle install\fR\. Defaults to \fBGem\.dir\fR\. When \-\-deployment is used, defaults to vendor/bundle\. .IP "\(bu" 4 \fBpath\.system\fR (\fBBUNDLE_PATH__SYSTEM\fR): Whether Bundler will install gems into the default system path (\fBGem\.dir\fR)\. .IP "\(bu" 4 \fBpath_relative_to_cwd\fR (\fBBUNDLE_PATH_RELATIVE_TO_CWD\fR) Makes \fB\-\-path\fR relative to the CWD instead of the \fBGemfile\fR\. .IP "\(bu" 4 \fBplugins\fR (\fBBUNDLE_PLUGINS\fR): Enable Bundler's experimental plugin system\. .IP "\(bu" 4 \fBprefer_patch\fR (BUNDLE_PREFER_PATCH): Prefer updating only to next patch version during updates\. Makes \fBbundle update\fR calls equivalent to \fBbundler update \-\-patch\fR\. .IP "\(bu" 4 \fBprint_only_version_number\fR (\fBBUNDLE_PRINT_ONLY_VERSION_NUMBER\fR): Print only version number from \fBbundler \-\-version\fR\. .IP "\(bu" 4 \fBredirect\fR (\fBBUNDLE_REDIRECT\fR): The number of redirects allowed for network requests\. Defaults to \fB5\fR\. .IP "\(bu" 4 \fBretry\fR (\fBBUNDLE_RETRY\fR): The number of times to retry failed network requests\. Defaults to \fB3\fR\. .IP "\(bu" 4 \fBsetup_makes_kernel_gem_public\fR (\fBBUNDLE_SETUP_MAKES_KERNEL_GEM_PUBLIC\fR): Have \fBBundler\.setup\fR make the \fBKernel#gem\fR method public, even though RubyGems declares it as private\. .IP "\(bu" 4 \fBshebang\fR (\fBBUNDLE_SHEBANG\fR): The program name that should be invoked for generated binstubs\. Defaults to the ruby install name used to generate the binstub\. .IP "\(bu" 4 \fBsilence_deprecations\fR (\fBBUNDLE_SILENCE_DEPRECATIONS\fR): Whether Bundler should silence deprecation warnings for behavior that will be changed in the next major version\. .IP "\(bu" 4 \fBsilence_root_warning\fR (\fBBUNDLE_SILENCE_ROOT_WARNING\fR): Silence the warning Bundler prints when installing gems as root\. .IP "\(bu" 4 \fBssl_ca_cert\fR (\fBBUNDLE_SSL_CA_CERT\fR): Path to a designated CA certificate file or folder containing multiple certificates for trusted CAs in PEM format\. .IP "\(bu" 4 \fBssl_client_cert\fR (\fBBUNDLE_SSL_CLIENT_CERT\fR): Path to a designated file containing a X\.509 client certificate and key in PEM format\. .IP "\(bu" 4 \fBssl_verify_mode\fR (\fBBUNDLE_SSL_VERIFY_MODE\fR): The SSL verification mode Bundler uses when making HTTPS requests\. Defaults to verify peer\. .IP "\(bu" 4 \fBsystem_bindir\fR (\fBBUNDLE_SYSTEM_BINDIR\fR): The location where RubyGems installs binstubs\. Defaults to \fBGem\.bindir\fR\. .IP "\(bu" 4 \fBtimeout\fR (\fBBUNDLE_TIMEOUT\fR): The seconds allowed before timing out for network requests\. Defaults to \fB10\fR\. .IP "\(bu" 4 \fBupdate_requires_all_flag\fR (\fBBUNDLE_UPDATE_REQUIRES_ALL_FLAG\fR): Require passing \fB\-\-all\fR to \fBbundle update\fR when everything should be updated, and disallow passing no options to \fBbundle update\fR\. .IP "\(bu" 4 \fBuser_agent\fR (\fBBUNDLE_USER_AGENT\fR): The custom user agent fragment Bundler includes in API requests\. .IP "\(bu" 4 \fBversion\fR (\fBBUNDLE_VERSION\fR): The version of Bundler to use when running under Bundler environment\. Defaults to \fBlockfile\fR\. You can also specify \fBsystem\fR or \fBx\.y\.z\fR\. \fBlockfile\fR will use the Bundler version specified in the \fBGemfile\.lock\fR, \fBsystem\fR will use the system version of Bundler, and \fBx\.y\.z\fR will use the specified version of Bundler\. .IP "\(bu" 4 \fBwith\fR (\fBBUNDLE_WITH\fR): A \fB:\fR\-separated list of groups whose gems bundler should install\. .IP "\(bu" 4 \fBwithout\fR (\fBBUNDLE_WITHOUT\fR): A \fB:\fR\-separated list of groups whose gems bundler should not install\. .IP "" 0 .P In general, you should set these settings per\-application by using the applicable flag to the bundle install(1) \fIbundle\-install\.1\.html\fR or bundle cache(1) \fIbundle\-cache\.1\.html\fR command\. .P You can set them globally either via environment variables or \fBbundle config\fR, whichever is preferable for your setup\. If you use both, environment variables will take preference over global settings\. .SH "LOCAL GIT REPOS" Bundler also allows you to work against a git repository locally instead of using the remote version\. This can be achieved by setting up a local override: .IP "" 4 .nf bundle config set \-\-local local\.GEM_NAME /path/to/local/git/repository .fi .IP "" 0 .P For example, in order to use a local Rack repository, a developer could call: .IP "" 4 .nf bundle config set \-\-local local\.rack ~/Work/git/rack .fi .IP "" 0 .P Now instead of checking out the remote git repository, the local override will be used\. Similar to a path source, every time the local git repository change, changes will be automatically picked up by Bundler\. This means a commit in the local git repo will update the revision in the \fBGemfile\.lock\fR to the local git repo revision\. This requires the same attention as git submodules\. Before pushing to the remote, you need to ensure the local override was pushed, otherwise you may point to a commit that only exists in your local machine\. You'll also need to CGI escape your usernames and passwords as well\. .P Bundler does many checks to ensure a developer won't work with invalid references\. Particularly, we force a developer to specify a branch in the \fBGemfile\fR in order to use this feature\. If the branch specified in the \fBGemfile\fR and the current branch in the local git repository do not match, Bundler will abort\. This ensures that a developer is always working against the correct branches, and prevents accidental locking to a different branch\. .P Finally, Bundler also ensures that the current revision in the \fBGemfile\.lock\fR exists in the local git repository\. By doing this, Bundler forces you to fetch the latest changes in the remotes\. .SH "MIRRORS OF GEM SOURCES" Bundler supports overriding gem sources with mirrors\. This allows you to configure rubygems\.org as the gem source in your Gemfile while still using your mirror to fetch gems\. .IP "" 4 .nf bundle config set \-\-global mirror\.SOURCE_URL MIRROR_URL .fi .IP "" 0 .P For example, to use a mirror of https://rubygems\.org hosted at https://example\.org: .IP "" 4 .nf bundle config set \-\-global mirror\.https://rubygems\.org https://example\.org .fi .IP "" 0 .P Each mirror also provides a fallback timeout setting\. If the mirror does not respond within the fallback timeout, Bundler will try to use the original server instead of the mirror\. .IP "" 4 .nf bundle config set \-\-global mirror\.SOURCE_URL\.fallback_timeout TIMEOUT .fi .IP "" 0 .P For example, to fall back to rubygems\.org after 3 seconds: .IP "" 4 .nf bundle config set \-\-global mirror\.https://rubygems\.org\.fallback_timeout 3 .fi .IP "" 0 .P The default fallback timeout is 0\.1 seconds, but the setting can currently only accept whole seconds (for example, 1, 15, or 30)\. .SH "CREDENTIALS FOR GEM SOURCES" Bundler allows you to configure credentials for any gem source, which allows you to avoid putting secrets into your Gemfile\. .IP "" 4 .nf bundle config set \-\-global SOURCE_HOSTNAME USERNAME:PASSWORD .fi .IP "" 0 .P For example, to save the credentials of user \fBclaudette\fR for the gem source at \fBgems\.longerous\.com\fR, you would run: .IP "" 4 .nf bundle config set \-\-global gems\.longerous\.com claudette:s00pers3krit .fi .IP "" 0 .P Or you can set the credentials as an environment variable like this: .IP "" 4 .nf export BUNDLE_GEMS__LONGEROUS__COM="claudette:s00pers3krit" .fi .IP "" 0 .P For gems with a git source with HTTP(S) URL you can specify credentials like so: .IP "" 4 .nf bundle config set \-\-global https://github\.com/rubygems/rubygems\.git username:password .fi .IP "" 0 .P Or you can set the credentials as an environment variable like so: .IP "" 4 .nf export BUNDLE_GITHUB__COM=username:password .fi .IP "" 0 .P This is especially useful for private repositories on hosts such as GitHub, where you can use personal OAuth tokens: .IP "" 4 .nf export BUNDLE_GITHUB__COM=abcd0123generatedtoken:x\-oauth\-basic .fi .IP "" 0 .P Note that any configured credentials will be redacted by informative commands such as \fBbundle config list\fR or \fBbundle config get\fR, unless you use the \fB\-\-parseable\fR flag\. This is to avoid unintentionally leaking credentials when copy\-pasting bundler output\. .P Also note that to guarantee a sane mapping between valid environment variable names and valid host names, bundler makes the following transformations: .IP "\(bu" 4 Any \fB\-\fR characters in a host name are mapped to a triple underscore (\fB___\fR) in the corresponding environment variable\. .IP "\(bu" 4 Any \fB\.\fR characters in a host name are mapped to a double underscore (\fB__\fR) in the corresponding environment variable\. .IP "" 0 .P This means that if you have a gem server named \fBmy\.gem\-host\.com\fR, you'll need to use the \fBBUNDLE_MY__GEM___HOST__COM\fR variable to configure credentials for it through ENV\. .SH "CONFIGURE BUNDLER DIRECTORIES" Bundler's home, cache and plugin directories and config file can be configured through environment variables\. The default location for Bundler's home directory is \fB~/\.bundle\fR, which all directories inherit from by default\. The following outlines the available environment variables and their default values .IP "" 4 .nf BUNDLE_USER_HOME : $HOME/\.bundle BUNDLE_USER_CACHE : $BUNDLE_USER_HOME/cache BUNDLE_USER_CONFIG : $BUNDLE_USER_HOME/config BUNDLE_USER_PLUGIN : $BUNDLE_USER_HOME/plugin .fi .IP "" 0 PK!7t t bundle-cache.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-CACHE" "1" "September 2024" "" .SH "NAME" \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application .SH "SYNOPSIS" \fBbundle cache\fR .P alias: \fBpackage\fR, \fBpack\fR .SH "DESCRIPTION" Copy all of the \fB\.gem\fR files needed to run the application into the \fBvendor/cache\fR directory\. In the future, when running \fBbundle install(1)\fR \fIbundle\-install\.1\.html\fR, use the gems in the cache in preference to the ones on \fBrubygems\.org\fR\. .SH "GIT AND PATH GEMS" The \fBbundle cache\fR command can also package \fB:git\fR and \fB:path\fR dependencies besides \.gem files\. This needs to be explicitly enabled via the \fB\-\-all\fR option\. Once used, the \fB\-\-all\fR option will be remembered\. .SH "SUPPORT FOR MULTIPLE PLATFORMS" When using gems that have different packages for different platforms, Bundler supports caching of gems for other platforms where the Gemfile has been resolved (i\.e\. present in the lockfile) in \fBvendor/cache\fR\. This needs to be enabled via the \fB\-\-all\-platforms\fR option\. This setting will be remembered in your local bundler configuration\. .SH "REMOTE FETCHING" By default, if you run \fBbundle install(1)\fR \fIbundle\-install\.1\.html\fR after running bundle cache(1) \fIbundle\-cache\.1\.html\fR, bundler will still connect to \fBrubygems\.org\fR to check whether a platform\-specific gem exists for any of the gems in \fBvendor/cache\fR\. .P For instance, consider this Gemfile(5): .IP "" 4 .nf source "https://rubygems\.org" gem "nokogiri" .fi .IP "" 0 .P If you run \fBbundle cache\fR under C Ruby, bundler will retrieve the version of \fBnokogiri\fR for the \fB"ruby"\fR platform\. If you deploy to JRuby and run \fBbundle install\fR, bundler is forced to check to see whether a \fB"java"\fR platformed \fBnokogiri\fR exists\. .P Even though the \fBnokogiri\fR gem for the Ruby platform is \fItechnically\fR acceptable on JRuby, it has a C extension that does not run on JRuby\. As a result, bundler will, by default, still connect to \fBrubygems\.org\fR to check whether it has a version of one of your gems more specific to your platform\. .P This problem is also not limited to the \fB"java"\fR platform\. A similar (common) problem can happen when developing on Windows and deploying to Linux, or even when developing on OSX and deploying to Linux\. .P If you know for sure that the gems packaged in \fBvendor/cache\fR are appropriate for the platform you are on, you can run \fBbundle install \-\-local\fR to skip checking for more appropriate gems, and use the ones in \fBvendor/cache\fR\. .P One way to be sure that you have the right platformed versions of all your gems is to run \fBbundle cache\fR on an identical machine and check in the gems\. For instance, you can run \fBbundle cache\fR on an identical staging box during your staging process, and check in the \fBvendor/cache\fR before deploying to production\. .P By default, bundle cache(1) \fIbundle\-cache\.1\.html\fR fetches and also installs the gems to the default location\. To package the dependencies to \fBvendor/cache\fR without installing them to the local install location, you can run \fBbundle cache \-\-no\-install\fR\. .SH "HISTORY" In Bundler 2\.1, \fBcache\fR took in the functionalities of \fBpackage\fR and now \fBpackage\fR and \fBpack\fR are aliases of \fBcache\fR\. PK!{{p}i5i5bundle-update.1nu[.\" generated with nRonn/v0.11.1 .\" https://github.com/n-ronn/nronn/tree/0.11.1 .TH "BUNDLE\-UPDATE" "1" "September 2024" "" .SH "NAME" \fBbundle\-update\fR \- Update your gems to the latest available versions .SH "SYNOPSIS" \fBbundle update\fR \fI*gems\fR [\-\-all] [\-\-group=NAME] [\-\-source=NAME] [\-\-local] [\-\-ruby] [\-\-bundler[=VERSION]] [\-\-full\-index] [\-\-jobs=JOBS] [\-\-quiet] [\-\-patch|\-\-minor|\-\-major] [\-\-redownload] [\-\-strict] [\-\-conservative] .SH "DESCRIPTION" Update the gems specified (all gems, if \fB\-\-all\fR flag is used), ignoring the previously installed gems specified in the \fBGemfile\.lock\fR\. In general, you should use bundle install(1) \fIbundle\-install\.1\.html\fR to install the same exact gems and versions across machines\. .P You would use \fBbundle update\fR to explicitly update the version of a gem\. .SH "OPTIONS" .TP \fB\-\-all\fR Update all gems specified in Gemfile\. .TP \fB\-\-group=\fR, \fB\-g=[]\fR Only update the gems in the specified group\. For instance, you can update all gems in the development group with \fBbundle update \-\-group development\fR\. You can also call \fBbundle update rails \-\-group test\fR to update the rails gem and all gems in the test group, for example\. .TP \fB\-\-source=\fR The name of a \fB:git\fR or \fB:path\fR source used in the Gemfile(5)\. For instance, with a \fB:git\fR source of \fBhttp://github\.com/rails/rails\.git\fR, you would call \fBbundle update \-\-source rails\fR .TP \fB\-\-local\fR Do not attempt to fetch gems remotely and use the gem cache instead\. .TP \fB\-\-ruby\fR Update the locked version of Ruby to the current version of Ruby\. .TP \fB\-\-bundler\fR Update the locked version of bundler to the invoked bundler version\. .TP \fB\-\-full\-index\fR Fall back to using the single\-file index of all gems\. .TP \fB\-\-jobs=[]\fR, \fB\-j[]\fR Specify the number of jobs to run in parallel\. The default is the number of available processors\. .TP \fB\-\-retry=[]\fR Retry failed network or git requests for \fInumber\fR times\. .TP \fB\-\-quiet\fR Only output warnings and errors\. .TP \fB\-\-redownload\fR Force downloading every gem\. .TP \fB\-\-patch\fR Prefer updating only to next patch version\. .TP \fB\-\-minor\fR Prefer updating only to next minor version\. .TP \fB\-\-major\fR Prefer updating to next major version (default)\. .TP \fB\-\-strict\fR Do not allow any gem to be updated past latest \fB\-\-patch\fR | \fB\-\-minor\fR | \fB\-\-major\fR\. .TP \fB\-\-conservative\fR Use bundle install conservative update behavior and do not allow indirect dependencies to be updated\. .SH "UPDATING ALL GEMS" If you run \fBbundle update \-\-all\fR, bundler will ignore any previously installed gems and resolve all dependencies again based on the latest versions of all gems available in the sources\. .P Consider the following Gemfile(5): .IP "" 4 .nf source "https://rubygems\.org" gem "rails", "3\.0\.0\.rc" gem "nokogiri" .fi .IP "" 0 .P When you run bundle install(1) \fIbundle\-install\.1\.html\fR the first time, bundler will resolve all of the dependencies, all the way down, and install what you need: .IP "" 4 .nf Fetching gem metadata from https://rubygems\.org/\|\.\|\.\|\.\|\.\|\.\|\.\|\.\|\.\|\. Resolving dependencies\|\.\|\.\|\. Installing builder 2\.1\.2 Installing abstract 1\.0\.0 Installing rack 1\.2\.8 Using bundler 1\.7\.6 Installing rake 10\.4\.0 Installing polyglot 0\.3\.5 Installing mime\-types 1\.25\.1 Installing i18n 0\.4\.2 Installing mini_portile 0\.6\.1 Installing tzinfo 0\.3\.42 Installing rack\-mount 0\.6\.14 Installing rack\-test 0\.5\.7 Installing treetop 1\.4\.15 Installing thor 0\.14\.6 Installing activesupport 3\.0\.0\.rc Installing erubis 2\.6\.6 Installing activemodel 3\.0\.0\.rc Installing arel 0\.4\.0 Installing mail 2\.2\.20 Installing activeresource 3\.0\.0\.rc Installing actionpack 3\.0\.0\.rc Installing activerecord 3\.0\.0\.rc Installing actionmailer 3\.0\.0\.rc Installing railties 3\.0\.0\.rc Installing rails 3\.0\.0\.rc Installing nokogiri 1\.6\.5 Bundle complete! 2 Gemfile dependencies, 26 gems total\. Use `bundle show [gemname]` to see where a bundled gem is installed\. .fi .IP "" 0 .P As you can see, even though you have two gems in the Gemfile(5), your application needs 26 different gems in order to run\. Bundler remembers the exact versions it installed in \fBGemfile\.lock\fR\. The next time you run bundle install(1) \fIbundle\-install\.1\.html\fR, bundler skips the dependency resolution and installs the same gems as it installed last time\. .P After checking in the \fBGemfile\.lock\fR into version control and cloning it on another machine, running bundle install(1) \fIbundle\-install\.1\.html\fR will \fIstill\fR install the gems that you installed last time\. You don't need to worry that a new release of \fBerubis\fR or \fBmail\fR changes the gems you use\. .P However, from time to time, you might want to update the gems you are using to the newest versions that still match the gems in your Gemfile(5)\. .P To do this, run \fBbundle update \-\-all\fR, which will ignore the \fBGemfile\.lock\fR, and resolve all the dependencies again\. Keep in mind that this process can result in a significantly different set of the 25 gems, based on the requirements of new gems that the gem authors released since the last time you ran \fBbundle update \-\-all\fR\. .SH "UPDATING A LIST OF GEMS" Sometimes, you want to update a single gem in the Gemfile(5), and leave the rest of the gems that you specified locked to the versions in the \fBGemfile\.lock\fR\. .P For instance, in the scenario above, imagine that \fBnokogiri\fR releases version \fB1\.4\.4\fR, and you want to update it \fIwithout\fR updating Rails and all of its dependencies\. To do this, run \fBbundle update nokogiri\fR\. .P Bundler will update \fBnokogiri\fR and any of its dependencies, but leave alone Rails and its dependencies\. .SH "OVERLAPPING DEPENDENCIES" Sometimes, multiple gems declared in your Gemfile(5) are satisfied by the same second\-level dependency\. For instance, consider the case of \fBthin\fR and \fBrack\-perftools\-profiler\fR\. .IP "" 4 .nf source "https://rubygems\.org" gem "thin" gem "rack\-perftools\-profiler" .fi .IP "" 0 .P The \fBthin\fR gem depends on \fBrack >= 1\.0\fR, while \fBrack\-perftools\-profiler\fR depends on \fBrack ~> 1\.0\fR\. If you run bundle install, you get: .IP "" 4 .nf Fetching source index for https://rubygems\.org/ Installing daemons (1\.1\.0) Installing eventmachine (0\.12\.10) with native extensions Installing open4 (1\.0\.1) Installing perftools\.rb (0\.4\.7) with native extensions Installing rack (1\.2\.1) Installing rack\-perftools_profiler (0\.0\.2) Installing thin (1\.2\.7) with native extensions Using bundler (1\.0\.0\.rc\.3) .fi .IP "" 0 .P In this case, the two gems have their own set of dependencies, but they share \fBrack\fR in common\. If you run \fBbundle update thin\fR, bundler will update \fBdaemons\fR, \fBeventmachine\fR and \fBrack\fR, which are dependencies of \fBthin\fR, but not \fBopen4\fR or \fBperftools\.rb\fR, which are dependencies of \fBrack\-perftools_profiler\fR\. Note that \fBbundle update thin\fR will update \fBrack\fR even though it's \fIalso\fR a dependency of \fBrack\-perftools_profiler\fR\. .P In short, by default, when you update a gem using \fBbundle update\fR, bundler will update all dependencies of that gem, including those that are also dependencies of another gem\. .P To prevent updating indirect dependencies, prior to version 1\.14 the only option was the \fBCONSERVATIVE UPDATING\fR behavior in bundle install(1) \fIbundle\-install\.1\.html\fR: .P In this scenario, updating the \fBthin\fR version manually in the Gemfile(5), and then running bundle install(1) \fIbundle\-install\.1\.html\fR will only update \fBdaemons\fR and \fBeventmachine\fR, but not \fBrack\fR\. For more information, see the \fBCONSERVATIVE UPDATING\fR section of bundle install(1) \fIbundle\-install\.1\.html\fR\. .P Starting with 1\.14, specifying the \fB\-\-conservative\fR option will also prevent indirect dependencies from being updated\. .SH "PATCH LEVEL OPTIONS" Version 1\.14 introduced 4 patch\-level options that will influence how gem versions are resolved\. One of the following options can be used: \fB\-\-patch\fR, \fB\-\-minor\fR or \fB\-\-major\fR\. \fB\-\-strict\fR can be added to further influence resolution\. .TP \fB\-\-patch\fR Prefer updating only to next patch version\. .TP \fB\-\-minor\fR Prefer updating only to next minor version\. .TP \fB\-\-major\fR Prefer updating to next major version (default)\. .TP \fB\-\-strict\fR Do not allow any gem to be updated past latest \fB\-\-patch\fR | \fB\-\-minor\fR | \fB\-\-major\fR\. .P When Bundler is resolving what versions to use to satisfy declared requirements in the Gemfile or in parent gems, it looks up all available versions, filters out any versions that don't satisfy the requirement, and then, by default, sorts them from newest to oldest, considering them in that order\. .P Providing one of the patch level options (e\.g\. \fB\-\-patch\fR) changes the sort order of the satisfying versions, causing Bundler to consider the latest \fB\-\-patch\fR or \fB\-\-minor\fR version available before other versions\. Note that versions outside the stated patch level could still be resolved to if necessary to find a suitable dependency graph\. .P For example, if gem 'foo' is locked at 1\.0\.2, with no gem requirement defined in the Gemfile, and versions 1\.0\.3, 1\.0\.4, 1\.1\.0, 1\.1\.1, 2\.0\.0 all exist, the default order of preference by default (\fB\-\-major\fR) will be "2\.0\.0, 1\.1\.1, 1\.1\.0, 1\.0\.4, 1\.0\.3, 1\.0\.2"\. .P If the \fB\-\-patch\fR option is used, the order of preference will change to "1\.0\.4, 1\.0\.3, 1\.0\.2, 1\.1\.1, 1\.1\.0, 2\.0\.0"\. .P If the \fB\-\-minor\fR option is used, the order of preference will change to "1\.1\.1, 1\.1\.0, 1\.0\.4, 1\.0\.3, 1\.0\.2, 2\.0\.0"\. .P Combining the \fB\-\-strict\fR option with any of the patch level options will remove any versions beyond the scope of the patch level option, to ensure that no gem is updated that far\. .P To continue the previous example, if both \fB\-\-patch\fR and \fB\-\-strict\fR options are used, the available versions for resolution would be "1\.0\.4, 1\.0\.3, 1\.0\.2"\. If \fB\-\-minor\fR and \fB\-\-strict\fR are used, it would be "1\.1\.1, 1\.1\.0, 1\.0\.4, 1\.0\.3, 1\.0\.2"\. .P Gem requirements as defined in the Gemfile will still be the first determining factor for what versions are available\. If the gem requirement for \fBfoo\fR in the Gemfile is '~> 1\.0', that will accomplish the same thing as providing the \fB\-\-minor\fR and \fB\-\-strict\fR options\. .SH "PATCH LEVEL EXAMPLES" Given the following gem specifications: .IP "" 4 .nf foo 1\.4\.3, requires: ~> bar 2\.0 foo 1\.4\.4, requires: ~> bar 2\.0 foo 1\.4\.5, requires: ~> bar 2\.1 foo 1\.5\.0, requires: ~> bar 2\.1 foo 1\.5\.1, requires: ~> bar 3\.0 bar with versions 2\.0\.3, 2\.0\.4, 2\.1\.0, 2\.1\.1, 3\.0\.0 .fi .IP "" 0 .P Gemfile: .IP "" 4 .nf gem 'foo' .fi .IP "" 0 .P Gemfile\.lock: .IP "" 4 .nf foo (1\.4\.3) bar (~> 2\.0) bar (2\.0\.3) .fi .IP "" 0 .P Cases: .IP "" 4 .nf # Command Line Result \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- 1 bundle update \-\-patch 'foo 1\.4\.5', 'bar 2\.1\.1' 2 bundle update \-\-patch foo 'foo 1\.4\.5', 'bar 2\.1\.1' 3 bundle update \-\-minor 'foo 1\.5\.1', 'bar 3\.0\.0' 4 bundle update \-\-minor \-\-strict 'foo 1\.5\.0', 'bar 2\.1\.1' 5 bundle update \-\-patch \-\-strict 'foo 1\.4\.4', 'bar 2\.0\.4' .fi .IP "" 0 .P In case 1, bar is upgraded to 2\.1\.1, a minor version increase, because the dependency from foo 1\.4\.5 required it\. .P In case 2, only foo is requested to be unlocked, but bar is also allowed to move because it's not a declared dependency in the Gemfile\. .P In case 3, bar goes up a whole major release, because a minor increase is preferred now for foo, and when it goes to 1\.5\.1, it requires 3\.0\.0 of bar\. .P In case 4, foo is preferred up to a minor version, but 1\.5\.1 won't work because the \-\-strict flag removes bar 3\.0\.0 from consideration since it's a major increment\. .P In case 5, both foo and bar have any minor or major increments removed from consideration because of the \-\-strict flag, so the most they can move is up to 1\.4\.4 and 2\.0\.4\. .SH "RECOMMENDED WORKFLOW" In general, when working with an application managed with bundler, you should use the following workflow: .IP "\(bu" 4 After you create your Gemfile(5) for the first time, run .IP $ bundle install .IP "\(bu" 4 Check the resulting \fBGemfile\.lock\fR into version control .IP $ git add Gemfile\.lock .IP "\(bu" 4 When checking out this repository on another development machine, run .IP $ bundle install .IP "\(bu" 4 When checking out this repository on a deployment machine, run .IP $ bundle install \-\-deployment .IP "\(bu" 4 After changing the Gemfile(5) to reflect a new or update dependency, run .IP $ bundle install .IP "\(bu" 4 Make sure to check the updated \fBGemfile\.lock\fR into version control .IP $ git add Gemfile\.lock .IP "\(bu" 4 If bundle install(1) \fIbundle\-install\.1\.html\fR reports a conflict, manually update the specific gems that you changed in the Gemfile(5) .IP $ bundle update rails thin .IP "\(bu" 4 If you want to update all the gems to the latest possible versions that still match the gems listed in the Gemfile(5), run .IP $ bundle update \-\-all .IP "" 0 PK!/HRR bundle-env.1nu[.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BUNDLE\-ENV" "1" "March 2026" "" .SH "NAME" \fBbundle\-env\fR \- Print information about the environment Bundler is running under .SH "SYNOPSIS" \fBbundle env\fR .SH "DESCRIPTION" Prints information about the environment Bundler is running under\. PK!Sbundle-issue.1nu[.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BUNDLE\-ISSUE" "1" "March 2026" "" .SH "NAME" \fBbundle\-issue\fR \- Get help reporting Bundler issues .SH "SYNOPSIS" \fBbundle issue\fR .SH "DESCRIPTION" Provides guidance on reporting Bundler issues and outputs detailed system information that should be included when filing a bug report\. This command: .IP "1." 4 Displays links to troubleshooting resources .IP "2." 4 Shows instructions for reporting issues .IP "3." 4 Outputs comprehensive environment information needed for debugging .IP "" 0 .P The command helps ensure that bug reports include all necessary system details for effective troubleshooting\. .SH "OUTPUT" The command outputs several sections: .IP "\(bu" 4 Troubleshooting links and resources .IP "\(bu" 4 Link to the GitHub issue template .IP "\(bu" 4 Environment information including: Bundler version and platforms, Ruby version and configuration, RubyGems version and paths, Development tool versions (Git, RVM, rbenv, chruby) .IP "\(bu" 4 Bundler build metadata .IP "\(bu" 4 Current Bundler settings .IP "\(bu" 4 Bundle Doctor output .IP "" 0 .SH "EXAMPLES" Get issue reporting information: .IP "" 4 .nf $ bundle issue .fi .IP "" 0 .SH "SEE ALSO" .IP "\(bu" 4 bundle\-doctor(1) .IP "" 0 PK!./erb.1.gznu[ jWnF}W Q@qJ"ԶIN "&$]VgKNڤ}ͽ93gf~LņH-+1aCYVt!)3e 2a=gE8 ,38[.bp>ܧ ~R,cД֜GLoJs'dž.GpӋa^fz1y9gE*̗x2A\/uJ5k#U|_M|}| TZ4|~6'fDkN[T͂GB i$2e C02)g٫h2/ X,y )*=gtKꀴNPwf%I}8@bKj 2afCWiBݰNʔl"{*+%Rܧ & |C9Ai슃ԅ20v.9g]ٞ9Nf+1[!Sgw|InhnJk6 -}rx{/+Ի]QG<up8;y3zy->d$Us -6\3+8ʄQ"-yxr[B!s *0N7D**>GYeP6]W4Gp?}<_MSgH.>'4bZf;*AN02΅J2{lxO#6S-!2ewWд7A:r46'k8]\ SIbe̮ن4g0o^ozFf;;(ZL<41fmp. m_utCzSWYx B j(K͑okr1JI["}u/n3?hG5y5{cq[-b^`^jd/9V^t6|y4RrHKA\+N B+^ٹ5"} ' 6|y;>f5YUڢ;`WG]]1=g<~߫ʁPeGpPТ[Z 6leGEO/&YIx_cKߓm6yuI0C~)dDV~ "F'O{'CvBףunNd`C> U"dR_kaYxU (R(ڋ7C,tE7>c_;zܥ]zԥ'OC8몔a6$*h3mgk(Raݼ1N Aر(Ӕ}YGJ-eꦟOrCRJn?4fUwR4P%60APijQ.RiVتZȂ]MV zlHXҗ/91s-zH@ϴ0vc!>S+[g'tp3,ܸWgh"hӫt,p!ʬ$Q 0 PK!d77bundle-licenses.1nu[.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BUNDLE\-LICENSES" "1" "March 2026" "" .SH "NAME" \fBbundle\-licenses\fR \- Print the license of all gems in the bundle .SH "SYNOPSIS" \fBbundle licenses\fR .SH "DESCRIPTION" Prints the license of all gems in the bundle\. PK!rnn bundle-fund.1nu[.\" generated with Ronn-NG/v0.10.1 .\" http://github.com/apjanke/ronn-ng/tree/0.10.1 .TH "BUNDLE\-FUND" "1" "March 2026" "" .SH "NAME" \fBbundle\-fund\fR \- Lists information about gems seeking funding assistance .SH "SYNOPSIS" \fBbundle fund\fR [\fIOPTIONS\fR] .SH "DESCRIPTION" \fBbundle fund\fR lists information about gems seeking funding assistance\. .SH "OPTIONS" .TP \fB\-\-group=\fR, \fB\-g=\fR Fetch funding information for a specific group\. .SH "EXAMPLES" .nf # Lists funding information for all gems bundle fund # Lists funding information for a specific group bundle fund \-\-group=security .fi PK!S u#!#! ruby.1.gznu[ j[mwaZjHZsT)%Q6c[%ɩ.ɍvŮ(7R/=%,03hk煮mDd\geL?5J-Tҹ/(T`xa}08'"BIZ<gy1yR(+t)b.KTLdt2%B X U#*7N943;FQ.?0ΫcU7[yDb8J{VSdANگs?v]^Uzd\j$2 XT%ӦDrrYPq@ߎa2'PŊMH:42p9oL2^|ZJijҬt^$eQOHoQ(lAzrqxUm e4P(i6Ab b%>6bdQ8f͕PI@/fcp8Z=B;#NEqxR& T?0E.r-o:^p,,Fb-AVOFy8uMR̎(qH~1Y!BL/bV-*Z[e+!KBG3E4_+͕U)15 (`XQ0<r)(,Vq*EZg/vǤS=B_t9#x?Q,eIV<dK1բdJ셛T&ќ~"{A=ӝSȹe!I$R"[kyrB;rn?ѩQJh#EdXwc hwwsÐ<,nDT^@LQՖ|V.[T5:CVg *VQՐ@,c=q_`dB:c=q)<{pʷ6/Km1Yf u"b-!CHTH6ezYP!kusbÀw+ENd |)|q)y`VFqAVyBmyqL k^o;\kun2yIXW,$EH{)N~NGt`25{HvqM@m(N9<0]Q.٠6 [i roPLUr* eA:UِTdn̑.x;h֐dE@ȬT/1Q˽"H!x,./@=IA5sGO4֪ܷ鶷r/2d..phy,]Jt:`0Dp^[F.n0:tP 櫙יBh|*VlR#'qH$L ktQek!{Ō#i#ߑRCGdiϗ!!xc>'0p3" ?C/7wbU9zKMu*ځB`^Y˨xUκG9bw&P#VzM6VnSB!S$Ʊ5T>\N-ۺfK l D$yT g yOX@ (%4⋤QwHɫST;O=j$TQYx]sg E7HueƎbǎ[=RLA(UPSG #|ȨLro"{En",.f@= ށBkgiǍ|[8TSmCHNg/<H0/8MEDVÕwD |DR !2:Dr` QK< G/XKƝ}=}@~Yϙ_ml;HTԓ-CuSC8%wuuj[A[ Tj=6ioaFF(n?T-FsϏU=O϶ܴ$Y ymٴc?ƏSvZ7gBN|v .T*EvhsWi2vkbi〯G?Nޏ22jaX]d3yٳ탶 lOnSSI늻.|Ҫo+*7(mc_u$T2*VYQ܅SUu䕊3_fbQ  MWdF&d14guUOy,SiW:&7%cqm|wiOBWD(!I2NTN0ht>;|NWfsiWO? }wsU5Љʉ2܎)[,jǩ\P>pP7d!~rC-е7 l7apNG厄{Pk3XÅ/||O74aqB0 P55!?SC*b@︭]XZ"ѣ EVSڒږ$O u6%FB.rFޭ8bAcwmH+ѓZ윩b^xC z5>atsZcCSYŹ+ѵ =V%%:LR@a {`ЕRqD-OxFW\%-+itrL[o]whnwu!FfnRE"c;Swa`͍RjDณ$.6lIc[I)Z{ aA]wЃ:٣ ]͚ H,_=W`TPtbjL&'GiyNoo3FlRҡEldںAM2~hKBxR5Y^U=fʛ8uwU/Ta/Z.RJ~UcvR9#.5:ﺔh%ʪ]dbu0W)n[A31ݼwvxl7]uo|Ӡi9uM4s]6?~\zz&jg씋cqs[N݃2չ;*u#-+ |1 >T4vuؓSfXDoQnu\l֑hmmT6M_pBeG/\-vZ-z%W|SWy5\lp!j]b~[%VhQB#}C/tXT'ۓjwp v'W7o:fr=<iLW[W՝&s1_8xjEV0t3p9<;'.ގG.!ڿ…z)z^CIwj&CoR:e?^kCP37[ھm:% sc??+ODn> w~&aU7Q~ݳ-bl 2x\|tw6t~YQ~u F&pؐ&{ksAOx@ UAfľ5?7r|۳vt};~?((VޤC:7#>sV`B^XmED^ _=cZnZօqw7ëiSƙRGغc;]{Ub##:MXn'o7 Պ]2q>ae{d9˷ $ GwmBPk*F:ÏRksnapVwm`3f2EeՌ{i_(f W-U '-PR=Vc$r.鱁S"zP{\oHPCHGt@ 7i,Lb0&7ouTk{fvv7ӄQ AE=馒ۏxfn(gMAMv)B_E(7K,naxclOl 9Rw;jtf QCxO EKB+m7쁍fg~^ 7|l-k$)=u; j+!3]D`8Rӗ{z]ż]NFmLV#<뀝FF>7AQ֘q[4@0\8lN90_GH:(R5߮JINFfM=MYؚI0Kc^6 55O{ Q.>gц p>,HNI@0rV"F'ŞrhRnF֟pDph#6SkË8|9$Ê'~+1C*~k ZjPƳu2; :Vgjwd4GT0iz# 6}o*+ X ~ >I{E>𩖹G8rCl~f&bXb,JV$롌9 Uw*dXZT47o}8] ZE V'RL^mzVR{9Ir0YP]«J/XN=Ю=历 ',EcLtQ=kG\$mE2˖J %$R|):Mc}^ NXխ@ɫcUQ*I XAg=c DqvM8oe;jSZ9UiFK(SB|>5EO09.E1:s A *D友Z 6G\2܍Qb rT(71EZ<]o5 q er F4}(ڍ7LM0<Eg_SNnH%1#;y6@kqpa ~ˬJ%9X7 -[83[Ѣ5\O@Ie~X.Qf@H2slq,~*8\ ]@zHXi _i3:4N\4f47mO0+w*6xUrݻh̟9T X 87vp2#Ȋ| -7XVkOV8)SvUn՜az\R=N#w'/[XD*5ȤJNCȃf7BՃtAf:yg=Gި__9\EJ5/_W ]Jc+0o~^;f(z潯m,~U56ͺnrݮ+yvdBXuM 4$|ԕɿly9v : QL3i@9>^'^&JN$IMM?jCbCcupX:uYw e6$VZY^޳ӓPCnBu/ ,J@z=l1i&K%16.os\z{z7k۴2|AMTLHCT@kG+[iKP] <P~EXa6F.q_2\QR:ތHE=u3-,xE:7dIU` P %Vr&d!+θ%x8$eEtʝT Փb bF2`a! mɃHiؖjp~ l^(XQP_(|/%p?kX1j&W}ҸȚ$'hE2@$OҨoX v?sF@fdux*|/fRțfцGDKgXGs@펫L88:<6͊ y|N6Sv4a06R>ѥLQhnƧ7u Y6 D]Ż"/βw%]PK!t xml2-config.1nu[.TH xml2-config 1 "3 April 2022" Version 1.2.0 .SH NAME xml2-config - script to get information about the installed version of libxml2 .SH SYNOPSIS .B xml2-config [\-\-prefix\fI[=DIR]\fP] [\-\-libs] [\-\-cflags] [\-\-version] [\-\-help] .SH DESCRIPTION \fIxml2-config\fP is a tool that is used to determine the compile and linker flags that should be used to compile and link programs that use \fIlibxml2\fP. .SH OPTIONS \fIxml2-config\fP accepts the following options: .TP 8 .B \-\-version Print the currently installed version of \fIlibxml2\fP on the standard output. .TP 8 .B \-\-libs Print the linker flags that are necessary to link a \fIlibxml2\fP program. Add \-\-dynamic after \-\-libs to print only shared library linking information. .TP 8 .B \-\-cflags Print the compiler flags that are necessary to compile a \fIlibxml2\fP program. .TP 8 .B \-\-prefix=PREFIX If specified, use PREFIX instead of the installation prefix that \fIlibxml2\fP was built with when computing the output for the \-\-cflags and \-\-libs options. This option must be specified before any \-\-libs or \-\-cflags options. .SH AUTHOR This manual page was written by Fredrik Hallenberg , for the Debian GNU/linux system (but may be used by others). PK!/+&Q!Q! xmlcatalog.1nu['\" t .\" Title: xmlcatalog .\" Author: John Fleck .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 08/17/2022 .\" Manual: xmlcatalog Manual .\" Source: libxml2 .\" Language: English .\" .TH "XMLCATALOG" "1" "08/17/2022" "libxml2" "xmlcatalog Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" xmlcatalog \- Command line tool to parse and manipulate XML or SGML catalog files\&. .SH "SYNOPSIS" .HP \w'\fBxmlcatalog\fR\ 'u \fBxmlcatalog\fR [\fB\-\-sgml\fR | \fB\-\-shell\fR | \fB\-\-create\fR | \fB\-\-del\ \fR\fB\fIVALUE(S)\fR\fR | [\ \fB\-\-add\ \fR\fB\fITYPE\fR\fR\fB\ \fR\fB\fIORIG\fR\fR\fB\ \fR\fB\fIREPLACE\fR\fR\fB\ \fR\ |\ \fB\-\-add\ \fR\fB\fIFILENAME\fR\fR] | \fB\-\-noout\fR | \fB\-\-no\-super\-update\fR | [\fB\-v\fR\ |\ \fB\-\-verbose\fR]] {\fICATALOGFILE\fR} {\fIENTITIES\fR...} .SH "DESCRIPTION" .PP \fBxmlcatalog\fR is a command line application allowing users to monitor and manipulate XML and SGML catalogs\&. It is included in \fBlibxml\fR(3)\&. .PP Its functions can be invoked from a single command from the command line, or it can perform multiple functions in interactive mode\&. It can operate on both XML and SGML files\&. .SH "OPTIONS" .PP \fBxmlcatalog\fR accepts the following options (in alphabetical order): .PP \fB\-\-add \fR\fB\fITYPE\fR\fR\fB \fR\fB\fIORIG\fR\fR\fB \fR\fB\fIREPLACE\fR\fR\fB \fR .RS 4 Add an entry to CATALOGFILE\&. \fITYPE\fR indicates the type of entry\&. Possible types are: \fIpublic\fR, \fIsystem\fR, \fIuri\fR, \fIrewriteSystem\fR, \fIrewriteURI\fR, \fIdelegatePublic\fR, \fIdelegateSystem\fR, \fIdelegateURI\fR, \fInextCatalog\fR\&. \fIORIG\fR is the original reference to be replaced, and \fIREPLACE\fR is the URI of the replacement entity to be used\&. The \fB\-\-add\fR option will not overwrite CATALOGFILE, outputting to stdout, unless \fB\-\-noout\fR is used\&. The \fB\-\-add\fR will always take three parameters even if some of the XML catalog constructs will have only a single argument\&. .RE .PP \fB\-\-add \fR\fB\fIFILENAME\fR\fR .RS 4 If the \fB\-\-add\fR option is used following the \fB\-\-sgml\fR option, only a single argument, a \fIFILENAME\fR, is used\&. This is used to add the name of a catalog file to an SGML supercatalog, a file that contains references to other included SGML catalog files\&. .RE .PP \fB\-\-create\fR .RS 4 Create a new XML catalog\&. Outputs to stdout, ignoring \fIfilename\fR unless \fB\-\-noout\fR is used, in which case it creates a new catalog file \fIfilename\fR\&. .RE .PP \fB\-\-del \fR\fB\fIVALUE(S)\fR\fR .RS 4 Remove entries from \fICATALOGFILE\fR matching \fIVALUE(S)\fR\&. The \fB\-\-del\fR option will not overwrite \fICATALOGFILE\fR, outputting to stdout, unless \fB\-\-noout\fR is used\&. .RE .PP \fB\-\-noout\fR .RS 4 Save output to the named file rather than outputting to stdout\&. .RE .PP \fB\-\-no\-super\-update\fR .RS 4 Do not update the SGML super catalog\&. .RE .PP \fB\-\-shell\fR .RS 4 Run a shell allowing interactive queries on catalog file \fICATALOGFILE\fR\&. For the set of available commands see the section called \(lqSHELL COMMANDS\(rq\&. .RE .PP \fB\-\-sgml\fR .RS 4 Uses SGML super catalogs for \fB\-\-add\fR and \fB\-\-del\fR options\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 Output debugging information\&. .RE .PP Invoking \fBxmlcatalog\fR non\-interactively without a designated action (imposed with options like \fB\-\-add\fR) will result in a lookup of the catalog entry for \fIENTITIES\fR in the catalog denoted with \fICATALOGFILE\fR\&. The corresponding entries will be output to the command line\&. This mode of operation, together with \fB\-\-shell\fR mode and non\-modifying (i\&.e\&. without \fB\-\-noout\fR) direct actions, allows for a special shortcut of the void \fICATALOGFILE\fR specification (possibly expressed as "" in the shell environment) appointing the default system catalog\&. That simplifies the handling when its exact location is irrelevant but the respective built\-in still needs to be consulted\&. .SH "SHELL COMMANDS" .PP Invoking \fBxmlcatalog\fR with the \fB\-\-shell \fR\fB\fICATALOGFILE\fR\fR option opens a command line shell allowing interactive access to the catalog file identified by \fICATALOGFILE\fR\&. Invoking the shell provides a command line prompt after which the following commands (described in alphabetical order) can be entered\&. .PP \fBadd \fR\fB\fITYPE\fR\fR\fB \fR\fB\fIORIG\fR\fR\fB \fR\fB\fIREPLACE\fR\fR\fB \fR .RS 4 Add an entry to the catalog file\&. \fITYPE\fR indicates the type of entry\&. Possible types are: \fIpublic\fR, \fIsystem\fR, \fIuri\fR, \fIrewriteSystem\fR, \fIrewriteURI\fR, \fIdelegatePublic\fR, \fIdelegateSystem\fR, \fIdelegateURI\fR, \fInextCatalog\fR\&. \fIORIG\fR is the original reference to be replaced, and \fIREPLACE\fR is the URI of the replacement entity to be used\&. The \fB\-\-add\fR option will not overwrite CATALOGFILE, outputting to stdout, unless \fB\-\-noout\fR is used\&. The \fB\-\-add\fR will always take three parameters even if some of the XML catalog constructs will have only a single argument\&. .RE .PP \fBdebug\fR .RS 4 Print debugging statements showing the steps \fBxmlcatalog\fR is executing\&. .RE .PP \fBdel \fR\fB\fIVALUE(S)\fR\fR .RS 4 Remove the catalog entry corresponding to \fIVALUE(S)\fR\&. .RE .PP \fBdump\fR .RS 4 Print the current catalog\&. .RE .PP \fBexit\fR .RS 4 Quit the shell\&. .RE .PP \fBpublic \fR\fB\fIPUBLIC\-ID\fR\fR .RS 4 Execute a Formal Public Identifier lookup of the catalog entry for \fIPUBLIC\-ID\fR\&. The corresponding entry will be output to the command line\&. .RE .PP \fBquiet\fR .RS 4 Stop printing debugging statements\&. .RE .PP \fBsystem \fR\fB\fISYSTEM\-ID\fR\fR .RS 4 Execute a Formal Public Identifier lookup of the catalog entry for \fISYSTEM\-ID\fR\&. The corresponding entry will be output to the command line\&. .RE .SH "ENVIRONMENT" .PP \fBXML_CATALOG_FILES\fR .RS 4 XML catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the \fBXML_CATALOG_FILES\fR environment variable to a space\-separated list of catalogs\&. Use percent\-encoding to escape spaces or other characters\&. An empty variable should deactivate loading the default /etc/xml/catalog catalog\&. .RE .SH "DIAGNOSTICS" .PP \fBxmlcatalog\fR return codes provide information that can be used when calling it from scripts\&. .PP \fB0\fR .RS 4 No error .RE .PP \fB1\fR .RS 4 Failed to remove an entry from the catalog .RE .PP \fB2\fR .RS 4 Failed to save to the catalog, check file permissions .RE .PP \fB3\fR .RS 4 Failed to add an entry to the catalog .RE .PP \fB4\fR .RS 4 Failed to look up an entry in the catalog .RE .SH "SEE ALSO" .PP \fBlibxml\fR(3) .PP More information can be found at .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBlibxml\fR(3) web page \m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2\fR\m[] .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBlibxml\fR(3) catalog support web page at \m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2/-/wikis/Catalog-support\fR\m[] .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} James Clark\*(Aqs SGML catalog page \m[blue]\fB\%http://www.jclark.com/sp/catalog.htm\fR\m[] .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} OASIS XML catalog specification \m[blue]\fB\%http://www.oasis-open.org/committees/entity/spec.html\fR\m[] .RE .sp .SH "AUTHOR" .PP \fBJohn Fleck\fR <\&jfleck@inkstain\&.net\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br Copyright \(co 2001, 2004 .br PK!zH44 xmllint.1nu['\" t .\" Title: xmllint .\" Author: John Fleck .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 08/17/2022 .\" Manual: xmllint Manual .\" Source: libxml2 .\" Language: English .\" .TH "XMLLINT" "1" "08/17/2022" "libxml2" "xmllint Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" xmllint \- command line XML tool .SH "SYNOPSIS" .HP \w'\fBxmllint\fR\ 'u \fBxmllint\fR [\fB\-\-version\fR | \fB\-\-debug\fR | \fB\-\-shell\fR | \fB\-\-xpath\ "\fR\fB\fIXPath_expression\fR\fR\fB"\fR | \fB\-\-debugent\fR | \fB\-\-copy\fR | \fB\-\-recover\fR | \fB\-\-noent\fR | \fB\-\-noout\fR | \fB\-\-nonet\fR | \fB\-\-path\ "\fR\fB\fIPATH(S)\fR\fR\fB"\fR | \fB\-\-load\-trace\fR | \fB\-\-htmlout\fR | \fB\-\-nowrap\fR | \fB\-\-valid\fR | \fB\-\-postvalid\fR | \fB\-\-dtdvalid\ \fR\fB\fIURL\fR\fR | \fB\-\-dtdvalidfpi\ \fR\fB\fIFPI\fR\fR | \fB\-\-timing\fR | \fB\-\-output\ \fR\fB\fIFILE\fR\fR | \fB\-\-repeat\fR | \fB\-\-insert\fR | \fB\-\-compress\fR | \fB\-\-html\fR | \fB\-\-xmlout\fR | \fB\-\-push\fR | \fB\-\-memory\fR | \fB\-\-maxmem\ \fR\fB\fINBBYTES\fR\fR | \fB\-\-nowarning\fR | \fB\-\-noblanks\fR | \fB\-\-nocdata\fR | \fB\-\-format\fR | \fB\-\-encode\ \fR\fB\fIENCODING\fR\fR | \fB\-\-dropdtd\fR | \fB\-\-nsclean\fR | \fB\-\-testIO\fR | \fB\-\-catalogs\fR | \fB\-\-nocatalogs\fR | \fB\-\-auto\fR | \fB\-\-xinclude\fR | \fB\-\-noxincludenode\fR | \fB\-\-loaddtd\fR | \fB\-\-dtdattr\fR | \fB\-\-stream\fR | \fB\-\-walker\fR | \fB\-\-pattern\ \fR\fB\fIPATTERNVALUE\fR\fR | \fB\-\-chkregister\fR | \fB\-\-relaxng\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-schema\ \fR\fB\fISCHEMA\fR\fR | \fB\-\-c14n\fR] {\fIXML\-FILE(S)\fR... | \-} .HP \w'\fBxmllint\fR\ 'u \fBxmllint\fR \fB\-\-help\fR .SH "DESCRIPTION" .PP The \fBxmllint\fR program parses one or more XML files, specified on the command line as \fIXML\-FILE\fR (or the standard input if the filename provided is \fB\-\fR )\&. It prints various types of output, depending upon the options selected\&. It is useful for detecting errors both in XML code and in the XML parser itself\&. .PP \fBxmllint\fR is included in \fBlibxml\fR(3)\&. .SH "OPTIONS" .PP \fBxmllint\fR accepts the following options (in alphabetical order): .PP \fB\-\-auto\fR .RS 4 Generate a small document for testing purposes\&. .RE .PP \fB\-\-catalogs\fR .RS 4 Use the SGML catalog(s) from \fBSGML_CATALOG_FILES\fR\&. Otherwise XML catalogs starting from /etc/xml/catalog are used by default\&. .RE .PP \fB\-\-chkregister\fR .RS 4 Turn on node registration\&. Useful for developers testing \fBlibxml\fR(3) node tracking code\&. .RE .PP \fB\-\-compress\fR .RS 4 Turn on \fBgzip\fR(1) compression of output\&. .RE .PP \fB\-\-copy\fR .RS 4 Test the internal copy implementation\&. .RE .PP \fB\-\-c14n\fR .RS 4 Use the W3C XML Canonicalisation (C14N) to serialize the result of parsing to stdout\&. It keeps comments in the result\&. .RE .PP \fB\-\-dtdvalid \fR\fB\fIURL\fR\fR .RS 4 Use the DTD specified by an \fIURL\fR for validation\&. .RE .PP \fB\-\-dtdvalidfpi \fR\fB\fIFPI\fR\fR .RS 4 Use the DTD specified by a Formal Public Identifier \fIFPI\fR for validation, note that this will require a catalog exporting that Formal Public Identifier to work\&. .RE .PP \fB\-\-debug\fR .RS 4 Parse a file and output an annotated tree of the in\-memory version of the document\&. .RE .PP \fB\-\-debugent\fR .RS 4 Debug the entities defined in the document\&. .RE .PP \fB\-\-dropdtd\fR .RS 4 Remove DTD from output\&. .RE .PP \fB\-\-dtdattr\fR .RS 4 Fetch external DTD and populate the tree with inherited attributes\&. .RE .PP \fB\-\-encode \fR\fB\fIENCODING\fR\fR .RS 4 Output in the given encoding\&. Note that this works for full document not fragments or result from XPath queries\&. .RE .PP \fB\-\-format\fR .RS 4 Reformat and reindent the output\&. The \fBXMLLINT_INDENT\fR environment variable controls the indentation\&. The default value is two spaces " ")\&. .RE .PP \fB\-\-help\fR .RS 4 Print out a short usage summary for \fBxmllint\fR\&. .RE .PP \fB\-\-html\fR .RS 4 Use the HTML parser\&. .RE .PP \fB\-\-htmlout\fR .RS 4 Output results as an HTML file\&. This causes \fBxmllint\fR to output the necessary HTML tags surrounding the result tree output so the results can be displayed/viewed in a browser\&. .RE .PP \fB\-\-insert\fR .RS 4 Test for valid insertions\&. .RE .PP \fB\-\-loaddtd\fR .RS 4 Fetch an external DTD\&. .RE .PP \fB\-\-load\-trace\fR .RS 4 Display all the documents loaded during the processing to stderr\&. .RE .PP \fB\-\-maxmem \fR\fB\fINNBYTES\fR\fR .RS 4 Test the parser memory support\&. \fINNBYTES\fR is the maximum number of bytes the library is allowed to allocate\&. This can also be used to make sure batch processing of XML files will not exhaust the virtual memory of the server running them\&. .RE .PP \fB\-\-memory\fR .RS 4 Parse from memory\&. .RE .PP \fB\-\-noblanks\fR .RS 4 Drop ignorable blank spaces\&. .RE .PP \fB\-\-nocatalogs\fR .RS 4 Do not use any catalogs\&. .RE .PP \fB\-\-nocdata\fR .RS 4 Substitute CDATA section by equivalent text nodes\&. .RE .PP \fB\-\-noent\fR .RS 4 Substitute entity values for entity references\&. By default, \fBxmllint\fR leaves entity references in place\&. .RE .PP \fB\-\-nonet\fR .RS 4 Do not use the Internet to fetch DTDs or entities\&. .RE .PP \fB\-\-noout\fR .RS 4 Suppress output\&. By default, \fBxmllint\fR outputs the result tree\&. .RE .PP \fB\-\-nowarning\fR .RS 4 Do not emit warnings from the parser and/or validator\&. .RE .PP \fB\-\-nowrap\fR .RS 4 Do not output HTML doc wrapper\&. .RE .PP \fB\-\-noxincludenode\fR .RS 4 Do XInclude processing but do not generate XInclude start and end nodes\&. .RE .PP \fB\-\-nsclean\fR .RS 4 Remove redundant namespace declarations\&. .RE .PP \fB\-\-output \fR\fB\fIFILE\fR\fR .RS 4 Define a file path where \fBxmllint\fR will save the result of parsing\&. Usually the programs build a tree and save it on stdout, with this option the result XML instance will be saved onto a file\&. .RE .PP \fB\-\-path "\fR\fB\fIPATH(S)\fR\fR\fB"\fR .RS 4 Use the (space\- or colon\-separated) list of filesystem paths specified by \fIPATHS\fR to load DTDs or entities\&. Enclose space\-separated lists by quotation marks\&. .RE .PP \fB\-\-pattern \fR\fB\fIPATTERNVALUE\fR\fR .RS 4 Used to exercise the pattern recognition engine, which can be used with the reader interface to the parser\&. It allows to select some nodes in the document based on an XPath (subset) expression\&. Used for debugging\&. .RE .PP \fB\-\-postvalid\fR .RS 4 Validate after parsing has completed\&. .RE .PP \fB\-\-push\fR .RS 4 Use the push mode of the parser\&. .RE .PP \fB\-\-recover\fR .RS 4 Output any parsable portions of an invalid document\&. .RE .PP \fB\-\-relaxng \fR\fB\fISCHEMA\fR\fR .RS 4 Use RelaxNG file named \fISCHEMA\fR for validation\&. .RE .PP \fB\-\-repeat\fR .RS 4 Repeat 100 times, for timing or profiling\&. .RE .PP \fB\-\-schema \fR\fB\fISCHEMA\fR\fR .RS 4 Use a W3C XML Schema file named \fISCHEMA\fR for validation\&. .RE .PP \fB\-\-shell\fR .RS 4 Run a navigating shell\&. Details on available commands in shell mode are below (see the section called \(lqSHELL COMMANDS\(rq)\&. .RE .PP \fB\-\-xpath "\fR\fB\fIXPath_expression\fR\fR\fB"\fR .RS 4 Run an XPath expression given as argument and print the result\&. In case of a nodeset result, each node in the node set is serialized in full in the output\&. In case of an empty node set the "XPath set is empty" result will be shown and an error exit code will be returned\&. .RE .PP \fB\-\-stream\fR .RS 4 Use streaming API \- useful when used in combination with \fB\-\-relaxng\fR or \fB\-\-valid\fR options for validation of files that are too large to be held in memory\&. .RE .PP \fB\-\-testIO\fR .RS 4 Test user input/output support\&. .RE .PP \fB\-\-timing\fR .RS 4 Output information about the time it takes \fBxmllint\fR to perform the various steps\&. .RE .PP \fB\-\-valid\fR .RS 4 Determine if the document is a valid instance of the included Document Type Definition (DTD)\&. A DTD to be validated against also can be specified at the command line using the \fB\-\-dtdvalid\fR option\&. By default, \fBxmllint\fR also checks to determine if the document is well\-formed\&. .RE .PP \fB\-\-version\fR .RS 4 Display the version of \fBlibxml\fR(3) used\&. .RE .PP \fB\-\-walker\fR .RS 4 Test the walker module, which is a reader interface but for a document tree, instead of using the reader API on an unparsed document it works on an existing in\-memory tree\&. Used for debugging\&. .RE .PP \fB\-\-xinclude\fR .RS 4 Do XInclude processing\&. .RE .PP \fB\-\-xmlout\fR .RS 4 Used in conjunction with \fB\-\-html\fR\&. Usually when HTML is parsed the document is saved with the HTML serializer\&. But with this option the resulting document is saved with the XML serializer\&. This is primarily used to generate XHTML from HTML input\&. .RE .SH "SHELL COMMANDS" .PP \fBxmllint\fR offers an interactive shell mode invoked with the \fB\-\-shell\fR command\&. Available commands in shell mode include (in alphabetical order): .PP \fBbase\fR .RS 4 Display XML base of the node\&. .RE .PP \fBbye\fR .RS 4 Leave the shell\&. .RE .PP \fBcat \fR\fB\fINODE\fR\fR .RS 4 Display the given node or the current one\&. .RE .PP \fBcd \fR\fB\fIPATH\fR\fR .RS 4 Change the current node to the given path (if unique) or root if no argument is given\&. .RE .PP \fBdir \fR\fB\fIPATH\fR\fR .RS 4 Dumps information about the node (namespace, attributes, content)\&. .RE .PP \fBdu \fR\fB\fIPATH\fR\fR .RS 4 Show the structure of the subtree under the given path or the current node\&. .RE .PP \fBexit\fR .RS 4 Leave the shell\&. .RE .PP \fBhelp\fR .RS 4 Show this help\&. .RE .PP \fBfree\fR .RS 4 Display memory usage\&. .RE .PP \fBload \fR\fB\fIFILENAME\fR\fR .RS 4 Load a new document with the given filename\&. .RE .PP \fBls \fR\fB\fIPATH\fR\fR .RS 4 List contents of the given path or the current directory\&. .RE .PP \fBpwd\fR .RS 4 Display the path to the current node\&. .RE .PP \fBquit\fR .RS 4 Leave the shell\&. .RE .PP \fBsave \fR\fB\fIFILENAME\fR\fR .RS 4 Save the current document to the given filename or to the original name\&. .RE .PP \fBvalidate\fR .RS 4 Check the document for errors\&. .RE .PP \fBwrite \fR\fB\fIFILENAME\fR\fR .RS 4 Write the current node to the given filename\&. .RE .SH "ENVIRONMENT" .PP \fBSGML_CATALOG_FILES\fR .RS 4 SGML catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the \fBSGML_CATALOG_FILES\fR environment variable to a list of catalogs\&. An empty one should deactivate loading the default /etc/sgml/catalog catalog\&. .RE .PP \fBXML_CATALOG_FILES\fR .RS 4 XML catalog behavior can be changed by redirecting queries to the user\*(Aqs own set of catalogs\&. This can be done by setting the \fBXML_CATALOG_FILES\fR environment variable to a space\-separated list of catalogs\&. Use percent\-encoding to escape spaces or other characters\&. An empty variable should deactivate loading the default /etc/xml/catalog catalog\&. .RE .PP \fBXML_DEBUG_CATALOG\fR .RS 4 Setting the environment variable \fBXML_DEBUG_CATALOG\fR to \fInon\-zero\fR using the \fBexport\fR command outputs debugging information related to catalog operations\&. .RE .PP \fBXMLLINT_INDENT\fR .RS 4 Setting the environment variable \fBXMLLINT_INDENT\fR controls the indentation\&. The default value is two spaces " "\&. .RE .SH "DIAGNOSTICS" .PP \fBxmllint\fR return codes provide information that can be used when calling it from scripts\&. .PP \fB0\fR .RS 4 No error .RE .PP \fB1\fR .RS 4 Unclassified .RE .PP \fB2\fR .RS 4 Error in DTD .RE .PP \fB3\fR .RS 4 Validation error .RE .PP \fB4\fR .RS 4 Validation error .RE .PP \fB5\fR .RS 4 Error in schema compilation .RE .PP \fB6\fR .RS 4 Error writing output .RE .PP \fB7\fR .RS 4 Error in pattern (generated when \fB\-\-pattern\fR option is used) .RE .PP \fB8\fR .RS 4 Error in Reader registration (generated when \fB\-\-chkregister\fR option is used) .RE .PP \fB9\fR .RS 4 Out of memory error .RE .PP \fB10\fR .RS 4 XPath evaluation error .RE .SH "SEE ALSO" .PP \fBlibxml\fR(3) .PP More information can be found at .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBlibxml\fR(3) web page \m[blue]\fB\%https://gitlab.gnome.org/GNOME/libxml2\fR\m[] .RE .sp .SH "AUTHORS" .PP \fBJohn Fleck\fR <\&jfleck@inkstain\&.net\&> .RS 4 Author. .RE .PP \fBZiying Sherwin\fR <\&sherwin@nlm\&.nih\&.gov\&> .RS 4 Author. .RE .PP \fBHeiko Rupp\fR <\&hwr@pilhuhn\&.de\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br Copyright \(co 2001, 2004 .br PK!bL6KIIphp-config.1.gznu[Tn8}W l7XӦpm2(֋(]xŐə3gL{iQdkէ v 1\BrYÊњ]8{%y f>P˕+gZp.K<9\0P?23ޤYkv!y$%`nMÄ Tn)5<4 sq( .$N`}jVgr5+GkE^ `q=cd*? f6A ^AQ}o*Jij&MwL{Լn,? ?# k'27oVhX:ͽv@[ >'w'ſ\Ju]685CR݄NiQFG w,,KieFX~NQX2;N}/H*8*[T;'۵@.1p#dT~=\VEWbtX*\v~81&0_PK!Zphp.1.gznu[ZySG>E/* f]T$^b`7\Tk%2t ˕xRBw]bZWm77ܚE󉸔Ń qu4aOl&T\\~^*;'(h/.Ź,\..E1W7 k?&wG|5썇)b3}8 {#?07h<6A#5=phohSOu&:JhJ=7 aOWOxdij cKpYWI1e s׿-rY;!\*[ {S\Y {Ee pfcE9%*WD,[Wn T=3~Ȝ4,lҔu^qq2wSBEK "ڋ#&r9ʔ S 16Yf!W:BZbgTb+:1ZA3E E@ә0c*dӘu~ eEJJNB_9=+TzRsG0͙|XGh\ ³gAt$y=t#-PTW7{JVwS!LDgQL)@4UL+7f%UBU׆I#Ӳ(P0jQbRT䯶f!qVY(aղ֜@/"@X#jhڎS ^K`NőCi]T>ra9(KM᷈ŕ)u6jVIVkf}pC"F4@"RL'^L)!)Z,tzD o6F*=9#I\" PS,(|vD69 t.Ef2$<sĮ$r!]^)W:arʵlM]!YGd D<z,rsZBAڂ_!| -[{ ;"Ke8& yH.!NK@Ko[Id-8h4v)9e5KZNue[o+_=.|xet[l+NJwuQ+/pbcY<@SHpUTTj:-G {C724t߱?Sb We~LX "(x)$Ύw1A;bww)h!(uLlN~J:Vk]iUb,>HWCc=K3%i&1UIwKt+2 aGJ+|g sy-QsW] 9z0Uc0q$-}J }ѿ#ɡƄD-Rι-{RRW2Uj2Qv+O[k=Y˝zb4̵t^r . A9l*v+8aIQÙCR8hK_c[ܵJ%~AՐ" k?gI48T*j8%sT[S!`U]׃<|'o1N%hǂO9^#dUej@h05s^PB6(,4NH&ݳ%bh=J9x7q wTU0#?Cg D{ӓ/OuinW;lgg_'Yψxz &f}F~W|'ӌ]tK*wEMLe >$O,5r"D&| FgҪӳot uLԹA%ym{5! nBf+e>%Mrߐ2O;uPbmWtd'g);Eb68nF\Cں?{ p q^pgL[d`iݐJ SB]\0![#d2RϑI^&p K*:(-k=:G4-/LY=;˾ q@C3o@=5uYㄆO `#0KM ~ub[%S#.T,l#ι[{súR+,Hvgê;RW4FĢ^M'4iQ)Gay5y5RQ knÞhoLh1ax]YDļSmڰyM}w:rŷj%)韦sP+7=]6m0;W{;6ݍV"U_r;ˋd@ܛ2\eRqj5OYl7]v#C*,W~<@O\yd7_#med1xiEGzhNfK=twSIe9w+pZ^ܡ_E+F5 ͂ɯӋ׌o7vl|,z3w/9$Hgq9BJvۚd*/~;/::<PfY;fj* U^hÿNO:Bv>ӧ `O>F -ÜPkVeq?ܧdLyG$1xY؊23bUxXkqs@v#[sPS&G.IgKp:9I,l^R'cT$IܞnV9qlj@ɡnũ$ӊ@oJ=%hr=񳞉:w%+#JfZ=q TC4,5_N#ꔆ/Z=!Mcn Uؓy:2h?.oTX>ݯ2pbTn|Mt)\:ӐHH%1(6IJ2ӱnѶHvпwG+1 PލG[ @.~~1\z?NLNb7wdĒ K8c5/UdA4ˑ*j/=aTi4o\qF~?9wRģdڪߔa_kM*hWqlTlbo9#e*Ȍ|(a{Oe*Ā݀u;C}*nlFn*KE:$PK!': phar.1.gznu[Zmo8_~H JܢWlXfb尠%EPln%(r8y!@g/מo_ɵFP[Sx~봕f>WyD4:'=Q̔ݔ7?%m`eYzYkYp$ ~"e25HDGCfo{v8ܠ͘k e->3-Pv8u$IHjmBͣ4|[4EB҇C@Wa[^B GX2?U"7$Iq.İa 2!k0ޫ̙z B> 8_jwNL`l &'􂾘 rwu ['7:xbV V_buY;tQH$O?v|.v.l1O^7/Mnbt0h|oLV_? Dp.uTA3c It{| @d\x5ɇGdV.)zp9J&.s帚Vޖ|f\<ւbuς (x=XZt>NQMeH1I5*PK!n4$$phar.phar.1.gznu[+WM3/H,3z\u-PK!⯄## php-cgi.1.gznu[+WM3/(3GPK!Q3zaEE phpize.1.gznu[}Ro0~_q⩓ jFiV"Q4Z$fl+qH_ ]M}L.,TFFaq^`En }gE-jK-VLj|FklQ5B+ }0B'fOu zwMVw,y'xz 7J V8x͵#M'$0q(b)f Fn8[O,.F`ށ(ha8dq*% [^:Y^|ϣU X|K/HC;]rԉGn RwZ^T֚뺀 qp<1 l#IPPc9gFjI5[i,a߉=CIyy.?Y5:+ں>^GX hy @o !PK! |   compare.1nu[.TH compare 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME compare \- mathematically and visually annotate the difference between an image and its reconstruction. .SH SYNOPSIS .TP \fBmagick compare\fP \fIinput-file\fP \fIinput-file\fP [\fIoptions\fP] \fIoutput-file\fP .SH OVERVIEW The \fBcompare\fP program is a member of the ImageMagick(1) suite of tools. Use it to mathematically and visually annotate the difference between an image and its reconstruction. For more information about the compare command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/compare.html or https://imagemagick.org/script/compare.php. .SH DESCRIPTION Image Settings: \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-authenticate value decrypt image with this password \-background color background color \-colorspace type alternate image colorspace \-compose operator set image composite operator \-compress type type of pixel compression when writing the image \-decipher filename convert cipher pixels to plain pixels \-define format:option define one or more image format options \-density geometry horizontal and vertical density of the image \-depth value image depth \-dissimilarity-threshold value maximum distortion for (sub)image match \-encipher filename convert plain pixels to cipher pixels \-extract geometry extract area from image \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-gravity type horizontal and vertical text placement \-identify identify the format and characteristics of the image \-interlace type type of image interlacing scheme \-highlight-color color emphasize pixel differences with this color \-limit type value pixel cache resource limit \-lowlight-color color de-emphasize pixel differences with this color \-metric type measure differences between images with this metric \-monitor monitor progress \-negate replace each pixel with its complementary color \-profile filename add, delete, or apply an image profile \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-quantize colorspace reduce colors in this colorspace \-read-mask filename associate a read mask with the image \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-seed value seed a new sequence of pseudo-random numbers \-set attribute value set an image attribute \-similarity-threshold value minimum distortion for (sub)image match \-size geometry width and height of image \-subimage-search search for subimage \-synchronize synchronize image to storage device \-taint declare the image as modified \-transparent-color color transparent color \-type type image type \-write-mask filename associate a write mask with the image \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method Image Operators: \-auto-orient automatically orient image \-brightness-contrast geometry improve brightness / contrast of the image \-distort method args distort images according to given method and args \-level value adjust the level of image contrast \-resize geometry resize the image \-rotate degrees apply Paeth rotation to the image \-sigmoidal-contrast geometry lightness rescaling using sigmoidal contrast enhancement \-trim trim image edges Image Channel Operators: \-separate separate an image channel into a grayscale image Image Sequence Operators: \-crop geometry cut out a rectangular region of the image \-write filename write images to this file Image Stack Operators: \-delete indexes delete the image from the image sequence Miscellaneous Options: \-channel mask set the image channel mask \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. Two images are considered similar if their difference according to the specified metric and fuzz value is 0, with the exception of the normalized cross correlation metric (NCC), where two images are considered similar when their normalized cross correlation is 1. The default metric is NCC. The compare program returns 2 on error, 0 if the images are similar, or a value between 0 and 1 if they are not similar. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!D==magick.1nu[.TH magick 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME magick \- convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. .SH SYNOPSIS .TP \fBmagick\fP [\fIinput-options\fP] \fIinput-file\fP [\fIoutput-options\fP] \fIoutput-file\fP .SH OVERVIEW The \fBmagick\fP program is a member of the ImageMagick(1) suite of tools. Use it to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. For more information about the magick command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/magick.html or https://imagemagick.org/script/magick.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-affine matrix affine transform matrix \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-background color background color \-bias value add bias when convolving an image \-black-point-compensation use black point compensation \-blue-primary point chromaticity blue primary point \-bordercolor color border color \-caption string assign a caption to an image \-cdl filename color correct with a color decision list \-colors value preferred number of colors in the image \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator set image composite operator \-compress type type of pixel compression when writing the image \-decipher filename magick cipher pixels to plain pixels \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-direction type render text right-to-left or left-to-right \-display server get image or font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encipher filename magick plain pixels to cipher pixels \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-family name render text with this font family \-fill color color to use when filling a graphic primitive \-filter type use this filter when resizing an image \-flatten flatten a sequence of images \-font name render text with this font \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-gravity type horizontal and vertical text placement \-green-primary point chromaticity green primary point \-intent type type of rendering intent when managing the image color \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-kerning value set the space between two letters \-label string assign a label to an image \-limit type value pixel cache resource limit \-loop iterations add Netscape loop extension to your GIF animation \-mask filename associate a mask with the image \-matte store matte channel if the image has one \-mattecolor color frame color \-monitor monitor progress \-orient type image orientation \-origin geometry image origin \-page geometry size and location of an image canvas (setting) \-ping efficiently determine image attributes \-pointsize value font point size \-preview type image preview type \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-seed value seed a new sequence of pseudo-random numbers \-size geometry width and height of image \-statistic type geometry replace each pixel with corresponding statistic from the neighborhood \-stretch type render text with this font stretch \-stroke color graphic primitive stroke color \-strokewidth value graphic primitive stroke width \-style type render text with this font style \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-texture filename name of texture to tile onto the image background \-tile-offset geometry tile offset \-treedepth value color tree depth \-transparent-color color transparent color \-undercolor color annotation bounding box color \-units type the units of image resolution \-verbose print detailed information about the image \-view FlashPix viewing transforms \-virtual-pixel method virtual pixel access method \-weight type render text with this font weight \-white-point point chromaticity white point Image Operators: \-adaptive-blur geometry adaptively blur pixels; decrease effect near edges \-adaptive-resize geometry adaptively resize image with data dependent triangulation \-adaptive-sharpen geometry adaptively sharpen pixels; increase effect near edges \-annotate geometry text annotate the image with text \-auto-orient automatically orient image \-bilateral-blur geometry non-linear, edge-preserving, and noise-reducing smoothing filter \-black-threshold value force all pixels below the threshold into black \-blur geometry reduce image noise and reduce detail levels \-border geometry surround image with a border of color \-channel mask set the image channel mask \-charcoal radius simulate a charcoal drawing \-chop geometry remove pixels from the image interior \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorize value colorize the image with the fill color \-color-matrix matrix apply color correction to the image \-contrast enhance or reduce the image contrast \-contrast-stretch geometry improve contrast by `stretching' the intensity range \-convolve coefficients apply a convolution kernel to the image \-cycle amount cycle the image colormap \-despeckle reduce the speckles within an image \-draw string annotate the image with a graphic primitive \-edge radius apply a filter to detect edges in the image \-emboss radius emboss an image \-enhance apply a digital filter to enhance a noisy image \-equalize perform histogram equalization to an image \-evaluate operator value evaluate an arithmetic, relational, or logical expression \-extent geometry set the image size \-extract geometry extract area from image \-fft implements the discrete Fourier transform (DFT) \-flip flip image vertically \-floodfill geometry color floodfill the image with color \-flop flop image horizontally \-frame geometry surround image with an ornamental border \-function name apply a function to the image \-gamma value level of gamma correction \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center \-integral calculate the sum of values (pixel values) in the image \-lat geometry local adaptive thresholding \-layers method optimize or compare image layers \-level value adjust the level of image contrast \-linear-stretch geometry improve contrast by `stretching with saturation' the intensity range \-median geometry apply a median filter to the image \-mode geometry make each pixel the 'predominant color' of the neighborhood \-modulate value vary the brightness, saturation, and hue \-monochrome transform image to black and white \-morphology method kernel apply a morphology method to the image \-motion-blur geometry simulate motion blur \-negate replace each pixel with its complementary color \-noise geometry add or reduce noise in an image \-normalize transform image to span the full range of colors \-opaque color change this color to the fill color \-ordered-dither NxN add a noise pattern to the image with specific amplitudes \-paint radius simulate an oil painting \-polaroid angle simulate a Polaroid picture \-posterize levels reduce the image to a limited number of color levels \-print string interpret string and print to console \-profile filename add, delete, or apply an image profile \-quantize colorspace reduce colors in this colorspace \-radial-blur angle radial blur the image \-raise value lighten/darken image edges to create a 3-D effect \-random-threshold low,high random threshold the image \-range-threshold values perform either hard or soft thresholding within some range of values in an image \-region geometry apply options to a portion of the image \-render render vector graphics \-resample geometry change the resolution of an image \-resize geometry resize the image \-roll geometry roll an image vertically or horizontally \-rotate degrees apply Paeth rotation to the image \-sample geometry scale image with pixel sampling \-scale geometry scale the image \-segment values segment an image \-selective-blur geometry selectively blur pixels within a contrast threshold \-sepia-tone threshold simulate a sepia-toned photo \-set property value set an image property \-shade degrees shade the image using a distant light source \-shadow geometry simulate an image shadow \-sharpen geometry sharpen the image \-shave geometry shave pixels from the image edges \-shear geometry slide one edge of the image along the X or Y axis \-sigmoidal-contrast geometry lightness rescaling using sigmoidal contrast enhancement \-sketch geometry simulate a pencil sketch \-solarize threshold negate all pixels above the threshold level \-sort-pixels sort each scanline in ascending order of intensity \-splice geometry splice the background color into the image \-spread amount displace image pixels by a random amount \-strip strip image of all profiles and comments \-swirl degrees swirl image pixels about the center \-threshold value threshold the image \-thumbnail geometry create a thumbnail of the image \-tile filename tile image when filling a graphic primitive \-tint value tint the image with the fill color \-transform affine transform image \-transparent color make this color transparent within the image \-transpose flip image vertically and rotate 90 degrees \-transverse flop image horizontally and rotate 270 degrees \-trim trim image edges \-type type image type \-unique-colors discard all but one of any pixel color \-unsharp geometry sharpen the image \-vignette geometry soften the edges of the image in vignette style \-wave geometry alter an image along a sine wave \-white-threshold value force all pixels above the threshold into white Image Channel Operators: \-channel-extract channel-list extract the channels in order \-channel-inject channel-list inject the channels in order \-channel-swap channel,channel swap the channels Image Sequence Operators: \-affinity filename transform image colors to match this set of colors \-append append an image sequence top to bottom (use +append for left to right) \-clut apply a color lookup table to the image \-coalesce merge a sequence of images \-combine combine a sequence of images \-composite composite image \-crop geometry cut out a rectangular region of the image \-deconstruct break down an image sequence into constituent parts \-evaluate-sequence operator evaluate an arithmetic, relational, or logical expression \-flatten flatten a sequence of images \-fx expression apply mathematical expression to an image channel(s) \-hald-clut apply a Hald color lookup table to the image \-morph value morph an image sequence \-mosaic create a mosaic from an image sequence \-process arguments process the image with a custom image filter \-separate separate an image channel into a grayscale image \-smush geometry smush an image sequence together \-write filename write images to this file Image Stack Operators: \-clone indexes clone an image \-delete indexes delete the image from the image sequence \-duplicate count,indexes duplicate an image one or more times \-insert index insert last image into the image sequence \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information Use any setting or operator as an \fIoutput-option\fP. Only a limited number of setting are \fIinput-option\fP. They include: \-antialias, \-caption, \-density, \-define, \-encoding, \-font, \-pointsize, \-size, and \-texture as well as any of the miscellaneous options. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!p identify.1nu[.TH identify 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME identify \- describes the format and characteristics of one or more image files. .SH SYNOPSIS .TP \fBmagick identify\fP [\fIoptions\fP] \fIinput-file\fP .SH OVERVIEW The \fBidentify\fP program is a member of the ImageMagick(1) suite of tools. It describes the format and characteristics of one or more image files. It also reports if an image is incomplete or corrupt. The information returned includes the image number, the file name, the width and height of the image, whether the image is colormapped or not, the number of colors in the image (by default off use \fI-define unique=true\fP option), the number of bytes in the image, the format of the image (JPEG, PNM, etc.), and finally the number of seconds it took to read and process the image. Many more attributes are available with the verbose option. For more information about the identify command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/identify.html or https://imagemagick.org/script/identify.php. .SH DESCRIPTION Image Settings: \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorspace type alternate image colorspace \-crop geometry cut out a rectangular region of the image \-define format:option define one or more image format options \-define unique=true return the number of unique colors in the image \-density geometry horizontal and vertical density of the image \-depth value image depth \-endian type endianness (MSB or LSB) of the image \-extract geometry extract area from image \-features distance analyze image features (e.g. contrast, correlation) \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-gamma value of gamma correction \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-limit type value pixel cache resource limit \-list type Color, Configure, Delegate, Format, Magic, Module, Resource, or Type \-matte store matte channel if the image has one \-moments report image moments \-monitor monitor progress \-ping efficiently determine image attributes \-precision value maximum number of significant digits to print \-quiet suppress all warning messages \-read-mask filename associate a read mask with the image \-regard-warnings pay attention to warning messages \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-seed value seed a new sequence of pseudo-random numbers \-set attribute value set an image attribute \-size geometry width and height of image \-strip strip image of all profiles and comments \-unique display the number of unique colors in the image \-units type the units of image resolution \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method Image Operators: \-auto-orient automatically orient image \-channel mask set the image channel mask \-grayscale method convert image to grayscale \-negate replace each pixel with its complementary color Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-list type print a list of supported option arguments \-log format format of debugging information \-version print version information By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH NOTE Although some options appear to modify the file to be identified, the identify command is strictly \fBread only\fP. For instance, the crop option crops the in-memory image and then describes the result. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!/]%G==magick-script.1nu[.TH magick 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME magick-script \- scripting language that converts between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. .SH SYNOPSIS .TP \fBmagick-script\fP [\fIinput-options\fP] \fIinput-file\fP [\fIoutput-options\fP] \fIoutput-file\fP .SH OVERVIEW The \fBmagick-script\fP program is a member of the ImageMagick(1) suite of tools. Use it to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Here is an example script: #!/bin/env magick-script -size 100x100 xc:red ( rose: -rotate -90 ) +append -write show: For more information about the magick-script command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/magick-script.html or https://imagemagick.org/script/magick-script.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-affine matrix affine transform matrix \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-background color background color \-bias value add bias when convolving an image \-black-point-compensation use black point compensation \-blue-primary point chromaticity blue primary point \-bordercolor color border color \-caption string assign a caption to an image \-cdl filename color correct with a color decision list \-colors value preferred number of colors in the image \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator set image composite operator \-compress type type of pixel compression when writing the image \-decipher filename magick cipher pixels to plain pixels \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-direction type render text right-to-left or left-to-right \-display server get image or font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encipher filename magick plain pixels to cipher pixels \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-family name render text with this font family \-fill color color to use when filling a graphic primitive \-filter type use this filter when resizing an image \-flatten flatten a sequence of images \-font name render text with this font \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-gravity type horizontal and vertical text placement \-green-primary point chromaticity green primary point \-intent type type of rendering intent when managing the image color \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-kerning value set the space between two letters \-label string assign a label to an image \-limit type value pixel cache resource limit \-loop iterations add Netscape loop extension to your GIF animation \-mask filename associate a mask with the image \-matte store matte channel if the image has one \-mattecolor color frame color \-monitor monitor progress \-orient type image orientation \-origin geometry image origin \-page geometry size and location of an image canvas (setting) \-ping efficiently determine image attributes \-pointsize value font point size \-preview type image preview type \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-seed value seed a new sequence of pseudo-random numbers \-size geometry width and height of image \-statistic type geometry replace each pixel with corresponding statistic from the neighborhood \-stretch type render text with this font stretch \-stroke color graphic primitive stroke color \-strokewidth value graphic primitive stroke width \-style type render text with this font style \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-texture filename name of texture to tile onto the image background \-tile-offset geometry tile offset \-treedepth value color tree depth \-transparent-color color transparent color \-undercolor color annotation bounding box color \-units type the units of image resolution \-verbose print detailed information about the image \-view FlashPix viewing transforms \-virtual-pixel method virtual pixel access method \-weight type render text with this font weight \-white-point point chromaticity white point Image Operators: \-adaptive-blur geometry adaptively blur pixels; decrease effect near edges \-adaptive-resize geometry adaptively resize image with data dependent triangulation \-adaptive-sharpen geometry adaptively sharpen pixels; increase effect near edges \-annotate geometry text annotate the image with text \-auto-orient automatically orient image \-black-threshold value force all pixels below the threshold into black \-blur geometry reduce image noise and reduce detail levels \-border geometry surround image with a border of color \-channel mask set the image channel mask \-charcoal radius simulate a charcoal drawing \-chop geometry remove pixels from the image interior \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorize value colorize the image with the fill color \-color-matrix matrix apply color correction to the image \-contrast enhance or reduce the image contrast \-contrast-stretch geometry improve contrast by `stretching' the intensity range \-convolve coefficients apply a convolution kernel to the image \-cycle amount cycle the image colormap \-despeckle reduce the speckles within an image \-draw string annotate the image with a graphic primitive \-edge radius apply a filter to detect edges in the image \-emboss radius emboss an image \-enhance apply a digital filter to enhance a noisy image \-equalize perform histogram equalization to an image \-evaluate operator value evaluate an arithmetic, relational, or logical expression \-extent geometry set the image size \-extract geometry extract area from image \-fft implements the discrete Fourier transform (DFT) \-flip flip image vertically \-floodfill geometry color floodfill the image with color \-flop flop image horizontally \-frame geometry surround image with an ornamental border \-function name apply a function to the image \-gamma value level of gamma correction \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center \-lat geometry local adaptive thresholding \-layers method optimize or compare image layers \-level value adjust the level of image contrast \-linear-stretch geometry improve contrast by `stretching with saturation' the intensity range \-median geometry apply a median filter to the image \-mode geometry make each pixel the 'predominant color' of the neighborhood \-modulate value vary the brightness, saturation, and hue \-monochrome transform image to black and white \-morphology method kernel apply a morphology method to the image \-motion-blur geometry simulate motion blur \-negate replace each pixel with its complementary color \-noise geometry add or reduce noise in an image \-normalize transform image to span the full range of colors \-opaque color change this color to the fill color \-ordered-dither NxN add a noise pattern to the image with specific amplitudes \-paint radius simulate an oil painting \-polaroid angle simulate a Polaroid picture \-posterize levels reduce the image to a limited number of color levels \-print string interpret string and print to console \-profile filename add, delete, or apply an image profile \-quantize colorspace reduce colors in this colorspace \-radial-blur angle radial blur the image \-raise value lighten/darken image edges to create a 3-D effect \-random-threshold low,high random threshold the image \-range-threshold values perform either hard or soft thresholding within some range of values in an image \-region geometry apply options to a portion of the image \-render render vector graphics \-resample geometry change the resolution of an image \-resize geometry resize the image \-roll geometry roll an image vertically or horizontally \-rotate degrees apply Paeth rotation to the image \-sample geometry scale image with pixel sampling \-scale geometry scale the image \-segment values segment an image \-selective-blur geometry selectively blur pixels within a contrast threshold \-sepia-tone threshold simulate a sepia-toned photo \-set property value set an image property \-shade degrees shade the image using a distant light source \-shadow geometry simulate an image shadow \-sharpen geometry sharpen the image \-shave geometry shave pixels from the image edges \-shear geometry slide one edge of the image along the X or Y axis \-sigmoidal-contrast geometry lightness rescaling using sigmoidal contrast enhancement \-sketch geometry simulate a pencil sketch \-solarize threshold negate all pixels above the threshold level \-splice geometry splice the background color into the image \-spread amount displace image pixels by a random amount \-strip strip image of all profiles and comments \-swirl degrees swirl image pixels about the center \-threshold value threshold the image \-thumbnail geometry create a thumbnail of the image \-tile filename tile image when filling a graphic primitive \-tint value tint the image with the fill color \-transform affine transform image \-transparent color make this color transparent within the image \-transpose flip image vertically and rotate 90 degrees \-transverse flop image horizontally and rotate 270 degrees \-trim trim image edges \-type type image type \-unique-colors discard all but one of any pixel color \-unsharp geometry sharpen the image \-vignette geometry soften the edges of the image in vignette style \-wave geometry alter an image along a sine wave \-white-threshold value force all pixels above the threshold into white Image Channel Operators: \-channel-extract channel-list extract the channels in order \-channel-inject channel-list inject the channels in order \-channel-swap channel,channel swap the channels Image Sequence Operators: \-affinity filename transform image colors to match this set of colors \-append append an image sequence top to bottom (use +append for left to right) \-clut apply a color lookup table to the image \-coalesce merge a sequence of images \-combine combine a sequence of images \-composite composite image \-crop geometry cut out a rectangular region of the image \-deconstruct break down an image sequence into constituent parts \-evaluate-sequence operator evaluate an arithmetic, relational, or logical expression \-flatten flatten a sequence of images \-fx expression apply mathematical expression to an image channel(s) \-hald-clut apply a Hald color lookup table to the image \-morph value morph an image sequence \-mosaic create a mosaic from an image sequence \-process arguments process the image with a custom image filter \-separate separate an image channel into a grayscale image \-smush geometry smush an image sequence together \-write filename write images to this file Image Stack Operators: \-clone indexes clone an image \-delete indexes delete the image from the image sequence \-duplicate count,indexes duplicate an image one or more times \-insert index insert last image into the image sequence \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information Use any setting or operator as an \fIoutput-option\fP. Only a limited number of setting are \fIinput-option\fP. They include: \-antialias, \-caption, \-density, \-define, \-encoding, \-font, \-pointsize, \-size, and \-texture as well as any of the miscellaneous options. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!V x montage.1nu[.TH montage 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME montage \- create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more. .SH SYNOPSIS .TP \fBmagick montage\fP \fIinput-file[s]\fP [\fIoptions\fP] \fIoutput-file\fP .SH OVERVIEW The \fBmontage\fP program is a member of the ImageMagick(1) suite of tools. Use it to create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more. For more information about the montage command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/montage.html or https://imagemagick.org/script/montage.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-affine matrix affine transform matrix \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-authenticate value decrypt image with this password \-blue-primary point chromaticity blue primary point \-bordercolor color border color \-caption string assign a caption to an image \-colors value preferred number of colors in the image \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator composite operator \-compress type type of pixel compression when writing the image \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-display server query font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-extract geometry extract area from image \-fill color color to use when filling a graphic primitive \-filter type use this filter when resizing an image \-font name render text with this font \-format "string" output formatted image characteristics \-gamma value level of gamma correction \-geometry geometry preferred tile and border sizes \-gravity direction which direction to gravitate towards \-green-primary point chromaticity green primary point \-identify identify the format and characteristics of the image \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-kerning value set the space between two letters \-label string assign a label to an image \-limit type value pixel cache resource limit \-matte store matte channel if the image has one \-mattecolor color frame color \-mode type framing style \-monitor monitor progress \-page geometry size and location of an image canvas (setting) \-pointsize value font point size \-profile filename add, delete, or apply an image profile \-quality value JPEG/MIFF/PNG compression level \-quantize colorspace reduce colors in this colorspace \-quiet suppress all warning messages \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas (operator) \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scenes range image scene range \-seed value seed a new sequence of pseudo-random numbers \-set attribute value set an image attribute \-shadow add a shadow beneath a tile to simulate depth \-size geometry width and height of image \-stroke color color to use when stroking a graphic primitive \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-texture filename name of texture to tile onto the image background \-thumbnail geometry create a thumbnail of the image \-tile geometry number of tiles per row and column \-title string decorate the montage image with a title \-transparent-color color transparent color \-treedepth value color tree depth \-trim trim image edges \-units type the units of image resolution \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method \-white-point point chromaticity white point Image Operators: \-adaptive-sharpen geometry adaptively sharpen pixels; increase effect near edges \-annotate geometry text annotate the image with text \-auto-orient automagically orient image \-blur geometry reduce image noise and reduce detail levels \-border geometry surround image with a border of color \-channel mask set the image channel mask \-crop geometry preferred size and location of the cropped image \-distort method args distort images according to given method and args \-draw string annotate the image with a graphic primitive \-extent geometry set the image size \-flatten flatten a sequence of images \-flip flip image in the vertical direction \-flop flop image in the horizontal direction \-frame geometry surround image with an ornamental border \-layers method optimize or compare image layers \-monochrome transform image to black and white \-polaroid angle simulate a Polaroid picture \-resize geometry resize the image \-rotate degrees apply Paeth rotation to the image \-scale geometry scale the image \-strip strip image of all profiles and comments \-transform affine transform image \-transpose flip image vertically and rotate 90 degrees \-transparent color make this color transparent within the image \-type type image type \-unsharp geometry sharpen the image Image Sequence Operators: \-coalesce merge a sequence of images \-composite composite image Image Stack Operators: \-clone indexes clone an image \-delete indexes delete the image from the image sequence \-duplicate count,indexes duplicate an image one or more times \-insert index insert last image into the image sequence \-reverse reverse image sequence \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information In addition to those listed above, you can specify these standard X resources as command line options: \-background, \-bordercolor, \-borderwidth, \-font, \-mattecolor, or \-title. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!^ C ImageMagick.1nu[.TH ImageMagick 1 "2020-04-25" "ImageMagick" .SH NAME ImageMagick \- a free software suite for the creation, modification and display of bitmap images. .SH SYNOPSIS \fBmagick\fP [\fIoptions\fP|\fIinput-file\fP]... \fIoutput-file\fP \fBmagick-script\fP \fIscript-file\fP [\fIscript-arguments\fP]... .SH OVERVIEW Use ImageMagick\[rg] to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and B\['e]zier curves. The functionality of ImageMagick is typically utilized from the command-line. It can also be accessed from programs written in your favorite language using the corresponding interface: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), JuliaIO (Julia), L-Magick (Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), ALImageMagick (Delphi), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), magick (R), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically. ImageMagick utilizes multiple computational threads to increase performance. It can read, process, or write mega-, giga-, or tera-pixel image sizes. ImageMagick is free software delivered as a ready-to-run binary distribution, or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under a derived Apache 2.0 license. The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory error, thread data race detection, and continuous fuzzing to help prevent security vulnerabilities. The current release is ImageMagick 7.0.8-11. It runs on Linux, Windows, macOS, iOS, Android OS, and others. We continue to maintain the legacy release of ImageMagick, version 6, at https://legacy.imagemagick.org. The authoritative ImageMagick web site is https://imagemagick.org. The authoritative source code repository is https://github.com/ImageMagick. We maintain a source code mirror at https://gitlab.com/ImageMagick. ImageMagick is a suite of command-line utilities for manipulating images. You may have edited images at one time or another using programs such as GIMP or Photoshop, which expose their functionality mainly through a graphical user interface. However, a GUI program is not always the right tool. Suppose you want to process an image dynamically from a web script, or you want to apply the same operations to many images, or repeat a specific operation at different times to the same or different image. For these types of operations, a command-line utility is more suitable. The remaining of this manpage is a list of the available command-line utilities and their short descriptions. For further documentation concerning a particular command and its options, consult the corresponding manpage. If you are just getting acquainted with ImageMagick, start at the top of that list, the magick(1) program, and work your way down. Also, make sure to check out Anthony Thyssen's tutorial on how to use ImageMagick utilities to convert, compose, or edit images from the command-line. .TP .B magick Read images into memory, perform operations on those images, and write them out to either the same or some other image file format. The "-script" option can be used to switch from processing command line options, to reading options from a file or pipeline. .TP .B magick-script This command is similar to magick(1) but with an implied "-script" option. It is useful in special "#!/usr/bin/env magick-script" scripts that search for the magick-script(1) command anywhere along the users PATH, rather than in a hardcoded command location. .TP .B convert Available for Backward compatibility with ImageMagick's version 6 convert(1). Essentially, it is just an alias to a restrictive form of the magick(1) command, which should be used instead. .TP .B mogrify Resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. This command overwrites the original image file, whereas convert(1) writes to a different image file. .TP .B identify Describe the format and characteristics of one or more image files. .TP .B composite Overlap one image over another. .TP .B montage Create a composite image by combining several separate ones. The images are tiled on the composite image, optionally adorned with a border, frame, image name, and more. .TP .B compare Mathematically and visually annotate the difference between an image and its reconstruction. .TP .B stream Stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image, a row at a time, making stream(1) desirable when working with large images, or when you require raw pixel components. .TP .B display Display an image or image sequence on any X server. .TP .B animate Animate an image sequence on any X server. .TP .B import Save any visible window on any X server and output it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the it. .TP .B conjure Interpret and execute scripts written in the Magick Scripting Language (MSL). .PP For more information about the ImageMagick, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/index.html or https://imagemagick.org/. .SH SEE ALSO convert(1), compare(1), composite(1), conjure(1), identify(1), import(1), magick(1), magick-script(1), montage(1), display(1), animate(1), import(1), Magick++-config(1), MagickCore-config(1), MagickWand-config(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!^d d stream.1nu[.TH stream 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME stream \- a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. .SH SYNOPSIS .TP \fBmagick stream\fP [\fIoptions\fP] \fIinput-file\fP \fIoutput-file\fP .SH OVERVIEW \fBStream\fP is a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making \fBstream\fP desirable when working with large images or when you require raw pixel components. For more information about the stream command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/stream.html or https://imagemagick.org/script/stream.php. .SH DESCRIPTION Image Settings: \-authenticate value decrypt image with this password \-colorspace type alternate image colorspace \-compress type type of pixel compression when writing the image \-define format:option define one or more image format options \-density geometry horizontal and vertical density of the image \-depth value image depth \-extract geometry extract area from image \-identify identify the format and characteristics of the image \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-limit type value pixel cache resource limit \-map components one or more pixel components \-monitor monitor progress \-quantize colorspace reduce colors in this colorspace \-quiet suppress all warning messages \-regard-warnings pay attention to warning messages \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-seed value seed a new sequence of pseudo-random numbers \-set attribute value set an image attribute \-size geometry width and height of image \-storage-type type pixel storage type \-synchronize synchronize image to storage device \-taint declare the image as modified \-transparent-color color transparent color \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method Miscellaneous Options: \-channel mask set the image channel mask \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!/99 webpinfo.1nu[.\" Hey, EMACS: -*- nroff -*- .TH WEBPINFO 1 "July 18, 2024" .SH NAME webpinfo \- print out the chunk level structure of WebP files along with basic integrity checks. .SH SYNOPSIS .B webpinfo .I OPTIONS .I INPUT .br .B webpinfo [\-h|\-help|\-H|\-longhelp] .br .SH DESCRIPTION This manual page documents the .B webpinfo command. .PP \fBwebpinfo\fP can be used to print out the chunk level structure and bitstream header information of WebP files. It can also check if the files are of valid WebP format. .SH OPTIONS .TP .B \-version Print the version number (as major.minor.revision) and exit. .TP .B \-quiet Do not show chunk parsing information. .TP .B \-diag Show parsing error diagnosis. .TP .B \-summary Show chunk stats summary. .TP .BI \-bitstream_info Parse bitstream header. .TP .B \-h, \-help A short usage summary. .TP .B \-H, \-longhelp Detailed usage instructions. .SH INPUT Input files in WebP format. Input files must come last, following options (if any). There can be multiple input files. .SH EXIT STATUS If there were no problems during execution, \fBwebpinfo\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBwebpinfo\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES .br webpinfo \-h .br webpinfo \-diag \-summary input_file.webp .br webpinfo \-bitstream_info input_file_1.webp input_file_2.webp .br webpinfo *.webp .SH AUTHORS \fBwebpinfo\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Hui Su , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR webpmux (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK! gpJJ convert.1nu[.TH convert 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME convert \- convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. .SH SYNOPSIS .TP \fBmagick convert\fP [\fIinput-options\fP] \fIinput-file\fP [\fIoutput-options\fP] \fIoutput-file\fP .SH OVERVIEW The \fBconvert\fP program is a member of the ImageMagick(1) suite of tools. Use it to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. For more information about the convert command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/convert.html or https://imagemagick.org/script/convert.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-affine matrix affine transform matrix \-alpha option activate, deactivate, reset, or set the alpha channel \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-attenuate value lessen (or intensify) when adding noise to an image \-background color background color \-bias value add bias when convolving an image \-black-point-compensation use black point compensation \-blue-primary point chromaticity blue primary point \-bordercolor color border color \-caption string assign a caption to an image \-cdl filename color correct with a color decision list \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator set image composite operator \-compress type type of pixel compression when writing the image \-decipher filename convert cipher pixels to plain pixels \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-direction type render text right-to-left or left-to-right \-display server get image or font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encipher filename convert plain pixels to cipher pixels \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-family name render text with this font family \-features distance analyze image features (e.g. contrast, correlation) \-fill color color to use when filling a graphic primitive \-filter type use this filter when resizing an image \-flatten flatten a sequence of images \-font name render text with this font \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-gravity type horizontal and vertical text placement \-green-primary point chromaticity green primary point \-intensity method method to generate intensity value from pixel \-intent type type of rendering intent when managing the image color \-interlace type type of image interlacing scheme \-interline-spacing value set the space between two text lines \-interpolate method pixel color interpolation method \-interword-spacing value set the space between two words \-kerning value set the space between two letters \-label string assign a label to an image \-limit type value pixel cache resource limit \-loop iterations add Netscape loop extension to your GIF animation \-matte store matte channel if the image has one \-mattecolor color frame color \-metric type measure differences between images with this metric \-moments report image moments \-monitor monitor progress \-orient type image orientation \-page geometry size and location of an image canvas (setting) \-ping efficiently determine image attributes \-pointsize value font point size \-precision value maximum number of significant digits to print \-preview type image preview type \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-read-mask filename associate a read mask with the image \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-remap filename transform image colors to match this set of colors \-repage geometry size and location of an image canvas \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-seed value seed a new sequence of pseudo-random numbers \-size geometry width and height of image \-statistic type geometry replace each pixel with corresponding statistic from the neighborhood \-stretch type render text with this font stretch \-stroke color graphic primitive stroke color \-strokewidth value graphic primitive stroke width \-style type render text with this font style \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-texture filename name of texture to tile onto the image background \-tile-offset geometry tile offset \-treedepth value color tree depth \-transparent-color color transparent color \-undercolor color annotation bounding box color \-units type the units of image resolution \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method \-weight type render text with this font weight \-white-point point chromaticity white point \-write-mask filename associate a write mask with the image Image Operators: \-adaptive-blur geometry adaptively blur pixels; decrease effect near edges \-adaptive-resize geometry adaptively resize image with data dependent triangulation \-adaptive-sharpen geometry adaptively sharpen pixels; increase effect near edges \-annotate geometry text annotate the image with text \-auto-gamma automagically adjust gamma level of image \-auto-level automagically adjust color levels of image \-auto-orient automatically orient image \-auto-threshold method automatically perform image thresholding \-bench iterations measure performance \-bilateral-blur geometry non-linear, edge-preserving, and noise-reducing smoothing filter \-black-threshold value force all pixels below the threshold into black \-blue-shift factor simulate a scene at nighttime in the moonlight \-blur geometry reduce image noise and reduce detail levels \-border geometry surround image with a border of color \-brightness-contrast geometry improve brightness / contrast of the image \-canny geometry detect edges in the image \-channel mask set the image channel mask \-charcoal radius simulate a charcoal drawing \-chop geometry remove pixels from the image interior \-clahe geometry contrast limited adaptive histogram equalization \-clamp keep pixel values in range (0-QuantumRange) \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorize value colorize the image with the fill color \-color-matrix matrix apply color correction to the image \-colors value preferred number of colors in the image \-color-threshold start_color-stop_color force all pixels in the color range to white otherwise black \-connected-component connectivity connected-components uniquely labeled \-contrast enhance or reduce the image contrast \-contrast-stretch geometry improve contrast by `stretching' the intensity range \-convolve coefficients apply a convolution kernel to the image \-cycle amount cycle the image colormap \-deskew threshold straighten an image \-despeckle reduce the speckles within an image \-distort method args distort images according to given method and args \-draw string annotate the image with a graphic primitive \-edge radius apply a filter to detect edges in the image \-emboss radius emboss an image \-enhance apply a digital filter to enhance a noisy image \-equalize perform histogram equalization to an image \-evaluate operator value evaluate an arithmetic, relational, or logical expression \-extent geometry set the image size \-extract geometry extract area from image \-fft implements the discrete Fourier transform (DFT) \-flip flip image vertically \-floodfill geometry color floodfill the image with color \-flop flop image horizontally \-frame geometry surround image with an ornamental border \-function name apply a function to the image \-gamma value level of gamma correction \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image \-grayscale method convert image to grayscale \-hough-lines geometry identify lines in the image \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center \-integral calculate the sum of values (pixel values) in the image \-interpolative-resize geometry resize image using interpolation \-kmeans geometry K means color reduction \-lat geometry local adaptive thresholding \-layers method optimize or compare image layers \-level value adjust the level of image contrast \-level-colors color,color level image with the given colors \-linear-stretch geometry improve contrast by `stretching with saturation' the intensity range \-liquid-rescale geometry rescale image with seam-carving \-mean-shift geometry delineate arbitrarily shaped clusters in the image \-median geometry apply a median filter to the image \-mode geometry make each pixel the 'predominant color' of the neighborhood \-modulate value vary the brightness, saturation, and hue \-monochrome transform image to black and white \-morphology method kernel apply a morphology method to the image \-motion-blur geometry simulate motion blur \-negate replace each pixel with its complementary color \-noise geometry add or reduce noise in an image \-normalize transform image to span the full range of colors \-opaque color change this color to the fill color \-ordered-dither NxN add a noise pattern to the image with specific amplitudes \-paint radius simulate an oil painting \-perceptible epsilon pixel value less than |epsilon| become epsilon or -epsilon \-polaroid angle simulate a Polaroid picture \-posterize levels reduce the image to a limited number of color levels \-print string interpret string and print to console \-profile filename add, delete, or apply an image profile \-quantize colorspace reduce colors in this colorspace \-radial-blur angle radial blur the image \-raise value lighten/darken image edges to create a 3-D effect \-random-threshold low,high random threshold the image \-range-threshold values perform either hard or soft thresholding within some range of values in an image \-region geometry apply options to a portion of the image \-render render vector graphics \-resample geometry change the resolution of an image \-resize geometry resize the image \-roll geometry roll an image vertically or horizontally \-rotate degrees apply Paeth rotation to the image \-sample geometry scale image with pixel sampling \-scale geometry scale the image \-segment values segment an image \-selective-blur geometry selectively blur pixels within a contrast threshold \-sepia-tone threshold simulate a sepia-toned photo \-set property value set an image property \-shade degrees shade the image using a distant light source \-shadow geometry simulate an image shadow \-sharpen geometry sharpen the image \-shave geometry shave pixels from the image edges \-shear geometry slide one edge of the image along the X or Y axis \-sigmoidal-contrast geometry lightness rescaling using sigmoidal contrast enhancement \-sketch geometry simulate a pencil sketch \-solarize threshold negate all pixels above the threshold level \-sort-pixels sort each scanline in ascending order of intensity \-sparse-color method args fill in a image based on a few color points \-splice geometry splice the background color into the image \-spread amount displace image pixels by a random amount \-strip strip image of all profiles and comments \-swirl degrees swirl image pixels about the center \-threshold value threshold the image \-thumbnail geometry create a thumbnail of the image \-tile filename tile image when filling a graphic primitive \-tint value tint the image with the fill color \-transform affine transform image \-transparent color make this color transparent within the image \-transpose flip image vertically and rotate 90 degrees \-transverse flop image horizontally and rotate 270 degrees \-trim trim image edges \-type type image type \-unique-colors discard all but one of any pixel color \-unsharp geometry sharpen the image \-vignette geometry soften the edges of the image in vignette style \-wave geometry alter an image along a sine wave \-wavelet-denoise threshold removes noise from the image using a wavelet transform \-white-balance automagically adjust white balance of image \-white-threshold value force all pixels above the threshold into white Image Channel Operators: \-channel-fx expression exchange, extract, or transfer one or more image channels \-separate separate an image channel into a grayscale image Image Sequence Operators: \-append append an image sequence top to bottom (use +append for left to right) \-clut apply a color lookup table to the image \-coalesce merge a sequence of images \-combine combine a sequence of images \-compare mathematically and visually annotate the difference between an image and its reconstruction \-complex operator perform complex mathematics on an image sequence \-composite composite image \-copy geometry offset, copy pixels from one area of an image to another \-crop geometry cut out a rectangular region of the image \-deconstruct break down an image sequence into constituent parts \-evaluate-sequence operator evaluate an arithmetic, relational, or logical expression \-flatten flatten a sequence of images \-fx expression apply mathematical expression to an image channel(s) \-hald-clut apply a Hald color lookup table to the image \-morph value morph an image sequence \-mosaic create a mosaic from an image sequence \-poly terms build a polynomial from the image sequence and the corresponding terms (coefficients and degree pairs) \-process arguments process the image with a custom image filter \-smush geometry smush an image sequence together \-write filename write images to this file Image Stack Operators: \-clone indexes clone an image \-delete indexes delete the image from the image sequence \-duplicate count,indexes duplicate an image one or more times \-insert index insert last image into the image sequence \-reverse reverse image sequence \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-distribute-cache port distributed pixel cache spanning one or more servers \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information Use any setting or operator as an \fIoutput-option\fP. Only a limited number of setting are \fIinput-option\fP. They include: \-antialias, \-caption, \-density, \-define, \-encoding, \-font, \-pointsize, \-size, and \-texture as well as any of the miscellaneous options. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!dwebp.1nu[.\" Hey, EMACS: -*- nroff -*- .TH DWEBP 1 "July 18, 2024" .SH NAME dwebp \- decompress a WebP file to an image file .SH SYNOPSIS .B dwebp .RI [ options ] " input_file.webp .br .SH DESCRIPTION This manual page documents the .B dwebp command. .PP \fBdwebp\fP decompresses WebP files into PNG, PAM, PPM or PGM images. Note: Animated WebP files are not supported. .SH OPTIONS The basic options are: .TP .B \-h Print usage summary. .TP .B \-version Print the version number (as major.minor.revision) and exit. .TP .BI \-o " string Specify the name of the output file (as PNG format by default). Using "-" as output name will direct output to 'stdout'. .TP .BI \-\- " string Explicitly specify the input file. This option is useful if the input file starts with an '\-' for instance. This option must appear \fBlast\fP. Any other options afterward will be ignored. If the input file is "\-", the data will be read from \fIstdin\fP instead of a file. .TP .B \-bmp Change the output format to uncompressed BMP. .TP .B \-tiff Change the output format to uncompressed TIFF. .TP .B \-pam Change the output format to PAM (retains alpha). .TP .B \-ppm Change the output format to PPM (discards alpha). .TP .B \-pgm Change the output format to PGM. The output consists of luma/chroma samples instead of RGB, using the IMC4 layout. This option is mainly for verification and debugging purposes. .TP .B \-yuv Change the output format to raw YUV. The output consists of luma/chroma-U/chroma-V samples instead of RGB, saved sequentially as individual planes. This option is mainly for verification and debugging purposes. .TP .B \-nofancy Don't use the fancy upscaler for YUV420. This may lead to jaggy edges (especially the red ones), but should be faster. .TP .B \-nofilter Don't use the in-loop filtering process even if it is required by the bitstream. This may produce visible blocks on the non-compliant output, but it will make the decoding faster. .TP .BI \-dither " strength Specify a dithering \fBstrength\fP between 0 and 100. Dithering is a post-processing effect applied to chroma components in lossy compression. It helps by smoothing gradients and avoiding banding artifacts. .TP .BI \-alpha_dither If the compressed file contains a transparency plane that was quantized during compression, this flag will allow dithering the reconstructed plane in order to generate smoother transparency gradients. .TP .B \-nodither Disable all dithering (default). .TP .B \-mt Use multi-threading for decoding, if possible. .TP .BI \-crop " x_position y_position width height Crop the decoded picture to a rectangle with top-left corner at coordinates (\fBx_position\fP, \fBy_position\fP) and size \fBwidth\fP x \fBheight\fP. This cropping area must be fully contained within the source rectangle. The top-left corner will be snapped to even coordinates if needed. This option is meant to reduce the memory needed for cropping large images. Note: the cropping is applied \fIbefore\fP any scaling. .TP .B \-flip Flip decoded image vertically (can be useful for OpenGL textures for instance). .TP \fB\-resize\fR, \fB\-scale\fI width height\fR Rescale the decoded picture to dimension \fBwidth\fP x \fBheight\fP. This option is mostly intended to reducing the memory needed to decode large images, when only a small version is needed (thumbnail, preview, etc.). Note: scaling is applied \fIafter\fP cropping. If either (but not both) of the \fBwidth\fP or \fBheight\fP parameters is 0, the value will be calculated preserving the aspect-ratio. .TP .B \-quiet Do not print anything. .TP .B \-v Print extra information (decoding time in particular). .TP .B \-noasm Disable all assembly optimizations. .SH EXIT STATUS If there were no problems during execution, \fBdwebp\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBdwebp\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES dwebp picture.webp \-o output.png .br dwebp picture.webp \-ppm \-o output.ppm .br dwebp \-o output.ppm \-\- \-\-\-picture.webp .br cat picture.webp | dwebp \-o \- \-\- \- > output.ppm .SH AUTHORS \fBdwebp\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Pascal Massimino , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR cwebp (1), .BR gif2webp (1), .BR webpmux (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. .SS Output file format details PAM: http://netpbm.sourceforge.net/doc/pam.html .br PGM: http://netpbm.sourceforge.net/doc/pgm.html .br PPM: http://netpbm.sourceforge.net/doc/ppm.html .br PNG: http://www.libpng.org/pub/png/png-sitemap.html#info PK!AD"" conjure.1nu[.TH conjure 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME conjure \- interprets and executes scripts written in the Magick Scripting Language (MSL). .SH SYNOPSIS .TP \fBmagick conjure\fP [\fIoptions\fP] \fIscript.msl\fP .SH OVERVIEW The \fBconjure\fP program is a member of the ImageMagick(1) suite of tools. Use it to process a Magick Scripting Language (MSL) script. The Magick scripting language (MSL) will primarily benefit those that want to accomplish custom image processing tasks but do not wish to program, or those that do not have access to a Perl interpreter or a compiler. For more information about the conjure command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/conjure.html or https://imagemagick.org/script/conjure.php. .SH DESCRIPTION Image Settings: \-monitor monitor progress \-quiet suppress all warning messages \-regard-warnings pay attention to warning messages \-seed value seed a new sequence of pseudo-random numbers \-verbose print detailed information about the image Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information In addition, define any key value pairs required by your script. For example, conjure \-size 100x100 \-color blue \-foo bar script.msl .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!FK0 animate.1nu[.TH animate 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME animate \- animates an image or image sequence on any X server. .SH SYNOPSIS .TP \fBmagick animate\fP [\fIoptions\fP] \fIinput-file\fP .SH OVERVIEW The \fBanimate\fP program is a member of the ImageMagick(1) suite of tools. Use it to animate an image or image sequence on any X server. For more information about the animate command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/animate.html or https://imagemagick.org/script/animate.php. .SH DESCRIPTION Image Settings: \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-authenticate value decrypt image with this password \-backdrop display image centered on a backdrop \-colormap type Shared or Private \-colorspace type alternate image colorspace \-decipher filename convert cipher pixels to plain pixels \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-display server display image to this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-filter type use this filter when resizing an image \-format "string" output formatted image characteristics \-gamma value level of gamma correction \-geometry geometry preferred size and location of the Image window \-gravity type horizontal and vertical backdrop placement \-identify identify the format and characteristics of the image \-immutable displayed image cannot be modified \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-limit type value pixel cache resource limit \-loop iterations loop images then exit \-matte store matte channel if the image has one \-map type display image using this Standard Colormap \-monitor monitor progress \-pause seconds to pause before reanimating \-page geometry size and location of an image canvas (setting) \-quantize colorspace reduce colors in this colorspace \-quiet suppress all warning messages \-regard-warnings pay attention to warning messages \-remote command execute a command in an remote display process \-repage geometry size and location of an image canvas (operator) \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scenes range image scene range \-seed value seed a new sequence of pseudo-random numbers \-set attribute value set an image attribute \-size geometry width and height of image \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-transparent-color color transparent color \-treedepth value color tree depth \-verbose print detailed information about the image \-visual type display image using this visual type \-virtual-pixel method virtual pixel access method \-window id display image to background of this window Image Operators: \-channel mask set the image channel mask \-colors value preferred number of colors in the image \-crop geometry preferred size and location of the cropped image \-extent geometry set the image size \-extract geometry extract area from image \-monochrome transform image to black and white \-resample geometry change the resolution of an image \-resize geometry resize the image \-rotate degrees apply Paeth rotation to the image \-strip strip image of all profiles and comments \-thumbnail geometry create a thumbnail of the image \-trim trim image edges Image Sequence Operators: \-coalesce merge a sequence of images \-flatten flatten a sequence of images Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information In addition to those listed above, you can specify these standard X resources as command line options: \-background, \-bordercolor, \-borderwidth, \-font, \-foreground, \-iconGeometry, \-iconic, \-name, \-mattecolor, \-shared-memory, or \-title. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. Buttons: 1 press to map or unmap the Command widget .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!>dWW display.1nu[.TH display 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME display \- displays an image or image sequence on any X server. .SH SYNOPSIS .TP \fBmagick display\fP [\fIoptions\fP] \fIinput-file\fP .SH OVERVIEW The \fBdisplay\fP program is a member of the ImageMagick(1) suite of tools. Use it to display an image or image sequence on any X server. For more information about the display command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/display.html or https://imagemagick.org/script/display.php. .SH DESCRIPTION Image Settings: \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-backdrop display image centered on a backdrop \-colormap type Shared or Private \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compress type type of pixel compression when writing the image \-decipher filename convert cipher pixels to plain pixels \-deskew threshold straighten an image \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-display server display image to this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-endian type endianness (MSB or LSB) of the image \-equalize perform histogram equalization to an image \-filter type use this filter when resizing an image \-format "string" output formatted image characteristics \-fuzz distance colors within this distance are considered equal \-geometry geometry preferred size and location of the Image window \-gravity type horizontal and vertical backdrop placement \-identify identify the format and characteristics of the image \-immutable displayed image cannot be modified \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-label string assign a label to an image \-limit type value pixel cache resource limit \-loop iterations loop images then exit \-map type display image using this Standard Colormap \-matte store matte channel if the image has one \-monitor monitor progress \-page geometry size and location of an image canvas \-profile filename add, delete, or apply an image profile \-quality value JPEG/MIFF/PNG compression level \-quantize colorspace reduce colors in this colorspace \-quiet suppress all warning messages \-regard-warnings pay attention to warning messages \-remote command execute a command in an remote display process \-repage geometry size and location of an image canvas (operator) \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scenes range image scene range \-seed value seed a new sequence of pseudo-random numbers \-set property value set an image property \-size geometry width and height of image \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-texture filename name of texture to tile onto the image background \-transparent-color color transparent color \-treedepth value color tree depth \-update seconds detect when image file is modified and redisplay \-verbose print detailed information about the image \-visual type display image using this visual type \-virtual-pixel method virtual pixel access method \-window id display image to background of this window \-window-group id exit program when this window id is destroyed \-write filename write image to a file Image Operators: \-auto-orient automatically orient image \-border geometry surround image with a border of color \-channel mask set the image channel mask \-clip clip along the first path from the 8BIM profile \-clip-path id clip along a named path from the 8BIM profile \-colors value preferred number of colors in the image \-contrast enhance or reduce the image contrast \-crop geometry preferred size and location of the cropped image \-despeckle reduce the speckles within an image \-edge factor apply a filter to detect edges in the image \-enhance apply a digital filter to enhance a noisy image \-extent geometry set the image size \-extract geometry extract area from image \-flip flip image in the vertical direction \-flop flop image in the horizontal direction \-frame geometry surround image with an ornamental border \-gamma value level of gamma correction \-monochrome transform image to black and white \-negate replace each pixel with its complementary color \-normalize transform image to span the full range of colors \-raise value lighten/darken image edges to create a 3-D effect \-resample geometry change the resolution of an image \-resize geometry resize the image \-roll geometry roll an image vertically or horizontally \-rotate degrees apply Paeth rotation to the image \-sample geometry scale image with pixel sampling \-segment value segment an image \-sharpen geometry sharpen the image \-strip strip image of all profiles and comments \-threshold value threshold the image \-thumbnail geometry create a thumbnail of the image \-trim trim image edges Image Sequence Operators: \-coalesce merge a sequence of images \-flatten flatten a sequence of images Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information In addition to those listed above, you can specify these standard X resources as command line options: \-background, \-bordercolor, \-borderwidth, \-font, \-foreground, \-iconGeometry, \-iconic, \-mattecolor, \-name, \-shared-memory, \-usePixmap, or \-title. By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. Buttons: 1 press to map or unmap the Command widget 2 press and drag to magnify a region of an image 3 press to load an image from a visual image directory .SH NOTE The display program defaults to the X screen resolution. To display vector formats at their intended size, override the default resolution: display -density 72 drawing.svg .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK! l4747cwebp.1nu[.\" Hey, EMACS: -*- nroff -*- .TH CWEBP 1 "April 10, 2025" .SH NAME cwebp \- compress an image file to a WebP file .SH SYNOPSIS .B cwebp .RI [ options ] " input_file \-o output_file.webp .br .SH DESCRIPTION This manual page documents the .B cwebp command. .PP \fBcwebp\fP compresses an image using the WebP format. Input format can be either PNG, JPEG, TIFF, WebP or raw Y'CbCr samples. Note: Animated PNG and WebP files are not supported. .SH OPTIONS The basic options are: .TP .BI \-o " string Specify the name of the output WebP file. If omitted, \fBcwebp\fP will perform compression but only report statistics. Using "\-" as output name will direct output to 'stdout'. .TP .BI \-\- " string Explicitly specify the input file. This option is useful if the input file starts with a '\-' for instance. This option must appear \fBlast\fP. Any other options afterward will be ignored. .TP .B \-h, \-help A short usage summary. .TP .B \-H, \-longhelp A summary of all the possible options. .TP .B \-version Print the version number (as major.minor.revision) and exit. .TP .B \-lossless Encode the image without any loss. For images with fully transparent area, the invisible pixel values (R/G/B or Y/U/V) will be preserved only if the \-exact option is used. .TP .BI \-near_lossless " int Specify the level of near\-lossless image preprocessing. This option adjusts pixel values to help compressibility, but has minimal impact on the visual quality. It triggers lossless compression mode automatically. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default). The typical value is around 60. Note that lossy with \fB\-q 100\fP can at times yield better results. .TP .BI \-q " float Specify the compression factor for RGB channels between 0 and 100. The default is 75. .br In case of lossy compression (default), a small factor produces a smaller file with lower quality. Best quality is achieved by using a value of 100. .br In case of lossless compression (specified by the \fB\-lossless\fP option), a small factor enables faster compression speed, but produces a larger file. Maximum compression is achieved by using a value of 100. .TP .BI \-z " int Switch on \fBlossless\fP compression mode with the specified level between 0 and 9, with level 0 being the fastest, 9 being the slowest. Fast mode produces larger file size than slower ones. A good default is \fB\-z 6\fP. This option is actually a shortcut for some predefined settings for quality and method. If options \fB\-q\fP or \fB\-m\fP are subsequently used, they will invalidate the effect of this option. .TP .BI \-alpha_q " int Specify the compression factor for alpha compression between 0 and 100. Lossless compression of alpha is achieved using a value of 100, while the lower values result in a lossy compression. The default is 100. .TP .BI \-preset " string Specify a set of pre\-defined parameters to suit a particular type of source material. Possible values are: \fBdefault\fP, \fBphoto\fP, \fBpicture\fP, \fBdrawing\fP, \fBicon\fP, \fBtext\fP. Since \fB\-preset\fP overwrites the other parameters' values (except the \fB\-q\fP one), this option should preferably appear first in the order of the arguments. .TP .BI \-m " int Specify the compression method to use. This parameter controls the trade off between encoding speed and the compressed file size and quality. Possible values range from 0 to 6. Default value is 4. When higher values are used, the encoder will spend more time inspecting additional encoding possibilities and decide on the quality gain. Lower value can result in faster processing time at the expense of larger file size and lower compression quality. .TP .BI \-crop " x_position y_position width height Crop the source to a rectangle with top\-left corner at coordinates (\fBx_position\fP, \fBy_position\fP) and size \fBwidth\fP x \fBheight\fP. This cropping area must be fully contained within the source rectangle. Note: the cropping is applied \fIbefore\fP any scaling. .TP .BI \-resize " width height Resize the source to a rectangle with size \fBwidth\fP x \fBheight\fP. If either (but not both) of the \fBwidth\fP or \fBheight\fP parameters is 0, the value will be calculated preserving the aspect\-ratio. Note: scaling is applied \fIafter\fP cropping. .TP .BI \-resize_mode " string Specify the behavior of the \fB\-resize\fP option. Possible values are: \fBdown_only\fP, \fBup_only\fP, \fBalways\fP (default). \fBdown_only\fP will use the values specified by \fB\-resize\fP if \fIeither\fP the input width or height are larger than the given dimensions. Similarly, \fBup_only\fP will only resize if \fIeither\fP the input width or height are smaller than the given dimensions. .TP .B \-mt Use multi\-threading for encoding, if possible. .TP .B \-low_memory Reduce memory usage of lossy encoding by saving four times the compressed size (typically). This will make the encoding slower and the output slightly different in size and distortion. This flag is only effective for methods 3 and up, and is off by default. Note that leaving this flag off will have some side effects on the bitstream: it forces certain bitstream features like number of partitions (forced to 1). Note that a more detailed report of bitstream size is printed by \fBcwebp\fP when using this option. .SS LOSSY OPTIONS These options are only effective when doing lossy encoding (the default, with or without alpha). .TP .BI \-size " int Specify a target size (in bytes) to try and reach for the compressed output. The compressor will make several passes of partial encoding in order to get as close as possible to this target. If both \fB\-size\fP and \fB\-psnr\fP are used, \fB\-size\fP value will prevail. .TP .BI \-psnr " float Specify a target PSNR (in dB) to try and reach for the compressed output. The compressor will make several passes of partial encoding in order to get as close as possible to this target. If both \fB\-size\fP and \fB\-psnr\fP are used, \fB\-size\fP value will prevail. .TP .BI \-pass " int Set a maximum number of passes to use during the dichotomy used by options \fB\-size\fP or \fB\-psnr\fP. Maximum value is 10, default is 1. If options \fB\-size\fP or \fB\-psnr\fP were used, but \fB\-pass\fP wasn't specified, a default value of '6' passes will be used. If \fB\-pass\fP is specified, but neither \fB-size\fP nor \fB-psnr\fP are, a target PSNR of 40dB will be used. .TP .BI \-qrange " int int Specifies the permissible interval for the quality factor. This is particularly useful when using multi-pass (\fB\-size\fP or \fB\-psnr\fP options). Default is 0 100. If the quality factor is outside this range, it will be clamped. If the minimum value must be less or equal to the maximum one. .TP .B \-af Turns auto\-filter on. This algorithm will spend additional time optimizing the filtering strength to reach a well\-balanced quality. .TP .B \-jpeg_like Change the internal parameter mapping to better match the expected size of JPEG compression. This flag will generally produce an output file of similar size to its JPEG equivalent (for the same \fB\-q\fP setting), but with less visual distortion. .TP Advanced options: .TP .BI \-f " int Specify the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering). A value of 0 will turn off any filtering. Higher value will increase the strength of the filtering process applied after decoding the picture. The higher the value the smoother the picture will appear. Typical values are usually in the range of 20 to 50. .TP .BI \-sharpness " int Specify the sharpness of the filtering (if used). Range is 0 (sharpest) to 7 (least sharp). Default is 0. .TP .B \-strong Use strong filtering (if filtering is being used thanks to the \fB\-f\fP option). Strong filtering is on by default. .TP .B \-nostrong Disable strong filtering (if filtering is being used thanks to the \fB\-f\fP option) and use simple filtering instead. .TP .B \-sharp_yuv Use more accurate and sharper RGB->YUV conversion. Note that this process is slower than the default 'fast' RGB->YUV conversion. .TP .BI \-sns " int Specify the amplitude of the spatial noise shaping. Spatial noise shaping (or \fBsns\fP for short) refers to a general collection of built\-in algorithms used to decide which area of the picture should use relatively less bits, and where else to better transfer these bits. The possible range goes from 0 (algorithm is off) to 100 (the maximal effect). The default value is 50. .TP .BI \-segments " int Change the number of partitions to use during the segmentation of the sns algorithm. Segments should be in range 1 to 4. Default value is 4. This option has no effect for methods 3 and up, unless \fB\-low_memory\fP is used. .TP .BI \-partition_limit " int Degrade quality by limiting the number of bits used by some macroblocks. Range is 0 (no degradation, the default) to 100 (full degradation). Useful values are usually around 30\-70 for moderately large images. In the VP8 format, the so\-called control partition has a limit of 512k and is used to store the following information: whether the macroblock is skipped, which segment it belongs to, whether it is coded as intra 4x4 or intra 16x16 mode, and finally the prediction modes to use for each of the sub\-blocks. For a very large image, 512k only leaves room for a few bits per 16x16 macroblock. The absolute minimum is 4 bits per macroblock. Skip, segment, and mode information can use up almost all these 4 bits (although the case is unlikely), which is problematic for very large images. The partition_limit factor controls how frequently the most bit\-costly mode (intra 4x4) will be used. This is useful in case the 512k limit is reached and the following message is displayed: \fIError code: 6 (PARTITION0_OVERFLOW: Partition #0 is too big to fit 512k)\fP. If using \fB\-partition_limit\fP is not enough to meet the 512k constraint, one should use less segments in order to save more header bits per macroblock. See the \fB\-segments\fP option. Note the \fB-m\fP and \fB-q\fP options also influence the encoder's decisions and ability to hit this limit. .SS LOGGING OPTIONS These options control the level of output: .TP .B \-v Print extra information (encoding time in particular). .TP .B \-print_psnr Compute and report average PSNR (Peak\-Signal\-To\-Noise ratio). .TP .B \-print_ssim Compute and report average SSIM (structural similarity metric, see https://en.wikipedia.org/wiki/SSIM for additional details). .TP .B \-print_lsim Compute and report local similarity metric (sum of lowest error amongst the collocated pixel neighbors). .TP .B \-progress Report encoding progress in percent. .TP .B \-quiet Do not print anything. .TP .B \-short Only print brief information (output file size and PSNR) for testing purposes. .TP .BI \-map " int Output additional ASCII\-map of encoding information. Possible map values range from 1 to 6. This is only meant to help debugging. .SS ADDITIONAL OPTIONS More advanced options are: .TP .BI \-s " width height Specify that the input file actually consists of raw Y'CbCr samples following the ITU\-R BT.601 recommendation, in 4:2:0 linear format. The luma plane has size \fBwidth\fP x \fBheight\fP. .TP .BI \-pre " int Specify some preprocessing steps. Using a value of '2' will trigger quality\-dependent pseudo\-random dithering during RGBA\->YUVA conversion (lossy compression only). .TP .BI \-alpha_filter " string Specify the predictive filtering method for the alpha plane. One of 'none', \&'fast' or 'best', in increasing complexity and slowness order. Default is \&'fast'. Internally, alpha filtering is performed using four possible predictions (none, horizontal, vertical, gradient). The 'best' mode will try each mode in turn and pick the one which gives the smaller size. The 'fast' mode will just try to form an a priori guess without testing all modes. .TP .BI \-alpha_method " int Specify the algorithm used for alpha compression: 0 or 1. Algorithm 0 denotes no compression, 1 uses WebP lossless format for compression. The default is 1. .TP .B \-exact Preserve RGB values in transparent area. The default is off, to help compressibility. .TP .BI \-blend_alpha " int This option blends the alpha channel (if present) with the source using the background color specified in hexadecimal as 0xrrggbb. The alpha channel is afterward reset to the opaque value 255. .TP .B \-noalpha Using this option will discard the alpha channel. .TP .BI \-hint " string Specify the hint about input image type. Possible values are: \fBphoto\fP, \fBpicture\fP or \fBgraph\fP. .TP .BI \-metadata " string A comma separated list of metadata to copy from the input to the output if present. Valid values: \fBall\fP, \fBnone\fP, \fBexif\fP, \fBicc\fP, \fBxmp\fP. The default is \fBnone\fP. Note: each input format may not support all combinations. .TP .B \-noasm Disable all assembly optimizations. .SH EXIT STATUS If there were no problems during execution, \fBcwebp\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBcwebp\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES cwebp \-q 50 -lossless picture.png \-o picture_lossless.webp .br cwebp \-q 70 picture_with_alpha.png \-o picture_with_alpha.webp .br cwebp \-sns 70 \-f 50 \-size 60000 picture.png \-o picture.webp .br cwebp \-o picture.webp \-\- \-\-\-picture.png .SH AUTHORS \fBcwebp\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Pascal Massimino , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR dwebp (1), .BR gif2webp (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK!c webpmux.1nu[.\" Hey, EMACS: -*- nroff -*- .TH WEBPMUX 1 "July 18, 2024" .SH NAME webpmux \- create animated WebP files from non\-animated WebP images, extract frames from animated WebP images, and manage XMP/EXIF metadata and ICC profile. .SH SYNOPSIS .B webpmux \-get .I GET_OPTIONS .I INPUT .B \-o .I OUTPUT .br .B webpmux \-set .I SET_OPTIONS .I INPUT .B \-o .I OUTPUT .br .B webpmux \-strip .I STRIP_OPTIONS .I INPUT .B \-o .I OUTPUT .br .B webpmux \-frame .I FRAME_OPTIONS .B [ \-frame ... ] [ \-loop .I LOOP_COUNT .B ] .br .RS 8 .B [ \-bgcolor .I BACKGROUND_COLOR .B ] \-o .I OUTPUT .RE .br .B webpmux \-duration .I DURATION OPTIONS .B [ \-duration ... ] .I INPUT .B \-o .I OUTPUT .br .B webpmux \-info .I INPUT .br .B webpmux [\-h|\-help] .br .B webpmux \-version .br .B webpmux argument_file_name .SH DESCRIPTION This manual page documents the .B webpmux command. .PP \fBwebpmux\fP can be used to create/extract from animated WebP files, as well as to add/extract/strip XMP/EXIF metadata and ICC profile. If a single file name (not starting with the character '\-') is supplied as the argument, the command line arguments are actually tokenized from this file. This allows for easy scripting or using a large number of arguments. .SH OPTIONS .SS GET_OPTIONS (\-get): .TP .B icc Get ICC profile. .TP .B exif Get EXIF metadata. .TP .B xmp Get XMP metadata. .TP .BI frame " n Get nth frame from an animated image. (n = 0 has a special meaning: last frame). .SS SET_OPTIONS (\-set) .TP .BI loop " loop_count Set loop count on an animated file. .P Where: 'loop_count' must be in range [0, 65535]. .TP .BI bgcolor " A,R,G,B Set the background color of the canvas on an animated file. .P where: 'A', 'R', 'G' and 'B' are integers in the range 0 to 255 specifying the Alpha, Red, Green and Blue component values respectively. .TP .BI icc " file.icc Set ICC profile. .P Where: 'file.icc' contains the ICC profile to be set. .TP .BI exif " file.exif Set EXIF metadata. .P Where: 'file.exif' contains the EXIF metadata to be set. .TP .BI xmp " file.xmp Set XMP metadata. .P Where: 'file.xmp' contains the XMP metadata to be set. .SS STRIP_OPTIONS (\-strip) .TP .B icc Strip ICC profile. .TP .B exif Strip EXIF metadata. .TP .B xmp Strip XMP metadata. .SS DURATION_OPTIONS (\-duration) Amend the duration of a specific interval of frames. This option is only effective on animated WebP and has no effect on a single-frame file. .TP .I duration[,start[,end]] Where: .br .B duration is the duration for the interval in milliseconds (mandatory). Must be non-negative. .br .B start is the starting frame index of the interval (optional). .br .B end is the ending frame index (inclusive) of the interval (optional). .TP The three typical usages of this option are: .br .B -duration d set the duration to 'd' for the whole animation. .br .B -duration d,f set the duration of frame 'f' to 'd'. .br .B -duration d,start,end set the duration to 'd' for the whole [start,end] interval. .TP .P Note that the frames outside of the [start, end] interval will remain untouched. The 'end' value '0' has the special meaning 'last frame of the animation'. .TP .I Reminder: frame indexing starts at '1'. .br .SS FRAME_OPTIONS (\-frame) Create an animated WebP file from multiple (non\-animated) WebP images. .TP .I file_i +di[+xi+yi[+mi[bi]]] Where: 'file_i' is the i'th frame (WebP format), 'xi','yi' specify the image offset for this frame, 'di' is the pause duration before next frame, 'mi' is the dispose method for this frame (0 for NONE or 1 for BACKGROUND) and 'bi' is the blending method for this frame (+b for BLEND or \-b for NO_BLEND). Argument 'bi' can be omitted and will default to +b (BLEND). Also, 'mi' can be omitted if 'bi' is omitted and will default to 0 (NONE). Finally, if 'mi' and 'bi' are omitted then 'xi' and 'yi' can be omitted and will default to +0+0. .TP .BI \-loop " n Loop the frames n number of times. 0 indicates the frames should loop forever. Valid range is 0 to 65535 [Default: 0 (infinite)]. .TP .BI \-bgcolor " A,R,G,B Background color of the canvas. .br where: 'A', 'R', 'G' and 'B' are integers in the range 0 to 255 specifying the Alpha, Red, Green and Blue component values respectively [Default: 255,255,255,255]. .SS INPUT .TP Input file in WebP format. .SS OUTPUT (\-o) .TP Output file in WebP format. .SS Note: .TP The nature of EXIF, XMP and ICC data is not checked and is assumed to be valid. .SH EXIT STATUS If there were no problems during execution, \fBwebpmux\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBwebpmux\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES .P Add ICC profile: .br webpmux \-set icc image_profile.icc in.webp \-o icc_container.webp .P Extract ICC profile: .br webpmux \-get icc icc_container.webp \-o image_profile.icc .P Strip ICC profile: .br webpmux \-strip icc icc_container.webp \-o without_icc.webp .P Add XMP metadata: .br webpmux \-set xmp image_metadata.xmp in.webp \-o xmp_container.webp .P Extract XMP metadata: .br webpmux \-get xmp xmp_container.webp \-o image_metadata.xmp .P Strip XMP metadata: .br webpmux \-strip xmp xmp_container.webp \-o without_xmp.webp .P Add EXIF metadata: .br webpmux \-set exif image_metadata.exif in.webp \-o exif_container.webp .P Extract EXIF metadata: .br webpmux \-get exif exif_container.webp \-o image_metadata.exif .P Strip EXIF metadata: .br webpmux \-strip exif exif_container.webp \-o without_exif.webp .P Create an animated WebP file from 3 (non\-animated) WebP images: .br webpmux \-frame 1.webp +100 \-frame 2.webp +100+50+50 .br .RS 8 \-frame 3.webp +100+50+50+1+b \-loop 10 \-bgcolor 255,255,255,255 .br \-o anim_container.webp .RE .P Get the 2nd frame from an animated WebP file: .br webpmux \-get frame 2 anim_container.webp \-o frame_2.webp .P Using \-get/\-set/\-strip with input file name starting with '\-': .br webpmux \-set icc image_profile.icc \-o icc_container.webp \-\- \-\-\-in.webp .br webpmux \-get icc \-o image_profile.icc \-\- \-\-\-icc_container.webp .br webpmux \-strip icc \-o without_icc.webp \-\- \-\-\-icc_container.webp .SH AUTHORS \fBwebpmux\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Vikas Arora , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR cwebp (1), .BR dwebp (1), .BR gif2webp (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK!}xx img2webp.1nu[.\" Hey, EMACS: -*- nroff -*- .TH IMG2WEBP 1 "November 26, 2024" .SH NAME img2webp \- create animated WebP file from a sequence of input images. .SH SYNOPSIS .B img2webp [file_options] [[frame_options] frame_file]... [\-o webp_file] .br .B img2webp argument_file_name .br .SH DESCRIPTION This manual page documents the .B img2webp command. .PP \fBimg2webp\fP compresses a sequence of images using the animated WebP format. Input images can either be PNG, JPEG, TIFF or WebP. If a single file name (not starting with the character '\-') is supplied as the argument, the command line arguments are actually tokenized from this file. This allows for easy scripting or using a large number of arguments. .SH FILE-LEVEL OPTIONS The file-level options are applied at the beginning of the compression process, before the input frames are read. .TP .BI \-o " string Specify the name of the output WebP file. .TP .BI \-min_size Encode images to achieve smallest size. This disables key frame insertion and picks the parameters resulting in the smallest output for each frame. It uses lossless compression by default, but can be combined with \-q, \-m, \-lossy or \-mixed options. .TP .BI \-kmin " int .TP .BI \-kmax " int Specify the minimum and maximum distance between consecutive key frames (independently decodable frames) in the output animation. The tool will insert some key frames into the output animation as needed so that this criteria is satisfied. .br .B \-mixed Mixed compression mode: optimize compression of the image by picking either lossy or lossless compression for each frame heuristically. This global option disables the local option \fB-lossy\fP and \fB-lossless\fP . .TP .BI \-near_lossless " int Specify the level of near\-lossless image preprocessing. This option adjusts pixel values to help compressibility, but has minimal impact on the visual quality. It triggers lossless compression mode automatically. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default). The typical value is around 60. Note that lossy with \fB\-q 100\fP can at times yield better results. .TP .B \-sharp_yuv Use more accurate and sharper RGB->YUV conversion. Note that this process is slower than the default 'fast' RGB->YUV conversion. .TP .BI \-loop " int Specifies the number of times the animation should loop. Using '0' means 'loop indefinitely'. .TP .BI \-v Be more verbose. .TP .B \-h, \-help A short usage summary. .TP .B \-version Print the version numbers of the relevant libraries used. .SH PER-FRAME OPTIONS The per-frame options are applied for the images following as arguments in the command line. They can be modified any number of times preceding each particular input image. .TP .BI \-d " int Specify the image duration in milliseconds. .TP .B \-lossless, \-lossy Compress the next image(s) using lossless or lossy compression mode. The default mode is lossless. .TP .BI \-q " float Specify the compression factor between 0 and 100. The default is 75. .TP .BI \-m " int Specify the compression method to use. This parameter controls the trade off between encoding speed and the compressed file size and quality. Possible values range from 0 to 6. Default value is 4. When higher values are used, the encoder will spend more time inspecting additional encoding possibilities and decide on the quality gain. Lower value can result in faster processing time at the expense of larger file size and lower compression quality. .TP .B \-exact, \-noexact Preserve or alter RGB values in transparent area. The default is \fB-noexact\fP, to help compressibility. Note \fB\-noexact\fP may cause artifacts in frames compressed with \fB\-lossy\fP. .SH EXIT STATUS If there were no problems during execution, \fBimg2webp\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBimg2webp\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLE img2webp -loop 2 in0.png -lossy in1.jpg -d 80 in2.tiff -o out.webp .br .SH AUTHORS \fBimg2webp\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Pascal Massimino , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR webpmux (1), .BR gif2webp (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK!6 composite.1nu[.TH composite 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME composite \- overlaps one image over another. .SH SYNOPSIS .TP \fBmagick composite\fP \fB[\fP \fIoptions\fP \fB... ]\fP \fIchange-file base-file\fP \fB[\fP \fImask-file\fP \fB]\fP \fIoutput-image\fP .SH OVERVIEW The \fBcomposite\fP program is a member of the ImageMagick(1) suite of tools. Use it to overlap one image over another. For more information about the composite command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/composite.html or https://imagemagick.org/script/composite.php. .SH DESCRIPTION Image Settings: \-affine matrix affine transform matrix \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-authenticate value decrypt image with this password \-blue-primary point chromaticity blue primary point \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator composite operator \-compress type type of pixel compression when writing the image \-decipher filename convert cipher pixels to plain pixels \-define format:option define one or more image format options \-depth value image depth \-density geometry horizontal and vertical density of the image \-display server get image or font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encipher filename convert plain pixels to cipher pixels \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-filter type use this filter when resizing an image \-font name render text with this font \-format "string" output formatted image characteristics \-gravity type which direction to gravitate towards \-green-primary point chromaticity green primary point \-interlace type type of image interlacing scheme \-interpolate method pixel color interpolation method \-label string assign a label to an image \-limit type value pixel cache resource limit \-matte store matte channel if the image has one \-monitor monitor progress \-page geometry size and location of an image canvas (setting) \-pointsize value font point size \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas (operator) \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-seed value seed a new sequence of pseudo-random numbers \-size geometry width and height of image \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-transparent-color color transparent color \-treedepth value color tree depth \-tile repeat composite operation across and down image \-units type the units of image resolution \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method \-white-point point chromaticity white point Image Operators: \-blend geometry blend images \-border geometry surround image with a border of color \-bordercolor color border color \-channel mask set the image channel mask \-colors value preferred number of colors in the image \-displace geometry shift image pixels defined by a displacement map \-dissolve value dissolve the two images a given percent \-distort geometry shift lookup according to a absolute distortion map \-extract geometry extract area from image \-geometry geometry location of the composite image \-identify identify the format and characteristics of the image \-monochrome transform image to black and white \-negate replace each pixel with its complementary color \-profile filename add ICM or IPTC information profile to image \-quantize colorspace reduce colors in this colorspace \-rotate degrees apply Paeth rotation to the image \-resize geometry resize the image \-sharpen geometry sharpen the image \-shave geometry shave pixels from the image edges \-stegano offset hide watermark within an image \-stereo combine two image to create a stereo anaglyph \-strip strip image of all profiles and comments \-thumbnail geometry create a thumbnail of the image \-transform affine transform image \-type type image type \-unsharp geometry sharpen the image \-watermark geometry percent brightness and saturation of a watermark \-write filename write images to this file Image Stack Operators: \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!Ah6II mogrify.1nu[.TH mogrify 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME mogrify \- resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Mogrify overwrites the original image file, whereas, convert(1) writes to a different image file. .SH SYNOPSIS .TP \fBmagick mogrify\fP [\fIoptions\fP] \fIinput-file\fP .SH OVERVIEW The \fBmogrify\fP program is a member of the ImageMagick(1) suite of tools. Use it to resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. This tool is similar to convert(1) except the original image file is overwritten with any changes you request. For more information about the mogrify command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/mogrify.html or https://imagemagick.org/script/mogrify.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-affine matrix affine transform matrix \-antialias remove pixel-aliasing \-authenticate value decrypt image with this password \-attenuate value lessen (or intensify) when adding noise to an image \-background color background color \-bias value add bias when convolving an image \-black-point-compensation use black point compensation \-blue-primary point chromaticity blue primary point \-bordercolor color border color \-caption string assign a caption to an image \-cdl filename color correct with a color decision list \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compose operator set image composite operator \-compress type type of pixel compression when writing the image \-decipher filename convert cipher pixels to plain pixels \-define format:option define one or more image format options \-delay centiseconds display the next image after pausing \-density geometry horizontal and vertical density of the image \-depth value image depth \-direction type render text right-to-left or left-to-right \-display server get image or font from this X server \-dispose method layer disposal method \-dither method apply error diffusion to image \-encipher filename convert plain pixels to cipher pixels \-encoding type text encoding type \-endian type endianness (MSB or LSB) of the image \-family name render text with this font family \-features distance analyze image features (e.g. contrast, correlation) \-fill color color to use when filling a graphic primitive \-filter type use this filter when resizing an image \-flatten flatten a sequence of images \-font name render text with this font \-format type image format type \-function name apply a function to the image \-fuzz distance colors within this distance are considered equal \-gravity type horizontal and vertical text placement \-green-primary point chromaticity green primary point \-intensity method method to generate intensity value from pixel \-intent type type of rendering intent when managing the image color \-interlace type type of image interlacing scheme \-interline-spacing value set the space between two text lines \-interpolate method pixel color interpolation method \-interword-spacing value set the space between two words \-kerning value set the space between two letters \-label string assign a label to an image \-limit type value pixel cache resource limit \-loop iterations add Netscape loop extension to your GIF animation \-matte store matte channel if the image has one \-mattecolor color frame color \-metric type measure differences between images with this metric \-monitor monitor progress \-morphology method kernel apply a morphology method to the image \-orient type image orientation \-page geometry size and location of an image canvas (setting) \-path path write images to this path on disk \-perceptible epsilon pixel value less than |epsilon| become epsilon or -epsilon \-ping efficiently determine image attributes \-pointsize value font point size \-precision value maximum number of significant digits to print \-preview type image preview type \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-read-mask filename associate a read mask with the image \-red-primary point chromaticity red primary point \-regard-warnings pay attention to warning messages \-remap filename transform image colors to match this set of colors \-repage geometry size and location of an image canvas \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-seed value seed a new sequence of pseudo-random numbers \-size geometry width and height of image \-stretch type render text with this font stretch \-stroke color graphic primitive stroke color \-strokewidth value graphic primitive stroke width \-style type render text with this font style \-synchronize synchronize image to storage device \-taint declare the image as modified \-texture filename name of texture to tile onto the image background \-tile-offset geometry tile offset \-treedepth value color tree depth \-transparent-color color transparent color \-undercolor color annotation bounding box color \-units type the units of image resolution \-verbose print detailed information about the image \-virtual-pixel method virtual pixel access method \-weight type render text with this font weight \-white-point point chromaticity white point \-write-mask filename associate a write mask with the image Image Operators: \-adaptive-blur geometry adaptively blur pixels; decrease effect near edges \-adaptive-resize geometry adaptively resize image with data dependent triangulation \-adaptive-sharpen geometry adaptively sharpen pixels; increase effect near edges \-alpha option on, activate, off, deactivate, set, opaque, copy transparent, extract, background, or shape \-annotate geometry text annotate the image with text \-auto-gamma automagically adjust gamma level of image \-auto-level automagically adjust color levels of image \-auto-orient automatically orient image \-auto-threshold method automatically perform image thresholding \-bench iterations measure performance \-bilateral-blur geometry non-linear, edge-preserving, and noise-reducing smoothing filter \-black-threshold value force all pixels below the threshold into black \-blue-shift simulate a scene at nighttime in the moonlight \-blur geometry reduce image noise and reduce detail levels \-border geometry surround image with a border of color \-brightness-contrast geometry improve brightness / contrast of the image \-canny geometry detect edges in the image \-channel mask set the image channel mask \-charcoal radius simulate a charcoal drawing \-chop geometry remove pixels from the image interior \-clahe geometry contrast limited adaptive histogram equalization \-clamp keep pixel values in range (0-QuantumRange) \-clip clip along the first path from the 8BIM profile \-clip-mask filename associate a clip mask with the image \-clip-path id clip along a named path from the 8BIM profile \-colorize value colorize the image with the fill color \-color-matrix matrix apply color correction to the image \-colors value preferred number of colors in the image \-color-threshold start_color-stop_color force all pixels in the color range to white otherwise black \-connected-component connectivity connected-components uniquely labeled \-contrast enhance or reduce the image contrast \-contrast-stretch geometry improve contrast by `stretching' the intensity range \-convolve coefficients apply a convolution kernel to the image \-cycle amount cycle the image colormap \-deskew threshold straighten an image \-despeckle reduce the speckles within an image \-distort method args distort images according to given method and args \-draw string annotate the image with a graphic primitive \-edge radius apply a filter to detect edges in the image \-emboss radius emboss an image \-enhance apply a digital filter to enhance a noisy image \-equalize perform histogram equalization to an image \-evaluate operator value evaluate an arithmetic, relational, or logical expression \-extent geometry set the image size \-extract geometry extract area from image \-fft implements the discrete Fourier transform (DFT) \-flip flip image vertically \-floodfill geometry color floodfill the image with color \-flop flop image horizontally \-frame geometry surround image with an ornamental border \-gamma value level of gamma correction \-gaussian-blur geometry reduce image noise and reduce detail levels \-geometry geometry preferred size or location of the image \-grayscale method convert image to grayscale \-help print program options \-hough-lines geometry identify lines in the image \-identify identify the format and characteristics of the image \-ift implements the inverse discrete Fourier transform (DFT) \-implode amount implode image pixels about the center \-integral calculate the sum of values (pixel values) in the image \-interpolative-resize geometry resize image using interpolation \-kmeans geometry K means color reduction \-lat geometry local adaptive thresholding \-layers method optimize or compare image layers \-level value adjust the level of image contrast \-level-colors color,color level image with the given colors \-linear-stretch geometry improve contrast by `stretching with saturation' the intensity range \-liquid-rescale geometry rescale image with seam-carving \-magnify double the size of the image with pixel art scaling \-mean-shift geometry delineate arbitrarily shaped clusters in the image \-median geometry apply a median filter to the image \-mode geometry make each pixel the 'predominant color' of the neighborhood \-modulate value vary the brightness, saturation, and hue \-monochrome transform image to black and white \-motion-blur geometry simulate motion blur \-negate replace each pixel with its complementary color \-noise geometry add or reduce noise in an image \-normalize transform image to span the full range of colors \-opaque color change this color to the fill color \-ordered-dither NxN add a noise pattern to the image with specific amplitudes \-paint radius simulate an oil painting \-polaroid angle simulate a Polaroid picture \-posterize levels reduce the image to a limited number of color levels \-print string interpret string and print to console \-profile filename add, delete, or apply an image profile \-quantize colorspace reduce colors in this colorspace \-radial-blur angle radial blur the image \-raise value lighten/darken image edges to create a 3-D effect \-random-threshold low,high random threshold the image \-range-threshold values perform either hard or soft thresholding within some range of values in an image \-region geometry apply options to a portion of the image \-render render vector graphics \-resample geometry change the resolution of an image \-resize geometry resize the image \-roll geometry roll an image vertically or horizontally \-rotate degrees apply Paeth rotation to the image \-sample geometry scale image with pixel sampling \-scale geometry scale the image \-segment values segment an image \-selective-blur geometry selectively blur pixels within a contrast threshold \-sepia-tone threshold simulate a sepia-toned photo \-set property value set an image property \-shade degrees shade the image using a distant light source \-shadow geometry simulate an image shadow \-sharpen geometry sharpen the image \-shave geometry shave pixels from the image edges \-shear geometry slide one edge of the image along the X or Y axis \-sigmoidal-contrast geometry lightness rescaling using sigmoidal contrast enhancement \-sketch geometry simulate a pencil sketch \-solarize threshold negate all pixels above the threshold level \-sort-pixels sort each scanline in ascending order of intensity \-sparse-color method args fill in a image based on a few color points \-splice geometry splice the background color into the image \-spread amount displace image pixels by a random amount \-statistic type geometry replace each pixel with corresponding statistic from the neighborhood \-strip strip image of all profiles and comments \-swirl degrees swirl image pixels about the center \-threshold value threshold the image \-thumbnail geometry create a thumbnail of the image \-tile filename tile image when filling a graphic primitive \-tint value tint the image with the fill color \-transform affine transform image \-transparent color make this color transparent within the image \-transpose flip image vertically and rotate 90 degrees \-transverse flop image horizontally and rotate 270 degrees \-trim trim image edges \-type type image type \-unique-colors discard all but one of any pixel color \-unsharp geometry sharpen the image \-vignette geometry soften the edges of the image in vignette style \-wave geometry alter an image along a sine wave \-wavelet-denoise threshold removes noise from the image using a wavelet transform \-white-balance automagically adjust white balance of image \-white-threshold value force all pixels above the threshold into white Image Channel Operators: \-channel-fx expression exchange, extract, or transfer one or more image channels \-separate separate an image channel into a grayscale image Image Sequence Operators: \-affinity filename transform image colors to match this set of colors \-append append an image sequence top to botto (use +append for left to right) \-clut apply a color lookup table to the image \-coalesce merge a sequence of images \-combine combine a sequence of images \-compare mathematically and visually annotate the difference between an image and its reconstruction \-complex operator perform complex mathematics on an image sequence \-composite composite image \-copy geometry offset, copy pixels from one area of an image to another \-crop geometry cut out a rectangular region of the image \-deconstruct break down an image sequence into constituent parts \-evaluate-sequence operator evaluate an arithmetic, relational, or logical expression \-flatten flatten a sequence of images \-fx expression apply mathematical expression to an image channel(s) \-hald-clut apply a Hald color lookup table to the image \-morph value morph an image sequence \-mosaic create a mosaic from an image sequence \-poly terms build a polynomial from the image sequence and the corresponding terms (coefficients and degree pairs) \-process arguments process the image with a custom image filter \-separate separate an image channel into a grayscale image \-smush geometry smush an image sequence together \-write filename write images to this file Image Stack Operators: \-delete indexes delete the image from the image sequence \-duplicate count,indexes duplicate an image one or more times \-insert index insert last image into the image sequence \-reverse reverse image sequence \-swap indexes swap two images in the image sequence Miscellaneous Options: \-debug events display copious debugging information \-distribute-cache port distributed pixel cache spanning one or more servers \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information By default, the image format of `file' is determined by its magic number. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!$import.1nu[.TH import 1 "Date: 2009/01/10 01:00:00" "ImageMagick" .SH NAME import \- saves any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen. The window to capture is selected by clicking the desired window or a program option. .SH SYNOPSIS .TP \fBmagick import\fP [\fIoptions\fP] \fIoutput-file\fP .SH OVERVIEW The \fBimport\fP program is a member of the ImageMagick(1) suite of tools. Use it to capture some or all of an X server screen and save the image to a file. For more information about the import command, point your browser to file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/import.html or https://imagemagick.org/script/import.php. .SH DESCRIPTION Image Settings: \-adjoin join images into a single multi-image file \-border include window border in the output image \-colorspace type alternate image colorspace \-comment string annotate image with comment \-compress type type of pixel compression when writing the image \-define format:option define one or more image format options \-density geometry horizontal and vertical density of the image \-depth value image depth \-descend obtain image by descending window hierarchy \-display server X server to contact \-dispose method layer disposal method \-dither method apply error diffusion to image \-delay centiseconds display the next image after pausing \-encipher filename convert plain pixels to cipher pixels \-endian type endianness (MSB or LSB) of the image \-encoding type text encoding type \-filter type use this filter when resizing an image \-format "string" output formatted image characteristics \-frame include window manager frame \-gravity direction which direction to gravitate towards \-identify identify the format and characteristics of the image \-interlace type None, Line, Plane, or Partition \-interpolate method pixel color interpolation method \-label string assign a label to an image \-limit type value Area, Disk, Map, or Memory resource limit \-monitor monitor progress \-page geometry size and location of an image canvas \-pause seconds seconds delay between snapshots \-pointsize value font point size \-quality value JPEG/MIFF/PNG compression level \-quiet suppress all warning messages \-regard-warnings pay attention to warning messages \-repage geometry size and location of an image canvas \-respect-parentheses settings remain in effect until parenthesis boundary \-sampling-factor geometry horizontal and vertical sampling factor \-scene value image scene number \-screen select image from root window \-seed value seed a new sequence of pseudo-random numbers \-set property value set an image property \-silent operate silently, i.e. don't ring any bells \-snaps value number of screen snapshots \-support factor resize support: > 1.0 is blurry, < 1.0 is sharp \-synchronize synchronize image to storage device \-taint declare the image as modified \-transparent-color color transparent color \-treedepth value color tree depth \-verbose print detailed information about the image \-virtual-pixel method Constant, Edge, Mirror, or Tile \-window id select window with this id or name root selects the whole screen Image Operators: \-annotate geometry text annotate the image with text \-channel mask set the image channel mask \-colors value preferred number of colors in the image \-crop geometry preferred size and location of the cropped image \-extent geometry set the image size \-geometry geometry preferred size or location of the image \-help print program options \-monochrome transform image to black and white \-negate replace each pixel with its complementary color \-quantize colorspace reduce colors in this colorspace \-resize geometry resize the image \-rotate degrees apply Paeth rotation to the image \-strip strip image of all profiles and comments \-thumbnail geometry create a thumbnail of the image \-transparent color make this color transparent within the image \-trim trim image edges \-type type image type Miscellaneous Options: \-debug events display copious debugging information \-help print program options \-log format format of debugging information \-list type print a list of supported option arguments \-version print version information By default, 'file' is written in the Postscript image format. To specify a particular image format, precede the filename with an image format name and a colon (i.e. ps:image) or specify the image type as the filename suffix (i.e. image.ps). Specify 'file' as '-' for standard input or output. .SH SEE ALSO ImageMagick(1) .SH COPYRIGHT \fBCopyright (C) 1999 ImageMagick Studio LLC. Additional copyrights and licenses apply to this software, see file:///opt/alt/alt-ImageMagick/usr/share/doc/ImageMagick-7/www/license.html or https://imagemagick.org/license/\fP PK!"M gif2webp.1nu[.\" Hey, EMACS: -*- nroff -*- .TH GIF2WEBP 1 "November 4, 2024" .SH NAME gif2webp \- Convert a GIF image to WebP .SH SYNOPSIS .B gif2webp .RI [ options ] " input_file.gif \-o output_file.webp .br .SH DESCRIPTION This manual page documents the .B gif2webp command. .PP \fBgif2webp\fP converts a GIF image to a WebP image. .SH OPTIONS The basic options are: .TP .BI \-o " string Specify the name of the output WebP file. If omitted, \fBgif2webp\fP will perform conversion but only report statistics. Using "\-" as output name will direct output to 'stdout'. .TP .BI \-\- " string Explicitly specify the input file. This option is useful if the input file starts with an '\-' for instance. This option must appear \fBlast\fP. Any other options afterward will be ignored. If the input file is "\-", the data will be read from \fIstdin\fP instead of a file. .TP .B \-h, \-help Usage information. .TP .B \-version Print the version number (as major.minor.revision) and exit. .TP .B \-lossy Encode the image using lossy compression. .TP .B \-mixed Mixed compression mode: optimize compression of the image by picking either lossy or lossless compression for each frame heuristically. .TP .BI \-near_lossless " int Specify the level of near\-lossless image preprocessing. This option adjusts pixel values to help compressibility, but has minimal impact on the visual quality. It triggers lossless compression mode automatically. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default). The typical value is around 60. Note that lossy with \fB\-q 100\fP can at times yield better results. .TP .B \-sharp_yuv Use more accurate and sharper RGB->YUV conversion. Note that this process is slower than the default 'fast' RGB->YUV conversion. .TP .BI \-q " float Specify the compression factor for RGB channels between 0 and 100. The default is 75. .br In case of lossless compression (default), a small factor enables faster compression speed, but produces a larger file. Maximum compression is achieved by using a value of 100. .br In case of lossy compression (specified by the \-lossy option), a small factor produces a smaller file with lower quality. Best quality is achieved by using a value of 100. .TP .BI \-m " int Specify the compression method to use. This parameter controls the trade off between encoding speed and the compressed file size and quality. Possible values range from 0 to 6. Default value is 4. When higher values are used, the encoder will spend more time inspecting additional encoding possibilities and decide on the quality gain. Lower value can result is faster processing time at the expense of larger file size and lower compression quality. .TP .BI \-min_size Encode image to achieve smallest size. This disables key frame insertion and picks the dispose method resulting in the smallest output for each frame. It uses lossless compression by default, but can be combined with \-q, \-m, \-lossy or \-mixed options. .TP .BI \-kmin " int .TP .BI \-kmax " int Specify the minimum and maximum distance between consecutive key frames (independently decodable frames) in the output animation. The tool will insert some key frames into the output animation as needed so that this criteria is satisfied. .br A 'kmax' value of 0 will turn off insertion of key frames. A 'kmax' value of 1 will result in all frames being key frames. 'kmin' value is not taken into account in both these special cases. Typical values are in the range 3 to 30. Default values are kmin = 9, kmax = 17 for lossless compression and kmin = 3, kmax = 5 for lossy compression. .br These two options are relevant only for animated images with large number of frames (>50). .br When lower values are used, more frames will be converted to key frames. This may lead to smaller number of frames required to decode a frame on average, thereby improving the decoding performance. But this may lead to slightly bigger file sizes. Higher values may lead to worse decoding performance, but smaller file sizes. .br Some restrictions: .br (i) kmin < kmax, .br (ii) kmin >= kmax / 2 + 1 and .br (iii) kmax - kmin <= 30. .br If any of these restrictions are not met, they will be enforced automatically. .TP .BI \-metadata " string A comma separated list of metadata to copy from the input to the output if present. Valid values: \fBall\fP, \fBnone\fP, \fBicc\fP, \fBxmp\fP. The default is \fBxmp\fP. .TP .BI \-f " int For lossy encoding only (specified by the \-lossy option). Specify the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering). A value of 0 will turn off any filtering. Higher value will increase the strength of the filtering process applied after decoding the picture. The higher the value the smoother the picture will appear. Typical values are usually in the range of 20 to 50. .TP .B \-mt Use multi-threading for encoding, if possible. .TP .B \-loop_compatibility If enabled, handle the loop information in a compatible fashion for Chrome version prior to M62 (inclusive) and Firefox. .TP .B \-v Print extra information. .TP .B \-quiet Do not print anything. .SH EXIT STATUS If there were no problems during execution, \fBgif2webp\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBgif2webp\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES gif2webp picture.gif \-o picture.webp .br gif2webp \-q 70 picture.gif \-o picture.webp .br gif2webp \-lossy \-m 3 picture.gif \-o picture_lossy.webp .br gif2webp \-lossy \-f 50 picture.gif \-o picture.webp .br gif2webp \-q 70 \-o picture.webp \-\- \-\-\-picture.gif .br cat picture.gif | gif2webp \-o \- \-\- \- > output.webp .SH AUTHORS \fBgif2webp\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written by Urvang Joshi , for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR cwebp (1), .BR dwebp (1), .BR webpmux (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK!Н  vwebp.1nu[.\" Hey, EMACS: -*- nroff -*- .TH VWEBP 1 "July 18, 2024" .SH NAME vwebp \- decompress a WebP file and display it in a window .SH SYNOPSIS .B vwebp .RI [ options ] " input_file.webp .br .SH DESCRIPTION This manual page documents the .B vwebp command. .PP \fBvwebp\fP decompresses a WebP file and displays it in a window using OpenGL. .SH OPTIONS .TP .B \-h Print usage summary. .TP .B \-version Print version number and exit. .TP .B \-noicc Don't use the ICC profile if present. .TP .B \-nofancy Don't use the fancy YUV420 upscaler. .TP .B \-nofilter Disable in-loop filtering. .TP .BI \-dither " strength Specify a dithering \fBstrength\fP between 0 and 100. Dithering is a post-processing effect applied to chroma components in lossy compression. It helps by smoothing gradients and avoiding banding artifacts. Default: 50. .TP .BI \-noalphadither By default, quantized transparency planes are dithered during decompression, to smooth the gradients. This flag will prevent this dithering. .TP .B \-usebgcolor Fill transparent areas with the bitstream's own background color instead of checkerboard only. Default is white for non-animated images. .TP .B \-mt Use multi-threading for decoding, if possible. .TP .B \-info Display image information on top of the decoded image. .TP .BI \-\- " string Explicitly specify the input file. This option is useful if the input file starts with an '\-' for instance. This option must appear \fBlast\fP. Any other options afterward will be ignored. If the input file is "\-", the data will be read from \fIstdin\fP instead of a file. .TP .SH KEYBOARD SHORTCUTS .TP .B 'c' Toggle use of color profile. .TP .B 'b' Toggle display of background color. .TP .B 'i' Overlay file information. .TP .B 'd' Disable blending and disposal process, for debugging purposes. .TP .B 'q' / 'Q' / ESC Quit. .SH EXIT STATUS If there were no problems during execution, \fBvwebp\fP exits with the value of the C constant \fBEXIT_SUCCESS\fP. This is usually zero. .PP If an error occurs, \fBvwebp\fP exits with the value of the C constant \fBEXIT_FAILURE\fP. This is usually one. .SH EXAMPLES vwebp picture.webp .br vwebp picture.webp -mt -dither 0 .br vwebp \-\- \-\-\-picture.webp .SH AUTHORS \fBvwebp\fP is a part of libwebp and was written by the WebP team. .br The latest source tree is available at https://chromium.googlesource.com/webm/libwebp .PP This manual page was written for the Debian project (and may be used by others). .SH REPORTING BUGS Please report all bugs to the issue tracker: https://issues.webmproject.org .br Patches welcome! See this page to get started: https://www.webmproject.org/code/contribute/submitting\-patches/ .SH SEE ALSO .BR dwebp (1) .br Please refer to https://developers.google.com/speed/webp/ for additional information. PK!UIK: irb.1nu[.\"Ruby is copyrighted by Yukihiro Matsumoto . .Dd November 7, 2012 .Dt IRB(1) "" "Ruby Programmers Reference Guide" .Os UNIX .Sh NAME .Nm irb .Nd Interactive Ruby Shell .Sh SYNOPSIS .Nm .Op Fl -version .Op Fl dfm .Op Fl I Ar directory .Op Fl r Ar library .Op Fl - Ns Oo no Oc Ns inspect .Op Fl - Ns Oo no Oc Ns readline .Op Fl -prompt Ar mode .Op Fl -prompt-mode Ar mode .Op Fl -inf-ruby-mode .Op Fl -simple-prompt .Op Fl -noprompt .Op Fl -tracer .Op Fl -back-trace-limit Ar n .Op Fl -irb_debug Ar n .Op Fl - .Op program_file .Op argument ... .Pp .Sh DESCRIPTION .Nm is the REPL(read-eval-print loop) environment for Ruby programs. .Pp .Sh OPTIONS .Bl -tag -width "1234567890123" -compact .Pp .It Fl -version Prints the version of .Nm . .Pp .It Fl E Ar external Ns Op : Ns Ar internal .It Fl -encoding Ar external Ns Op : Ns Ar internal Same as `ruby -E' . Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:). .Pp You can omit the one for internal encodings, then the value .Pf ( Li "Encoding.default_internal" ) will be nil. .Pp .It Fl I Ar path Same as `ruby -I' . Specifies .Li $LOAD_PATH directory .Pp .It Fl U Same as `ruby -U' . Sets the default value for internal encodings .Pf ( Li "Encoding.default_internal" ) to UTF-8. .Pp .It Fl d Same as `ruby -d' . Sets .Li $DEBUG to true. .Pp .It Fl f Suppresses read of .Pa ~/.irbrc . .Pp .It Fl h .It Fl -help Prints a summary of the options. .Pp .It Fl m Bc mode (load mathn, fraction or matrix are available) .Pp .It Fl r Ar library Same as `ruby -r'. Causes irb to load the library using require. .Pp .It Fl -inspect Uses `inspect' for output (default except for bc mode) .Pp .It Fl -noinspect Doesn't use inspect for output .Pp .It Fl -readline Uses Readline extension module. .Pp .It Fl -noreadline Doesn't use Readline extension module. .Pp .It Fl -prompt Ar mode .It Fl -prompt-mode Ar mode Switch prompt mode. Pre-defined prompt modes are `default', `simple', `xmp' and `inf-ruby'. .Pp .It Fl -inf-ruby-mode Uses prompt appropriate for inf-ruby-mode on emacs. Suppresses --readline. .Pp .It Fl -simple-prompt Makes prompts simple. .Pp .It Fl -noprompt No prompt mode. .Pp .It Fl -tracer Displays trace for each execution of commands. .Pp .It Fl -back-trace-limit Ar n Displays backtrace top .Ar n and tail .Ar n Ns . The default value is 16. .Pp .It Fl -irb_debug Ar n Sets internal debug level to n (not for popular use) .Pp .El .Pp .Sh ENVIRONMENT .Bl -tag -compact .It Ev IRBRC .Pp .El .Pp Also .Nm depends on same variables as .Xr ruby 1 . .Pp .Sh FILES .Bl -tag -compact .It Pa ~/.irbrc Personal irb initialization. .Pp .El .Pp .Sh EXAMPLES .Dl % irb .Dl irb(main):001:0> Ic 1 + 1 .Dl 2 .Dl irb(main):002:0> Ic def t(x) .Dl irb(main):003:1> Ic x+1 .Dl irb(main):004:1> Ic end .Dl => nil .Dl irb(main):005:0> Ic t(3) .Dl => 4 .Dl irb(main):006:0> Ic if t(3) == 4 .Dl irb(main):007:1> Ic p :ok .Dl irb(main):008:1> Ic end .Dl :ok .Dl => :ok .Dl irb(main):009:0> Ic quit .Dl % .Pp .Sh SEE ALSO .Xr ruby 1 . .Pp .Sh REPORTING BUGS .Bl -bullet .Li Security vulnerabilities should be reported via an email to .Aq security@ruby-lang.org Ns .Li . Reported problems will be published after being fixed. .Pp .Li And you can report other bugs and feature requests via the Ruby Issue Tracking System (http://bugs.ruby-lang.org). Do not report security vulnerabilities via the system because it publishes the vulnerabilities immediately. .El .Sh AUTHORS Written by Keiju ISHITSUKA. PK!Pbaa heif-info.1nu[.TH HEIF-INFO 1 .SH NAME heif-info \- show information on HEIC/HEIF file .SH SYNOPSIS .B heif-info [\fB\-d\fR|\fB--dump-boxes\fR] [\fB\-h\fR|\fB--help\fR] [\fB\-v\fR|\fB--version\fR] .IR filename .SH DESCRIPTION .B heif-info Show information on HEIC/HEIF file. .SH OPTIONS .TP .BR \-d ", " \-\-dump-boxes\fR Show a low-level dump of all MP4 file boxes. .TP .BR \-h ", " \-\-help\fR Show help. A filename is not required or used. .TP .BR \-v ", " \-\-version\fR Show version information for the tool, library version, and the plugin path. A filename is not required or used. .SH EXIT STATUS .PP \fB0\fR .RS 4 Success .RE .PP \fB1\fR .RS 4 Failure (syntax or usage error; error while loading image). .RE .SH BUGS Please reports bugs or issues at https://github.com/strukturag/libheif .SH AUTHORS Dirk Farin, struktur AG .SH COPYRIGHT Copyright \[co] 2017 struktur AG PK!x8 heif-dec.1nu[.TH HEIF-CONVERT 1 .SH NAME heif-dec \- decode HEIC/HEIF image .SH SYNOPSIS .B heif-dec [\fB\-q\fR \fIQUALITY\fR] .IR filename .IR output[.jpg|.png|.y4m] .SH DESCRIPTION .B heif-dec Convert HEIC/HEIF image to a different image format. .SH OPTIONS .TP .BR \-q\fR\ \fIQUALITY\fR Defines quality level between 0 and 100 for the generated output file. Only used for JPEG. .SH EXIT STATUS .PP \fB0\fR .RS 4 Success .RE .PP \fB1\fR .RS 4 Failure (syntax or usage error; error while loading, converting or writing image). .RE .SH NOTES The available output formats depend on the libraries that were available at compile time. Supported are JPEG, PNG and Y4M, the file type is determined based on the extension of the output file. .SH BUGS Please reports bugs or issues at https://github.com/strukturag/libheif .SH AUTHORS Joachim Bauch, struktur AG .br Dirk Farin, struktur AG .SH COPYRIGHT Copyright \[co] 2017 struktur AG PK!?` heif-enc.1nu[.TH HEIF-ENC 1 .SH NAME heif-enc \- convert image to HEIC/HEIF .SH SYNOPSIS .B heif-enc [\fB\-h\fR|\fB--help\fR] [\fB\-q\fR \fIQUALITY\fR|\fB--quality\fR \fIQUALITY\fR] [\fB\-L\fR|\fB--lossless\fR] [\fB\-t\fR \fISIZE\fR|\fB--thumb\fR \fISIZE\fR] [\fB--no-alpha\fR] [\fB--no-thumb-alpha\fR] [\fB\-o\fR \fIFILENAME\fR|\fB--output\fR \fIFILENAME\fR] [\fB\-v\fR|\fB--verbose\fR] [\fB\-P\fR|\fB--params\fR] [\fB\-b\fR \fIDEPTH\fR] [\fB\-p\fR \fINAME\fR\fB=\fR\fIVALUE\fR] .IR filename[.jpg|.png|.y4m] .SH DESCRIPTION .B heif-enc Convert image to HEIC/HEIF. .SH OPTIONS .TP .BR \-q\fR\ \fIQUALITY\fR ", " \-\-quality\fR\ \fIQUALITY\fR Defines quality level between 0 and 100 for the generated output file. .TP .BR \-L ", "\-\-lossless\fR Generate lossless output (\fB-q\fR has no effect) .TP .BR \-t\fR\ \fISIZE\fR ", " \-\-thumb\fR\ \fISIZE\fR Generate thumbnail with maximum size \fISIZE\fR pixels (default: off). .TP .BR \-\-no-alpha\fR Do not save alpha channel. .TP .BR \-\-no-thumb-alpha\fR Do not save alpha channel in thumbnail image. .TP .BR \-o\fR\ \fIFILENAME\fR ", " \-\-output\fR\ \fIFILENAME\fR Output filename (optional). .TP .BR \-\-verbose\fR Enable logging output (more will increase logging level). .TP .BR \-P ", "\-\-params\fR Show all encoder parameters and exit. Input file is not required or used. .TP .BR \-b\fR\ \fIDEPTH\fR Bit-depth of generated HEIF file when using 16-bit PNG input (default: 10 bit). .TP .BR \-p\fR\ \fINAME\fR\fB=\fR\fIVALUE\fR Set additional encoder parameters. See \fBNOTES\fR below. .SH EXIT STATUS .PP \fB0\fR .RS 4 Success .RE .PP \fB1\fR .RS 4 Failure (syntax or usage error; error while loading, converting or writing image). .RE .SH NOTES The available input formats depend on the libraries that were available at compile time. Supported are JPEG, PNG and Y4M, the file type is determined based on the extension of the input file. When specifying multiple source images, they will all be saved into the same HEIF file. When using the x265 encoder, you may pass it any of its parameters by prefixing the parameter name with \fBx265:\fR. Hence, to set the \fBctu\fR parameter, you will have to set \fBx265:ctu\fR in libheif (e.g.: \fB-p x265:ctu=64\fR). Note that there is no checking for valid parameters when using the prefix. .SH BUGS Please reports bugs or issues at https://github.com/strukturag/libheif .SH AUTHORS Dirk Farin, struktur AG .SH COPYRIGHT Copyright \[co] 2017 struktur AG PK!z0heif-thumbnailer.1nu[.TH HEIF-THUMBNAILER 1 .SH NAME heif-thumbnailer \- create thumbnails from HEIC/HEIF files .SH SYNOPSIS .B heif-thumbnailer [\fB\-s\fR \fISIZE\fR] .IR filename .IR output .SH DESCRIPTION .B heif-thumbnailer Create thumbnail images from HEIC/HEIF files that can be used for example by Nautilus. .SH OPTIONS .TP .BR \-s\fR\ \fISIZE\fR Defines the maximum width and height of the thumbnail to generate. Default is 512 pixel. .SH EXIT STATUS .PP \fB0\fR .RS 4 Success .RE .PP \fB1\fR .RS 4 Failure (syntax or usage error; error while loading, converting or writing image). .RE .SH BUGS Please reports bugs or issues at https://github.com/strukturag/libheif .SH AUTHORS Dirk Farin, struktur AG .SH COPYRIGHT Copyright \[co] 2018 struktur AG PK!Lmf%npm-start.1.gznu[uAk0/![J.ͮ})U!ZVjKB.GrzqA73$ꎥM<<_vg<6ѹ+eyn=5 ~wp!"n`K$$aIw{n{wP!Xc]Vmyd#]`*{eQ Fm|fw}[n\ Wdv켞u*L87L[@ ^C\̀,k-E8rt7.(`9.ZV^* êѭ,.KYȆ,yzˑPK!Rj''npm-adduser.1.gznu[V]o6}ׯKRvð`%ޖM ;AQL})Jb+HsIQ4MDs5Nnj\m誢:3:J#[o)Nir] ϋt}ޗdBvcWM")wFmM/ W:ڋf;S94n8/K*Rf7Si^vaO}ԀIVu,pre` =V_ ,uäRa[D)ng=A44ʬ#jd+KS)aEHfzDžOV%gMHWmwMcn8$duw/ jg)YcaLr]EAĨo,PXS$C'6܁^? 0p]tvu=#u_8ߐfSQI1 PK!+m!! makeconv.1.gznu[VaO#7bJT9P{P6@zD=BDrHRή7qqMt?oMt$xft-74XGӅ򄿓OUo؆]yOK( kV9M#4b.B֩ JmƩ"=}G”E>URy\| LT!xVxyN^o^Mr[7P",߾= /n^wt8Чw6Ilw'6b)}^5\ގp~gt0Ѹ~zS~57,ء=JKoL˸cit; 'v_wtpxP]<{a]d5A3`eנ>ďʈa|x?I<lPL.vX. dL` ݆*"y'ƕ%_7kBX^ )QAi¦VѲ)d{(bSvS,fzDŽ6DkU?Keܢ*Pn+j%مV3x,^Kqi(+Gm'JFԵ2#ke3o }vNBvO^-rFKQBtAC?_R&%iR:Z۵iX~@9UX` 9W2&*fM@ ũZDTJ"?IEFo<ކ;b%3 `dZܮs&2nYH8=JJ'vhSZyum]c<0.͎lkY(=U[q0 ~a˔vDlZ7!y 7=ѵ*eSEPe[{G6s\L`Тʂm7D2njX2ORZ kE'c9ȔH") 6>(d&vٮbHֵf!%T3pH+M"e@ I``$>r1CXfȣ F-ƌm$B3ϒB{O_=κ)q˄iI*$'Օ$86Ohܭoobj{0)xu֕_ٶmJEop5AW©4p~៫OtA:X c}199D֝ Hnes}NGQ:j;j4︟ZlRKguTP܇9ObYku.sxkX=jp1qO9|5 i0HYM)4wTG5b!9ȝ,d) ފp5nG7єGo-i6iY{Ovд:|d0:'S?zsֆ^]/0 {hz|+>8ͬվ=гoZ>8H v4>SK=W`aoqfg'fːMJ%nߎ? _O<PU=,W>7 PK!*^?$npm-doctor.1.gznu[Xn}h6@1_1bYU~T+u1:+w]k_fy1ǹvu*(\t;y-~ҥ]3.(ժڠ{Fd_]itS=mT1NMzmT[]>yXNZbs樻J72皉Z"r&3*֨T[o$ɶQjMDbz7S*~]x϶-t Z*S뾉ӔU{&Tu<. 76 /nMiu#jl4r0(2)<3WTՂĺ  e*HAXDc,] HXছ'-Ϻ5x^ rZ|^,fs 򋣩"af~cqyGwS{zcRڂ,KѪzaD1@RE2;I([֕ 8Z&yLh+%:#lj1mcAAcRzXÙUh˾~(\,w![2S/w*&XO§PR"P uű#?{`0ÑuW`k7 "p0[&B@M$u epjCVc0Q}4PBs !LhZX2'$΢.\_{}p}Wa O/jo̙|+eIƤYoIx~"Jtl*KU,TI E:/noCj# 7[RME2~nD{4 1[y-mV u)݌@O,]'S^Ԝ@T!XRxl Ku`mV͠ЬQX k3cE &g,jeNYܵ[ U`sa | |[ӣ[ߨg8u֑EnƔ]kSf(#D+Ga -(3:~F&{Ҥ Spfq` Ei3Fqіs~oL #Ʊ!Hi\afNЮpZ+g֕uZ=_G#Ĩ:?WWPغb3Kd".K#Yo^Gh,4R{ m cݟ^՟te;O.<9O1$aFGXi-k @|" *Xxi[߻X^2tD5BW g~})2('])[uL:m4RT܍EV6輟Y(J*k92u٬5|wۆ缄#Q-ʤYkؾ_hn]#iJA5 V+/hBIjEKKf*iIew*fgE+Pl[O% ūje]4֖ҶX@HS*kV8aQ7: {dqaze T˄H-Cq IvmFm)b&5eڔl LΒ>}GCL:-n-Z1sUZadնJgt*"5M)JXl`.=$yVF 1:93  Ϯ-J|IfrζP^}5M Jґqo(/з Pc UGR*=.j=RɈ".z =cISVUxK﬚5\ rDg9"T|tEJVGk$BaLEO B@mBG̐8,Ȕvfܨ뫦zUF|$h**hyéL~(2E-B:ۿ5JlV-vId"E' $+έ#Mda RL.DXJY}5dCQNBZ+\f=I)& qt9W&cvҵ50v%# :²t ޡ/>RɊpjXԌHM/5jST6PnH woɎtS@tZ΄ {b>?ys1}O^xn/\HG' xB=ZM)|4<pl;bYfմϹ͠Lm{5Fʤ]q&3EW$~gJ燜οwD{{-孏 U7-^6K|ʿ!J {]tx:)-&v*~JP0!)6^_Ƚ4)f;5W7˧_gQHTgreB(8 -:]}]gq%D%|7ôm+x4xnx`8(qx ړB;dVg-Bg̎86'/@EtXc2Q̔ù1Ikԥ^AWJq~(d bFQפXcV! +mGB&>C'|Z%vE s2p0bLߒ Y900=bglICN1‰P:7du@^ h^`r|J9Q:mDQw4sNҔOĺ7_o <2G"ut(wS>8ZM$a;1Kr<"N6i#[бR<ݫtx3K`+tw}(p?zB7~-%͇зlјՇ#`ec'31ۑdv)vp*g^sp~rw u_}7dBؖBK%^b]x9nϪ6Te d ^g(=Ʒr{l*NYW܋''Ι*䭈'p V;ŷBؒ:).]UJkɀ"ÄgDY"X .)Ɖ;5)xJIM/4&k=P|6 .θ$Ph SGzTHއmtQ P8}X1m)xP5g]ݳWgُGh-s3aN6TRk47Œɶ;竰P}ɏm=A/wdp~x9:;8w"O/߽ި͘*_ Ӌ.^&>?Pɖ d) zT\N\jƛDR($@駿 }=͡JJĜWޢLkGgBAyK#Jb64WO:x\Jbl%:t}Iwd*$̈́a\ ݹ؍FR t7;we2 Q)> ktZyd*Rn\:N鐦|`X"`p37iʣ.H<sH.pskbhOojs ooF8J ikǒal%[n5rs O)DPM{㵭NJdD\m] xg$!}Ԯf/7xHZ,]ղ6;aG囍0(Ɵ -U/.'}YCC-xp~p5/9ΜwEN&K`5 RN#Mns6+՛x2}"@"4Y! 0d< s {ܣ\wE6* ;?yO[.[},2?Z!W8PK!py  npm-bin.1.gznu[}k xK-c KYكɴd- ԇ})9bHwY` s܎u#M@k8K)MZyE €@?H/"g D{_ʌ",cߨxmTPӝWc-2VuSʪN S%XTC2e[l6, 2MxLfyv9.nwW7 NK7"2e7g>I>dt8 C <+e%d0Z+R1[!K2V$$sSg \[:YlgvIgD#cM /E)%QDMIh&DѠ;|؅,0N [)|׶"Fozrҕ^2uTkcMj} EQ '@"5 F$ZC)u6İ9}-Fl2).-fo_nϓ aߎE5f`Osø쥮:k6#eĻK*Ԯ:jD?_FMLi*Y?ki,h@϶ Ӽ".~H(Z5*_^9ۼƧ%zK''=oG-fS+IN()eEZ\o)a'Zv|[j2(xK5kRv# Ժ#!3/ s[bG#S$2Gdz,xzK#f|# sisKtӸ:pH!XY0Dq⥑R9URyB9?=y^ wro,ڽTd/ii~ PK!uhhnpm-update.1.gznu[Wmo6_A6Р+I6T-J[U&5Qos|Kl@{?z~_^.>Э a^^M,ɞj3jT42ny2o܁ ^GKǿf-xƷ ~:c]6ۧY2wR +H!.S1ub_N/ng$/ el6B|2Jxl !Y^*Ȕ7ƽ.cUF[ɵVwv6"O9LC^Kjι\MaxŢ+mRQcT_S8d*K,2#dR%Y)rg-Z먠ԩku+\VL@,4;_g<)~yiVxB޶ ]h/b#MvwPaٻ4k kbvSfy$Wolq΂5KwhTɨ[Yb浂$ " -SZ[0^?fKs8 d!4g$x7.Ή,HZ)S b+"r :8զZU;CwM2"]5qԕj~s^ߦ T(YN/H42V-6U kۍC18 p iEiγьhK]jEU-K"qa*z-uӥ4@DUQPy&82 C_ՄXO9mfO%uvTdQˋ.q>HВ\O|[d|πc [a?Ngyr|cT'wK/ X~? My5F0rҠrs|J.zàq"5#o@d\IׅA [E0jltTkh yWfv/'s 3&1^5MJ2ztݴyX* 9pN;mU J9J=Bu̻B Gg[QJƟ$p-/T^5Q+~z N,*IE m .ڪ2~t.RA {2bp'Hrm$C 뻲+{“kI뺖>fQۇ'@q>t \^7;8lah3dK>^xxLp1%/aJFEyF-/UUv$v;fKZg"Mݶaq%UY&(j!T[yD d$xzcM4 T'pHS,f+2u[k)|qiښU!-:(wcwGɏQأ2_| PK!e Ϡ\\ genbrk.1.gznu[Vao6_qb9)bȗIXciDj$~Hّ -4"޽{wtѡ[;A)2s?v55~6M$]t6R/czvNе(Ikc9ګBҥvVmrOo.һӳ$ ={2'4Y |YI$}O0.5NS}um۴Rc7l*}Y.{pWF#)-;{26PŤt3]L3꼣+r)mޡIf\3e>Qn eɢxe fFgj`7TZup>4OfY+xRg -o/x/b>}Bqd <}ci `6XIWʂ2Gsd*9eeܶl.=WU!x.|8EV.?Vz Ucښ2I 8NXZyT|QCaS[!p@QxG6:h2I8[I/TM#2i- Gj*d>ICPɷ ibOgãkyRpYuE y-__;9/8fM8GqMC}zR*pJy$DA(Wl6Yciood^H)o«Ny 3^i:$LA1S\|eU`3 55)"&e< 0z`E\ECV'=raaXZ08`zZ+\Z5PؓJ,)?ԱC&`abC _? 5 *yrÉ7W[Q;0gGw1D1"tA;ov P |\ޒ[ʍҚ},gUE fI_MJV xI9Ov (EK*8 k0E휗A$4&Qp% Ur sQ.Qwl1<5vƍ+9l= gx)!RUt?l>Xa89+N˽JY#j2}GRB5A=S(OWY{f=h:bfJV)\(28$abd >*v*[a{fh:t(Egx\e,}$?Ogɍ'i0j `a0g,=0|onɗ^ y a6 Tح *X |_{mX;\\K" PK! npm-logout.1.gznu[}SYo0 ~ׯ =$ ŊuĈS զdHrHX"$荓l0Og='W 7-WaQC=U/.u21l#]KiiCZ{؄V;en`Ӳiw!Qr^<-v8wH#VTlpq^:nsը4ꆧ>}]% #~kjqaneGk'ݟM=+z%ܓ5|i]=D#?eݾĜ +orBMu#J\* YViI;61?[/у. TS+~ڨL}FXRG+rk+zZsHe;"e@sИ B38j$a+\d zm R#IDz;PtSyrj `?@SEwU8c*QK4al1;e3ҥ%fGڎe8Fs(`#L܂Xl#0UfVںp븁 V6_B:ͪÜr&dUV, ^mHvp0);@JA#b k Ȁw4]۽<&f_ }g3 _"p/nǡ`^<_"GodPK!:II npm-ping.1.gznu[}P]k1|ϯX|*JG{R>g ɑEIA Lvwf6Ʉ%$_:VHW= z{ aGX$M Yj,!h^ c>ӏ|JhF&(  c ,aɉ'p%22ϦyЉNvšT| JC-\^l\–kQyٳټEcƭb&ό+MpKyu(e1%U鵍7袃mouQpXnt:Z0DhGR7c1F-HZY5  k:!A*YʅD" ӁISVB§dm .MGU[*~k4-~"Y+uAΤiyj~xQ8Yużs(hz}8πf3`_qPK!!znpm-prune.1.gznu[}Tak0_qK;XR֭lPsV$ NqҴFKw޽SrF[1ߧFn g'蕿"9[:EtsC19vm\YOrd"p&S }i;xww=,/?wp[ Jd ʚarbL{O;"a1UOl)o塴m+M.R0z";ڱ-I rF RVo!4hVQfI}iUD MHSZ*zz qZ@XD쎖MC葇 ;4RAlPXZ.0fmW:qhVYr•tJ.4s X~xJ m^%W;aZ80e:mݵRi켱P6pbq *<=A[X0VYDcʣu%d9@?N$;u>]cuZIa74k[>x:ܾ7-)+G̯ʨ#WEv8@]>"Jp [w2iQ)I=;:5*AŽFl A&_ ye~|ץ)\~g;$xӝx z3(sp=VW]E_NPK!N\^zz npm-team.1.gznu[uUMo8W rX# V|{( -,%*;CҶԦ@؜fx7|^=\;O^޿}}?زa}%ڹG3sxZ=HK6; vժs!fmb#[x/7GqpOc[3L,ˉ nzvoW%R)RT:i{6쐺`mQz/7 *j˸e>tQ6V9ǡP ,Rvre]h{A6G98#T} /U)tT_OwbD]k$I>󭱝N% 0oH!˼Ew:U`z d B)#X1J Se iB Zng8y'br\_KC(CHto"@fߓOZ"A1̈Y}R~S.9%k𚄶+$\A[]^5TI,h:)D"X4&ݛ lqFsn6p%S^SIiBf=SA\K%4/WEHMKZ5i?l)zи@\ikJe$(sFbjBW[BhB>!|~psmn <0IqIY8:-I|atZҞGpP/x^^f9AIzR̂S4T(Eh~ T$*BHxwʓZƅ}a%.t|NF]["B.H‘E.\)`%bFutV8G̑kXo~- Rc%WM5.~"PK!>]dd npm-star.1.gznu[mAO@+&\`7mo&Ƥ*ےn=0mvB,xiv޼U,&j$yCӣ;|:x pLQOk'>+ X;JӁ+\s)!s!7 BR Dzc!=@%Uϛ,fU4M˝6UxACKh<C5޶rV=5gAg|mOF{tT1b2!|t~d8;k.0ЁsXÁX PY>DXk]NBf9t0h:]j:b\ɉl@"PK!5rxxnpm-build.1.gznu[mMk0 "Xv ,cIƫc9'7-c`-=+W6ɚx ~㶇xWM=9_GaB7uuR aĉN?6$SBBw)L %J8UәfaiT!D6:cB]a)j^Lfd rZ΁߭шB)A1Q2h(}>nJUՙ満+% z% 9$u(Al;h+B 2qiVtK˸F&tB΀VN#]Q3L|n]Pe9ܛ$ۛ{# ؁PK!L L uconv.1.gznu[ks;~VM#&a)vaȀ|_]EF`F2Jk6VBep/u`Q_KȻLE.4AHubj Ta]W݄:I5 é3A0A ڠhkHHW*ӪnUyر"7|Zg}+f3D%ȕ^u8K _>$y u#L(ѩU` ctԀI1bd*BڠceJ \^>xc9]j?#7 }sZDs|s! *1i)G|j"ib EvGN9eҤ<}qkM:+@UCQ:[r{0|LC̝PQ)'z3e[bx-B ,JѶ] 2y)ĚldSڮCWwژG:+TJR5 YV#™ ) O KUBxR$" dr&V+k}*Ǐ'0ҫ2)C,P="3q(hn.D"D ̱,I ~#GƞI ȀY G{F-A /iX[KrZ u,X  " CS^aR̋U6l%Fȡ; jݓ,?If^#^睔*SGրkǟu]G3цnyfͬYCi;FKvt؛~q*Anbv<tXȚBښ=od^>%G%͕uɔ“-A5q|j[Xwzb,|J$1Ȁb@:]^ލ<f&S4I]"[LλkoVPT^mm|odNiUܫxzP)sH'eAgQ,.tb>U%Sl>W/V328̟ WbwD6Ho4쓨6Qj>+| (y, p1`oMѤ>Li p<˫'MRF2O'IQѸXzfZPiz*a~^N^ Noi6R2^8 +Oi*NKD[L 3V[#kN:.}O ]O4V߶pV@ϣnL%y ^>q|,h΃: j[mu: M~N=ضXi \ ͿBIlWjm /:كitz4u%>_4 Nn0> "]w1={!ȊuJ7"ٱ$c\ﻢmBp~ qK,2:q@V9tF >`\g*TA۞Юh%:0iRfKㄉ0Upo4pZ7uH szX10BD]eٖ{{1@IM9C#D*h`hԊ-b&av4{,4*i6V;}kЏl|V{nYی~]dQ) 56M%<¶1>@ 8=\}LJRsSRuq糉\F䒞yE-*,  \֜-%7Xȋ`%QQ~ Q|#B_}>Q%;Nc7Otڢ F&߱*.[h=Dʸ.W?KoS# += *b|8-I#<˃|A3\BkAZw"8xQ01㚻X9EN_g7]?ϗ>o~e/ƅ&);=MsMS~ҶwE)4 `Q̿>wցaH4a-D pPX秚TD=9k,8} ''Vws ~o<8ܺc̈́-m =җg_֌ y@!?s>%Va(2my3hoc-qqDM9*.6\QT2X96PV(g^Ik϶H6ʆr'u7ģ:ʤD&"6: g<t6H_V~ p&u  QQYT\tv]oݱs=N.:{)`f[o2Oo?m;zZۋ׏Goл4.SK)PK!> pkgdata.1.gznu[Ymoܸ_Ck sl'Y4S +Q^%QGJk g^nN+ Ùg=I qVIl9鰶([yH4Iohr͑dR4NXnT|-Ve'魾۴b@}材u.J*{$:3Ze@u3U;%, \9a 9u$6mzv^Ajݫ,nnڪ|vׯb=y|^|*'5]/=j,kY)f*%:HUKe~\(7OoN|PkIۓ?q~|:xk6ןYOnarvOVs((4كzy=]o|{b\^\vv8XS6²5J-)nTBIC*4S (q9XixCҦv{vj*[l '٩U[$80^wg˩]+r&t6S2Χ¹rmy7SVUMVe}^^B o?l]\-W7ˋ)Zy©# ^#v+MdӔ:ckIF/Smm)Ԣ5C-:뻩5 :UvsvТeAt` L9֮H'+u[!T$'\mtlRgV7p(gͽWd +̓ۈ n7P%nτڪڋԦV>R :S3{!$$MVSϹim)rE,CTݘ٫".SvcMgPsUȮl'8ŌB,KmV4Y"T*."TƍHTW%Nٚ;E|OuºZ iҨ: q?VJUijkˆ<w2FD:Jcu#`Փy~쑊kQ<{BI{P $eՔ N[jӥ|@7s@t-;rkChP;kKUn=`򁛇 1o4 k>6x){ ~Cv5ˈI%='/f59D0NM_/| ^"[QX0Jrt>YGl@32o$eL.|Sw8R/2˨0FLHcq@{QO>zQ7χ}@Z<ߜSΧݍ&R(=h}j3vT20|-Q4+Ld&B~4#"N[+,.Jt7ND2ˌ.fcB%C$pGq@n͂n[6!3$@0>bggo̎IJYօ4˭D.Fo(,#z@?wn؋s;j^% ac/1 d²is#kA^q+91}+ܼO btDYOk!0~Gkv_܏A tͫ!ϽFQw՚㙛yHfȾXV>6ڪ|q%!4G ?,S¶A1L֣e(Px̑u"}P'^\Ȍ} iڇ^^+KyKxVt~-P_ߜ.W&a,O֘FCG' <\:/&3h̋r>5jrn^d f-Xh]^]'-߱~6pm߈X_gW'_m㧛T_&PK!/P4`RR npm-docs.1.gznu[Rn0 }Wy Âa@d[6[1Ai[,?v`H"yx!-Wx_NSFNN?5|,!j6bIU83K$crcA@-;Q HM-n`c֡J`"^9gђE+g,9#Hs}WhQcc^uT?5]Dt/Vz/u)[A@x%wZP&^ &1"T}^]AU~45ݤI]th2NƃUIdѹ,ي*4 MwR5Z렶cht=AvV[s/3̎BT  PDĂDQhAQpd]).K6<=m(!ErMH%IMG*QB578a}=wy@XK|[o 3B BK B A B ,2X6߬#/0Z<IJ:=V Cm@P+=JMzY1BFwI1p]B_h GΙ_Qy[Vr\7'Q|][ cp}01,+ۤfTן}.28\l A%/iH |QEPK!Y]NNnpm-profile.1.gznu[W[s6~ׯ8N1iS:I`>>[mdɕd(3#`J.r@9;}~u'߆W89\nwzv?źS{q=8aq.&J>-^p{)-XΣz{p4)Yw2ꌡf,8/-})uϕ wp[!||`垲Wxd[pƦ&8exquGk+pjh9ĒJcLb`i2φʿ.\(Vc+uflν*/Ůq`0W\* 2cP:lpܢ1}q-PS!~=/U?KߪpRB pdQC G+m0q rHd&<1}VU=?R ~~Ŗ4[P͵"rl\RÉJXHxq0~m t#Jڭ nӟNoۦE-,?^.Vm_K[?,_s.$Vp/ԷqtC^yvzm}Ez ]Y;p{/glj1wV%D,wV̭)!:8ݙQʬ"[S|gPƝ;?]N=o$( Kc< #CJyACqYRZ+; M/~o+\9s2 KtQ2HRRz)c'b ";PiHpEAdStK *1,jłC `=HBPz$;}7Y5VARrsJSs~#]I-P;A}g/FN5%4 q@brgE9W-+-Iբ>8F ;Ԕq"(P`$9٨VȄb׋fŵxVGCVӍ }~nXKt.Wb/aj0x)P(:(Z%Y PK!\npm-run-script.1.gznu[Was8_˗r7C0 0Swh;m 'rXINە'0 -M,iw{rzZNdj$FC6qt1O^7'$^4rbf [U"[:Ⳝ+86prvIzq)0EkiaKٔŇlV,DZ'"HJ ;{u@NB; 35K!Q}UתY*Ĭ,a^֚.U9ڋkQk_(!WR2 C0>?3IT) p^Z*~7m\O]2)E۝Xw հk_,i#7V%NJzE\*6ܻ+Ÿ9>2b;a*720[xߺ'i^yc|秏=|pxx񣣇Selr~ؘ0SD!!wK QEu3IoUe-LiDXƘdbܘ,?o,D{T^PfFirHd690F*+,?ۉOyNBnŸHL hk VjҔ N}0؂^*"sF07:ELt,Yg*TWvC=C)KX@&T6Q7@CDfΏ^#5y֔ҔN4׼Ƿ퇖28TCkCbC!C2fxgD pU. ԍ\5%jpqTW wV-VQX-l{ψd#bIL,vvE@x$No'E2w`;`W"L&2$]n+Bņ)ڏmdOj > -THS-(cJ;ݔf}ko,WѢ-}v&FC;Z84xE ZbǙJTzajAqјЧ֠Ml.m35uY!O~&Nmpqꄐߞ)vhu-oxBj!WB% Y\`lG! odMBS1Oep;xh`v>Q)~)gkhbOQX[-J>~}OF9],gUwڲ ץ.bEqK&rcSS F(JM`K$#6)SǴܺҏmj[Ho ښ.ʸ*I3pO@fwy) _uǥ_uG&cB$YFx5:׸ ʼnrq;qA)Z4몒f)/(⒉ Lj9`](  }p'[G]1hj'Ț*΋&@DfGaX4DyXRpH@XeYƍEK<&E #e`^9!Q<[PۦaYvq^>Hd;0 !xk.wNѩ꼜6~|06JOj/aE^A_|6 UUa7TIj =#smlJ<>ϱOZnOiX}AR9Oێfښ@Yy'K+BQQ#Vƒ/5*巇mlZ|C罳W$*᥽{ 4E_Y[UH$}I0%'/vu@n[]奯hp9EObcV@)5F't2M<>>?. {4 r_ou*](Iio;o^Jb{n#v2Mh<./;PºgX/G%ovb!)S?.CʆmC<}17N 8j", e9|7vP&5>٭_C5h2ݎR,\csi#d<)6$>9b˜(-A;>R$gBfa2~Er0>}!b9ae ͷz,RX Q6y6/pʗ-VXcnc0xɿ J቟IQ{Pu68mEMڰ]WN2&x% K1=yLk*E8`J'I5Dy!Ά"ۈf1 %- xqqa=r#ꦂ䦉좔0Ǭ*SYR3WYj*O"N;F2?a a5PKuL5hJc\wo +^UHOĘ3(|&x=ƩLSz &C 4:IM?߉?_Ɲ~ S-;9,E9MK*^h?֢N0tM?qE܀c)7@#i(<Ύta"&!Ѥia9#"L4;u#r3}4;(('qm@iix gŔW-&g(UBBez {G;~+=EUdXPhM*QwDj~xb%.6,Bqk ަ׋^8㍹LE:Zy8+ks=í̛t l}>9phs9_u燤\|P9n D-XsbܡX]jПF|:q@*ӱ;)kW`or˥ªp\0n5Q'sbj` pQ\?Si8ѹ݌W~fRJ2Ǔh-Њ|NY7e?֍*PK!9 npm.1.gznu[Xo7?8 )HmCYuTĶ zC@R]R%U͐Z;J/-&.9|ވ8(M-A|ͷO/h,/_m5_N(wNo|#WJT/[f?NfY֟dL|2vVXY[W__j,wl|{C^fxr^EX'uJy_1~g-Ry Ε{e6҈6zx!^jLL~rkY ,JP}‰S=*U-֫EDۭuAH8q'V RԞxa 2kCOh6֋RuOvdYFȅکn٥lGtڈPVv"<%M1㽈zr;ģq/"#'&5N`9&Ca8Re@gS}g^|Tycro(;E'[s@[l9BSmeд=Mި$4&c'޴ 5J+xZA,XQ 聻Nanz{y?l#p u* a&R܅rCLRЭRg4C!5錗Q *[ɖdv" T{,m*4"Q 8:9J|MvRq힘wf b8R'ǞnMvWdts9GܦH8T5zEi,^5Pӷ=Jl >}0T{-Ka)(?Rv'c>&#w );RWS?)yK6_-X5 I2<:PMUҺ^00' b򱛢x~Kqo/iQbYCl5_Ժ,D_W!ֈhv{Y˯u i_RB]h\HsBOQ@0O{15&2^XkܩSGCAQl?dfǎ3x:NSTl\/ _ڲ@WHUL@QM#U.Z"Xq˳[嘪s㉘?_Ԑ  Y}c`Z^PqK$& R/i֓5 l8֨i=FJ)vh:7O՚S{`M,;u*v5Ic1`UBi QM:i.2HE3ӌγr#:fxJh*gW6Ó9ix7↬'!$x:fj i\=vs">zknGM`}z 9HGO ѺS+$I\#JIhFbOVX FXAC&N;tEAl@Jʚ1  c9+Z(| ϑZNDF~rmVȊ#Umɣ /DGuc-Z>taˢs)J2(Ļ]aT88<,? H21Ż{Fʲ%=^mieqLɦ֏1k=ۛWӋ'ӷ(FGg_^ iXD@ԠfP3$Xި)ep!. x jTke" k189h.=Ѷg5 [9ɍA>_1 KLx,vC=a:Wc,Rp:Q#ΚJ.exÊiA!N(Ldŭ U.Y`"S 6>DRkPB%zag)hב.{bqȫH(q 7#vq9 Ja4t)$~^}=΍ͼW8<:Ϸ:_?4XsN$WR9N{ ź, A!-@1H3,OQAw jYj4qFgFY0DuNռ_c`ȊAN{OA;(׵J̒ɪ6:`Q2ooG_=]uB;o^_qS+RP+8 Ww1Ӆ JQ1@wxt`!A7ظMFƉjuT$QՆqCMZ+*[&H.n{ͧB29PQ\Xwon^\5W8Dy_+5 癦-s6k8"-7&Ogox;4mҗ5Iʝ|{W~K3!&fÁPK!7npm-publish.1.gznu[}Vێ6}W )`ibdn->Q(ʤ˺.=CJq$Hdr.Ňbͻ ?˟rͶo.DѼ1vDz~S4T,hHR/eҍwZ,Wbybi4ܦOWARvݫ/Wj^}OŢX[VS>8]U6􄿕KEY!?iV,g2kV@>}U-*xȳND-DŽ|*ݰ(&kBQT<@:P% 8=UŒN4'm]#j7sdGhSX:XfE։g3 /2zPiÆr3ISdLɉsQF:EC˅J%zlTOFG^9ҵ˵ Rw#$Vb@nNN2=Qeu%w Cv)Cg3- ͵9]רeijF9fb" >[W@jeΈg^K6J*yk`ׄa|.+*s q`򋸦E5,N\%:<1N$HeHhIj}&6Qq# v:lѵzNxE'LASZLN1E2%`U6yJ3㈊+0ڎv{ Aw棟I:WFFɝMI8R"ӰT0+b,-&Wp \Fb,AW2!,,XŇb4=§HYQzgA|qvg'j T"4dSG3,4ɡ4ƝeFm:wi2f`ፂ#2LH-Mz*D~?V<٠(^օLIʛ  RH<=<~0@x[j%;dv%`Gɱ;S'G1hZV1Iu5nNØr{ak!s{XKhYMϩ*w1m QRT$KW*1=B,(ž߈I2༾ ][}^o';{&Hg@'*:: g{" P7 PK!@@@ npm-ls.1.gznu[VnF+A +[LEŊ/wݥl=#*IgMr/5PXyof2FY:9MF0:G[ab5W'l:nriqN B)̡ٕ(х#E2Kx b]DtO4v| iH()CP| J[Eq!4x>&/f_VAfZRX=x@W+N=W2a1pptH9LS [tm3ZLc0Nzt֖m;v9QцB:B Ba ו̪Dd-}mѵP@FuXkJc Ci 07CdF3*\?̘A7nZK]B' icMU<VpLk3 &~_$٣MtaN8Ә^?E}zl @RftưIa۸צScS]pĚHiɞ㟵[ h^fp7ZbPL]1T-`&`fvqM$VD~lI['ݩC(H8\&sVzB3a wBJq( onjȹ|A#+RP8d|:KZ˽ MHz̬ß-\D dM59rtZ N690;ÎH^;4|_V'O0d7OJ<ܲG`DF<FFcR&?(@{aSwb;ߛdWϜy3t ǧc`?+T =B;M/[=afiݴN[9lɅwۆm] | PK!ww  npx.1.gznu[YSH*Ώnw7ÅInEYJFIh$Suό,$̣us&.l==.J{x8{'#Kq,cOp$q2HEAFu%E^dp&TaK?/ƓѤ.*sE,G4X">/A^cK+͠S*n'f.J$L)y ys5*7Lz4]]ᡵ聳Bj$D(R)u,o3ש4pWd$(륀j"̗uFR26PiQy'9/E,N1 X% Le*Cj||sn8ՊRQTMU󰂣G3 y m++Tzš#Bܠ[>尡@[D 7TdL\YMDH<̤ f5x_Nxcrj{%~ (x >ěF@7tiH,\ JDr|puE)3M6 ) XpƇL k3x I 1W+㘑ȯ٥T EU"YJ3OAq[WT2+tIftt01:A,ץ z Iጔםh,i-;|u8䀆H˶0vy\ڧaZs< KMֲ^"]/Y|kD;:oQsb/`U4_ӐmV$*G|?KN.cI]W0W%ˢGLt*Wt5><C-5Z)+(DBu0A:Xs~AT` e !Į.K@8% 8aD= 6?u]ydo6ł7jj%6>:ݥeD֙.S茰Ҋx>bB!DNoL D+N WmXQrűgRy*=By6ڛ0MJi)PZ]q BXh#d_ڂs.GYm*-sf5{bWyU8-[ֽKeϻ~ű s ef8j$JoyMk%=E`3tn{ JJaŒ ΑP3vR@T=׳44s|Nl[.,tDes\%Fmiq#V%Z[ydISy" M"H~c=>%YuŴ^zfz!;ZrK Yew,/[-j%+gI]w,WnɢpLz3cbRH0hg*Kή>DQGqiˣE)Wxi UŚ67P#[FkWş.Vo:Je6E8VVm'r,;ˆ:(TEJ"0ᲑG𿌙 Y[Q|b42'k* /~pnu$3v1XM*_)/V8#ĶZln[[xln7u-}ur Ӧ;= A'qߐ~fv [._/|:_BM-~gA3_s Ɏq 3$;zΎb]&^F"YW FXhM:hijg؟[yl9$]vWUՄwͮWJ"pEIǰ:^N'ҡM.*?j''a@aEG?gbYa3Np('W_Na靽]A^! Y;?>c!PK!]ڮ0npm-whoami.1.gznu[}Qk ߺoD:lx߱LI[ "m431((@?a \q(CT3A.SJH>wćt?T$J4߃~aD5wPK!F!! derb.1.gznu[XQs۸~꡵$d_:,uIvF HBbew)v\;X|BЃqRXn/Z8qū@uCdrر `ܽҊ\C0RQޝLf39I`"ؽPhI!|)_ j 簵vw>b7*"s>&7ok/ :LFwp3Άç_P@5L7(p@D>d0cxhnTSI);ŧl1YZiUZzZ_:>:wQ!l <HxSKS bV2j=fF{ >4MSӣ MCK8k g JB28MyRVCK!mCG6S%x2acׇr'vZPsW*v"Y{4T/ &f WBr{-,W$,}rRqD\xMxn#C}:B|`ݪ>y#)C0afs`Vds BI"q# Dƥku0/sML}c_9H7c~&Q%, T8DS2逯lL)g!MXrc64֪hE :@KJm\d!r j%F="sc{#5k)IX=&9T$7S֫ kxc'uevT5V9Orչp䖎 Xݕ6vuvJ yr91ig` ZB/WIգ)[ BTCR](n5 E’*0C)YOKhu"rȘa.0r+7J<nja~gO[(/?}HyIB9E=7e|͐!|dZP921&p1L@a|1|a"XQh2'Fpz'ҭ1JڕLP5oHd< l!]bmf)#tf!eL$sA!"jJXi cKlO'&e;:%*s Zh  1qprq{ϒEߟղ7S %@xOKG|IZBCT6\r贮j"iSsX ")r`X4CyЀ݊ d*"XM mw7a ?N^=T5璪z^ JK1/]w}r;MݵJ\BP@)A5k \7 q_QALs qȟZ|wXM[[֨ K{2Ap! GF-?r} ~|gxۂcqWnJ=D,t<d~;OpvڪE(r 2~U91\Zgq%͜ 3(ċ1OPtS*'&9^< f&]rf1ݖ&:ޡ= \~yF#m,-o13sdo+BDG֪XcXe\TvƓoG;t?+0+1@{5MW?d˅3Ϙs3qب2,gZƨv`8'7r˄C*!He2Be[Xb^pRx$5$0Wee3ow׃f-`cE9_?|8½܎i80sY@ua̴Xk{$%{]'gxQIW^<ѵ3u J)`MhAmb| zW-r'VԿ `u$q  (k29TI-U9$GiB7VL&'$HC P[2K jbL m`PK!npm-outdated.1.gznu[Wo6< ymu&F(c$bB(1#)Yv$M۷0|Go/No//08w\7Z~Y4O?\XNy-8xH 3Pτu'ELE:c(h/Ĕʇk#ʢLK'rz~3܎Hm.-$(Na.YR*1FOjVp]S "L@j[sDZWբ30HX;ٸY6eE Ļw ̹vLm $GQYi4m}5X^KIoXQìσԀý8F8Y R;J/iWc 젏U3!]F"ţ2w\!`PJwj4%QMlblgC7u+x*4=LP@yly![)]4)sHi,ݬ2E;cB޼]2Z_WGR]_^Jtc:akPm.#e]S/,ogzWk%T8Oe ,<ȢhjH,A,Lߞ"k/!viCim^fα`h2%JE 7,㬃0ᰂ梅gD zAִ0=k-8w 7@~Ag6"v9`8'(uOJp\k,Y3LjM 7*֖ܶng[>k̀=sl [B7nv J0#7XK}"MpGp#VCT|+L(W.|٤FakSлʱ}ރ\]p~}׏7  uy~ǯȸr# Ь-N$O'ft hrNDܴ4h)yewR o} n Qy_b>ݽKȈ6O}ss!"iwCܬ1 iMN} //wQW6Խm<>FT-g[9PK!xXhnpm-README.1.gznu[Xmoܸ_A>$֫$ŵhp9 I݋g{p$Jb,Hz>3Z^QIp癇$]m.ggiF9ěW$YULeՍ΄?˝eq/k%:iߐ7ɇQzG'woTwuvVm鲵NӢi+r"-OtRf{%㷍v?_G2vMeV^(^HSa4FD.ǢTT2oi)BD>6š9 e۪[RS_`(U cKhtݨ#“`Avٚ#C0v EV\.F'tVhQS^ Rx8p%v2)Bb&saMq@pet\X SdkdVQk`'SUg':.T[YwP2H]ܘU'^ #qrX:dcgsBV.!:*Wϱ9EKI:+iZqN.,8+>6vWi )̲ҝxiWSWi t.禡PbєhOoBG,lTܛ2=jߊd9R \n/}BDDɼ6޺i;}ڹ4t[7ʝхb7j:QτsbpK %F4~BbΪJ rqp1+Tc^R:DB^L}PsA 6',؋ |< S@4SjDI$]#ԃ쨎"}K뛭xM#_ğpA.\+\m Sö\thRň{ Lu\H#ppWRg;R9X8vi\Nхj1WCvV|R=a޽Cpd4 0TSe_MpDPش}Kňۜ*GkP|V{Ҋab<S\3P;cd, Xʀ@5QDƚx^\# O%#$gg$:jM_j/׆x?Drݏ3hjl ԭhG.u!tQT]`LNHK ZKڟ[(;SY2`R3 ̈i A>at1 Ӡ7h#[NhqJT;+(>B$΃7kZ%'!FIllD!^g&١ 8DH*y;{U cE1b6l mv,A`@fLv;ҭZrXU: zH0ۥз6Rj4 8mޥ=M({hǓS Mti6F1' o?Fﺵ96 jC~9I/i㉘΢ &)n8*R:CL%>8=nH[[6 "'V`Z<\8Ҥ#h$^bw؂߲Hl+{—_~O¸i*ȥS|BrJG^o?pE ꒩>~1o0LuT7E͜pN-FK<|MHGEHKh=U%rlښCK4dba#=]ľ,&'9Pn&;6kÔ7 ڕ-V)ɷOQ(|XB$fq1G>QQ2=8]{r̟lԫԓ'_ Jʘ/աPK!3Ky<< npm-pack.1.gznu[}Sۊ0}W ylwwB)MMLAe[Ė._ߑ/Bq 3g&;L3&`3sI8^N-[Oaas8f00Rt&VIRl3x$*uYO,׭}8LS9Ix1ss@BbU[mց6UR*Y:Ď *B׹0(<"(ֈ'"ZQخSw{$%\7 S9eA8^t48VCX~週mG7F(gmNa\;ai8tnN@^Z wRDڪXįH \k|d9QO>cѨ$tthA \( ̔,0ɷm=qlWՓGޮeUzy Y kH &%k45s؋R+K ;b6~lӭ=IV)лVn}XK[ݮҪMaI"Ә.PK!ᒀ,, npm-init.1.gznu[Vmo6_q""-0+YglİaEUDY)R8)9ql=ϝ\IG4]̮^ ӉfG߾_/Jlxv>=7SW2M1e$A6b-YC;.]\ΗẹdQbA4N6I2[>S:vBVG?M}?4?ߌ~|29t4v gS_Ǘf#"kx%̩nZ2kBMus\ʶ@DU v˺74T=#]i٪Zi9s} x!V+zѸQOȦWʐh-"X/aqY G[z ̶-mR)n8;Nې0;UָCte1_./'LXvV攩Ȅ3\ېUDaߧ>(B7R9t؋xжTYm֌I H5jnQY 5)~rULJHʬk ԁ钮JRQvW3=PMg 3Ch_`xx4X?roW T`^*N0+ $5V[ xVke]@od:cxaoV|ǡ9ϝk&7I8CE+LhTEjX:,B0COY:8br!8qhlfO1R(d+2u!g(G7'[.}UPm҄f-v3YI <[8lU\v%67< o5:(ԍjdb4;? =$4jbYaɡɯuf7F՞SF(kɓ0 V/,es_m?:S:|7@PK!nE55 gencnval.1.gznu[VmoF_1Cs;\Um pr{w5fֆNJ+/3C‚'Xe ~H*xj{-ܱ^Cdr(ٖC4،"pR6n>^? r} Uw iý4~. *ï!~W_m]-// >C+vHkU8vݟ\?V9[8,2eM6{Bo8DghF6lv]T_tz)z9weq2r O.2ZvzAN}X7/K4R+=Q-$= ț?m~ >`!;6a{KXRi*8 ٥#vLb)q>LPj O.-쐆 |"p̥)8sx6ho[:Ϭ0e)+7Kb:1gLU^%sR\ȘЄ⻮Zsr̭U?wfp:| C8mPqKnz0H-΋9磻1aH#Nh% e1-ئ5h575m5ey iNlNW /G!oحyaDn0Q Ti@[ *1  -UAR9ѷ6KNP͒y3sG{>d>Drax`F3`HJKPƉpv"dr['>t V (`eMО Շ_%|7&֢t%ŰDžppF5b+fM ,W' u'F kwV~(I HЩ54ө!eV|tPaop5p.IuŽ t:+G^\>n`ucJzTD,f"5jdX@րҫ(߁E {p۪F[u`OrUBy\E3UKCj;@ SxYU- ([^8#f&ܢ)iDo֕Ɯ<hPK!D npm-link.1.gznu[Vo6H?,l-P ݖa^Ĉ EU tPFRq+0bݻ;~'׳8yߥ]_M9_|$ɪtیUVdc1_7KHN.HTFdl>',Ioe*6X=۞|:tib[\|<'j/>'TtE~r5v:0fΘ^!N2yjEkMAe)ΏD3 DxXJ’C M$P&j h_[KUm|MI6yĽ`G~)}7iZ-b+LH]tCRw;CWa 9ﭶ_H]e"T}7=2j\r}eoxi&N d(]i[g":w \ j7 0ۮ7s-/`K%yύ'`]*h}mth|cpwȸRxJcFW2TO)rWEtAG,D2S/8"kQPK!^0^^ npm-edit.1.gznu[}S]k@|_j!DiU[X.T}8߭ҝ8IvӇ봦vwnfv?Y=/_e~ρǒ.JU' \U%\baSF mx{_5Cx UĘ+0 %jZD A4֢؝[Ҁ!I\K0^u}KHM.юSuX61qO-iSm,)=C3I -S!vz3KdַPs+/yZ;5dA WtU7"(AS-VN0ENR%~YZԉAf6.҉CwuʔC#kVHtɍ $G”L!xX._W>q<.eadP9.˕^Y U|)-A^yhL^l8צƒ˱Miin]%ޑuFlhsŀm4E͞zO  *=fpu/en, ^|ΖnWq7ꉽ;dPK!0^;;npm-cache.1.gznu[}Vkk#7_!KvvBY&ލnbbtJg4YJ8s%z\{9Wo{ѿ]݌;,L'܆~hgӮ(Y¨"H[Q>%qۻl2c){605Cp 5/'k+.kO9#V'鼲̗Z ؊\VK?+\` 7lP+39^gW|rwKi>xY` JkC[R+l0EwFȅ6VV 4m)tU 87 JkJ87L M`-$!9 7|!P=W 'UOl#DA!xIVR)EZj,δu D?bK9js/IKZ,2K.̆wHI<=F<д)K8yϜ8b ɷt*mRU!m_F0 Uh&UeV6 :;ǎtl>a#dOP*xၮʥPm(dQʊBY|G|~3aFm@^Ҋɋ46<,Ѥ%R3hOv4󈦏ߺ+]G`GqxP,\k|R੟{a1*@$QB<1ҝ V>%= qTMTV-BLiB,";%kPZD ]Z$.A3y%"r=Otpuwe~5uYN! gNWi77素S7ˮ~Y^ݵTCfw_#y?9nS?͕'oNεϫ}8AW8 PK!-- npm-help.1.gznu[}R]o0}i j+UӪRְIP4Mc\;]$ͿINM'snh͊]rE˞=\X,XQ7^B1[t$P($?,Osg,^pbY3~-"ZPnI~LUi ׺X(G`6JBʾCI O rOº(o-%yf ݊ %]H "7eS븬j!=Վ; sE\ P2_@x`Xpm뱏G/X=}|Ŗ$e5ȋ y!od>a+p&xx4ú';Xs "8L2eQ;&pxE ngl7wboEyؖRIGs s G$/űu?U d0p(< ' L!2LgKU['ĩ ^z|'y'Ude{§ .džPK!J&npm-unpublish.1.gznu[mT]k@|_S B('5J+!(gk%_#݉?'[v>fgf6zl+=Ϸqr?}JH又>=54u5jt,Kit AB-W@ȭ,yqĉ"Z$0BW7nejvUׯ7WN}&\i{,fc؃rPF+˲Neh1/F @vDTKK_K["dXΔ.Oq2|NJL(dFã'07[x LTRqLJ OApP9BRitA6puhPr!?o0U4U۔pN)ƲK[: 5!y S\DҳeC?;)'.me<N-;F?3 @PK!* aanpm-dist-tag.1.gznu[V]o6}篸SNZ0`imƈ Z,){/ٹe+1"={G:{xL.Wtu='iZtx?1[w7g"_f$dJlj~E8 |b. 흲51bIM *Q~ON,1m;9nj1B[옠80(KrzceOGhTxsj:M؝a+}ag ;@=z"zhk/"Sn:|-dg3vS<;:odRrX\in>1)phxy1mCT!-<hUũOrkzM1deHח¡<^.]YJ~ұ__ ./'Z*Eo@kNf9pvUo^3Eqv8H(Px[c~tsΞLW0UbT`cO8ߒon$WPe=8'b9OɡQ _oe|]פG+u PK!v  npm-help-search.1.gznu[mSn0 +vhÀ4mba/MZeɐfd'm`{t_C):{,E-wu ?3m2,U^ݢE/r[A2nИzP{e^`鮄[jN _<_Y*$bCVvyϷPot R0#% Ral8D/YP}z돉4C6;)`$`& ?L|px9"D K.3ʂ[qsfI}HY^}p|`9pTZ0^JpH(3{ްuvzuۂV py՟>~HoЂB ;^L%6< %0F*-Js rY _?m h<_<8(VKvua'ip dc kdºLUFOe^rO]i#4͍G~Ȓ^m74 7`)4Znd" Oޑ>*ؑ޴;gѰ#Xf fǡCr$ՏzSA5R!h%ÿ*݋m pZEN͊Yd&osom]xq'7 Ea7\;:z笴r1>IV k NV:X@21ˌ.o^C"KY{ G4uYB5WGA,]PRj2JC'G(m;e.}!9i \Dd#n):=qV :d& 4LE#INd8?iqw3 b#Z 'm!FSl.P߾"8<Q$g0%8eW0crJO#lUx"V!5)FL\jHB(FpTherFR. e 9 U\FyQBj%pHm1Йu0Hr]~ tɈ;6jcqK|Mӫ;f˟W?3IWǜ PK!&] npm-hook.1.gznu[Un@}W"$@JP$jH MR{쮛ogf7Rnޝ˙3s&9tƗI|4ԁ>? ȯ(%;ԽR$@҃KD`֑#_Y2r5O(Gd Qܽ T6ŷ͉28F[qk*t'ɄC8k djŹfr|1`0gGKa.\Zs#[$RCJg–P:أ~ETĩP/-= ?#X0JB\Z4@vfY%id?WTMu'@rA#`["uÀ=^ew"xsT@"˞og (=%㶱s 4Z3 1_SĤ('9άtUY'Xk&,$ a0}?+s\qj ƒ|7tt&6E_?<|/3:kSb#&e*ԊtNG<@n$UZG3C_])TUfDs1>_OeM,u\8K`ޑDdhTC oFGaE[4H ui!yN]R.W$Ni:(ϖ[h-.BcC^\6wMP+IG "ɧMу\(QN,+JOV g/": -생Ar`o (rS~~\ȞvUZɗHF'ӶM氏 XnͼZVN,|&-J:"{3:=gpv1y9Ep ɋYK 7?`%3kD`-2PK!}葜npm-owner.1.gznu[S]k0}ׯ{/cuG3ą1=(lHrL`?~u1r9(}:/u] =҂2o+׉pe2{nx+՞1cMcɋUҜXjS w??~$)2ʸ >:6qd]͚=w@?gnL# r(}>W B'z; ?U%`AZ6G'փX%w8bah";ƾZhNP=AQ-4<#2x褟2- ߩi℘ix?%y<]Z5|% mIiP㬎r= `pB$A#8q{D:;yJL+v NFvC`2_WB ( AjAlAae* r2ȊpՈ\&Q&irR0v$M,[CjMTH`_qJ> 6*2ZP&t nn*yuvЫw bd2PK!,/ genrb.1.gznu[Wo8bɞ-'Ţ {8FE[\) Zm6(T/R66DǛ7t|סkh#R%+^.vBo8Jf_Fȩ+IKmȭe*rv-C]Z OKEFp\B:]J4h2և7*xcI/Εv fOPmg%7nZ-vAZ_vx"/F8՛_kz5O/:(sPs$÷t3OF˟u$]xp3ˀct#.U.IVW&E6Uқޏo'dvSwIw.}<k . 0Xh+ d@*VmmQNbM<p~IGlA$S#mIjS~Tpbj۫ʄed8֍c:x5 d܎]Iu34>^֝]V6~XT!i^Sx6ģ#A"<ĬV5n?yHQj]aG>]/GG9]R y7_% h䊗:փ' ',sK5=yj1sv}m쎓Rc68nCO+RàU*lsȅ[YEGN c u/-,]2ߌsf jV#"NoZUhV8PNRٞү[%dQLK뜩R+mt1܁\uL>֕]q*7;qїcF-:4yu=k4٭gcn'naPK!Rmnpm-version.1.gznu[Xks_qiby$q,;xX !Ev8.@ܦmi_qxz?œ/wW#?Dғ?twEqɭ&WU]SB_ {>nN lG7<8xxbqբoǟ)}|gHUS2f"KS2E2WPuۉ3CXoӼJa6gYD0R)<ʚ*4HUT=:3{M~XwBc'gfO1qSn,`͋@eK 'D˳Hu^tRY!4pX8Sc4’0yI;H(0z50`(sxK IkqVEᝃl/O:2RYʼn%gK~<&ц<\1T㳧vgL'*aY,B#՘u$cÕKfeXS#miPnAh)އj7OIn6\t#1)D2"n=SD GB&gQGGFASiEZi 5+YIj::|f3 `#}G~o]&|ŤoPSsӴWH4Vh %lB1s7N+ =`h[qEb|vp3ܲɁ7P=gb7Kl~ ojtz1߮@1R%#g,Z+ qחֵO?ue'#>ŷ>v[n M$ |qW_jhG{lxwf[,Ÿ!J-/0FOnZ+=LʲUS Z|n*tuLkd}՝Y .z{ZT\Zr]ÛIA[gCTSpBun#ɟYͬ?./Ż2ֲ`Hp%Z½t$x1-RPK! npm-install-test.1.gznu[QO0).{UMCKX/plh躥@?%L.ΟDczfG케!FVk_d|mޞ$qQvuak;1gMHQV.*_&wWd\-\o^KQ!c_dzi~ЦTBokx͝6ŧ,.scUu0ٯTib#/ESWfasf31Id2Ijo鮕wj[V&'ѣL w >^2qtY1,c5ݪ)n\4^|wvy}vqBrV l+T#eLȬ0t,\%^2cVJeJJ\0s7*Rlr3JߩB4HBjOH_Zb!J ǃbfe[>j[WJ.U^ThĄ$ YxT^0{{ϓ٥>50]RH02J`6LeHֆ+_tY^nygqXfVʚֈN }% XQ6\%L 8 쩍YM-Fy[4LzӢa)2]hCYE :#;#e*[‚D:c,lVVVd#hY.SaµiDwjuߧ ݶF_M ڑTX$lSckq/'4d2 !NJU-ei}O[zYV``*~*yh$^5%4N2H HH_xDph]?TsSJf>KDz(f@?@geNK2YjJd`o P&VȔZ9KMwQ|JJ-,i 8slC²դwMUa1cs M|!zAP AV;Moyd$_tȆQ;FU 60h9H &EKMF(5y y(|ӕ)pĝ4JnU$i8s<$'E *L`mAQ/ϓha]&ק{AQAJY:mrYd.iA2DYւ J;/^>`U>ƿ B *HT~+nUƞMWK`NH& n8ēTϸkpixWX;`ڔ9XD5RE%R5g f^Av[|/q;"Wq&|oÊRs0ZKd=Hf\!a0n8lhn-I kG9:/lb<x =r ،yIֻĔzT D(x6sM&Kfkq&D@C.YXϑmw2G%1$0((]0% k4%#o=b?‚=!> hۚ\zmЦI 6*wF냃"T.;/GasP = d10Ap2SRhsI7+tرyG͌qyro2A/pü'^hk̦cɉU 8-pr|:z:6ʱq Oo$P|Ap)B ?)~zG3o }ɬ ʧm 5>6' 4. c{H#'oJR(iKBPII;-Ƒ8ƹcɨ8D23~9AzzK8DZ hco*/Hh` hZXxe  s1i=z6 1 \䷔6:ܑTK#F'[!Ԕtͽ25w8'2P("7W5̪H&4ýZE0!d;5vZPw|gOFtA69RJaCh^"<;6J I:u3\)fFe6z#8mB AhX6vقAgo3LyZj1)+}9*&+q}6[}(`wKÔR7|e͗_.KV$CNP-ʏx1q98T Z%xWb<`HB2G-=v|0*`L?S,s]MŜ sF1 fERXiD9á3RhmrZ|?_;>[ 3##q}1Aсmh<Ƙ xO*m HJs4^ur%I-co?59ŔB900eCBsD^@hu8mL;s-os;]T| "z?in =1- Ѱ9woАuVe2>-rn&Mjp9f$nݼ.bx x ~_07ݰB /t>͂bn]bƧZnqKֱ<wβ9]TS OE4(Y& ԕ&}MQ<)T"A2 lXpl-,@31;?ޮ䭢63l N6lޠ^U{o9Q]lU#'*UVIdtӵpKG$}ӛ$Qʚ} (qt{$ǟ9z4λנF$fad0U4Ҳja.OMvg{O@E`P׆whM%f@zq|Dsio[2hG̮׹4aUBB̼Mum-*M.(e /WuXMG'ktl1cB/7;y *J5ZfvMc:Fz TI5(`&J\|za ^n@is@6r)| e Y5t݂}0Q5{3=LdeS-:~WKʨIfAU(,!8DMSamxMs`K.Wi1sUSWO B3FVT52m; :Z$ h zհ\eJ]NulGZ!ھh7 vd{5Q>>+!)t:mqq "Iθ B5շ<ǝf&x7*  }fh 6vU"Ax6hAX/HM$M06xZ3܄2*uȮ{hС&(%9on7!* >a%hR/;՘.!si'rD扫sGۨzS·c!+ՔTʬsܢaFʵ!O,Wx^. z-|w[bg ؃|9TGLJ A6^])W,ሚ`7ج5b޵¬ XLeZ4y8\r/khl]ik4+84*?EmJ !,00h}6 fR8hU8?DLo~jڿD708ܭfMh#}s]Q9qd&@2]F]!Fɯ\o*}8J6t =x8}Zp(W6N-cyEt 512%$]m)d9c-\I%xj_j{B %.Cq3PavY;CC]̲ïi2MN|;sEcG1x5p!԰. t֊ G][=k׈~kUC )sI'a2S~7]≟E]4g .W7Nkpʋm2yQK= #6qJ[:n=ABfR-Q[b*w"1{9ۻyHLlT ^њ~Xx_ ,koMut [MXeJ!]IٞZ.罸gA;QIw֣͂2f<#u+Jv~Y}dc\dM֣*%`Kߣ'k*1Tz~0 'oۨ} U`n ExJPK! npm-test.1.gznu[uAK1+\QDp.M.b<6ndVe dxy#YB y' &b6Jm~e\unר T|gKU7k ] ɉىHvtI1g5 .9H{~]6 T{GNKY2Mp>1\}gj~&.e=/Cʘg.Io MMF0 PK!znpm-shrinkwrap.1.gznu[Rn0 +ra1ðcz61_( l`lsٲ|ݺX~}\/ff~OdUJ_<3Qw;CtuF=ǽmhѠ%G%ӌA>(k:ᆭVoUYJ+܈tL.N1Oyi]bL5^4p'7xgB'Q=׬ξkꮄ2B^n5ǩ_Κ:8=$#SK:3lzB4It񥼣Қ#d<5,"XKGX= Q]j qĿ̓%%ZpZh.e,$}iX-Q:'n9jZܕȊ;|T&DE-or"'0\D5MNs?I\LALUƋ`PK!66 npm-bugs.1.gznu[}R[o0~8e{HEEӤ:6Aqm{0`mw $mմRb|nA\./>HH" IqzM5$S¿Ph XA('Woy< \Tq@3{ diS)lua _|4+gK9XE;\?DPK!cJvnpm-audit.1.gznu[Wo6_H F[6k]4;((K*Rvu} maQǻw-p|s1]s}'t%=xW<`$s]CQ%ʅ5C4 2J_-bF`tH1W8 "^Ha)c03&zRaY5JTSMnz`*`x|?Ǘo M{S2FiSҶʴ,E2唴$t`©Xdٞ?fO HgDR'R!+tp;ݻ0N&Q^GhOX2i4)x8̭ePlV7#[lTq@E"9ܰ~b+%|+p[4ǵ3E&2;`z@8 ڍw" xa zh 9." HA&ZxTdExJK w+ڎuаG"6;V tBe`Tm\o@]64KY=쇩L_'27`9PNBў(^9vAcUNV*%6VVr2{RΌeJK* hXHO"rf ٳ&ʵ^RҐ_os g= ^׾0 @_ ٰ;l?sv`|9y8{VQ ј\cN IД@HThJYin7!Z FF!lJ h_-*T@ p'4ls5[{<}} 8qTf7$Ƿ Is ؑ0[VxUrjc>+ fd斦UL1+CVhn鏾6&cشDQ'[=.f#vxО.~rV-X!oYc7ξw@AB 7~}5[NfKZܜ_NɅghO C:pX[[u8c܋z_UQ>,,z1bH8kfW~4 t:'lz9xXmfŏ7N#P&;z4CȱĻbc>D|;) CyB&xSg薦&3Դa>8n{ʧd؉ GjW :WZCPy|Ю ɲN42' J73+U>ŒEp84ǵ A:NUO(#)+ I@3k58H@ {-^'kcYi Nڊ z$ZEQX)I!I+^Mln'f÷,&_\=-Y݃^}0F5_*x[ $PK!npm-completion.1.gznu[Sj0}W\Ac}y$`(}]ɒ,a߾+y$)=蜫 |[.6$4-`qKw7GDK6Y~Y~8 viZmpxey,Y/EeV;S#|">KBCRiDJW 窱e =*=XaWzB&5oF G3C)`4Ba,@~eTqۙDE'.pBs|~/0t='tKhg,-V YvF<1t? Ri];kbk.c z(|6~8w:>6Ǝؓ4> K/#L,;T^c &%a?mY; 4 2Ѫף X ^7[^Zv3ݛu৖/ΓQ I`) ʫQ3MIRhB7APK!\ALLLnpm-rebuild.1.gznu[mPj0+ i$.y+=(ٖjQY2ՐdVeggg ::GEgڱٷ&>bzIURB6ta7I !w>`\;š> ɸCPK!uAnpm-uninstall.1.gznu[Tmo0_qS'ej7BD؇8cGËsRuHwswٟ(x_(wsO*+pqvOݾ{tH~eUKcQ:ȃ +Ԃs%=0$~@Iė)AwhĪd7OnD^Ǘʾ)N[~4vNjra*Q "'ni n:5$(9d(Zf{,*R%Z6ʭL(ET3QiKҎ m90kR2JG6,-_Vb5Rj|Q(C{E ǯǥP+ɎZ6 GmHÑ=kE6PK!EBRnpm-config.1.gznu[T]k0}ׯii Bf[ƚ{s[ʒ~1-qU&.ݬ'09+_~ҏ%AWu +Y=3\# =wh3d?4[d,IYrKtv' O .7\ ~w>e\==^,NuĦ?FﱉR:O)1$^@Jbis_<_Ւ*$>Ե7_aږb Bodot+cK^N!hyNH ִAL=";^<:yB%oO X#TsBezhM/_ "_m&E=@rs_ zB(]cz3 Dm*ۊZ27FmDB;sۦkX (CzƎj,BlAO5#XJ&5tQ=R2&GC0HšhcC;Ui9Qz5_tlAL|Eh>ugɼh8I+F(kטgJin8.Fb8:T""iA}醛hxӉ[d!=R_$ǢzOtbׄ5=Ӽxh)^SfgqPs|F',Y[hΥws0 kPK!Anpm-access.1.gznu[VmkF_1݁_rPjr4r..a-%]uwאߙ],91b33̳l> 00sϿ[I&k _$i񛪫12nmZ Ú;@.A+9,{f;n}zN&dZU2QEcmSSí3"sX\t<{#kgS^3?ڏ*X:6FNvg"Ҧ5I:z:ʴl s^XisML =K_bY<>QZliG3zxawDJ]`P+9fb*#"(%Fc')ӏyj9(A@E1ɱjxLKH?nciOh˻+ubU5okEUAwGAjSI <1|' t:`)NM7HHNgكh3|WrqG*BH('ޗ"+᠛@2$9Owm/XqC%B !7+<0-D?yGdu͕ vz&yMX13UƱ8I {iuy\a+v_%o =; ^hM5 ZDGh^0 q+(Ƅ/ם#obdu+n6d8ƄI8`tnT\gL z#6Y6AchחrDdMa3(]ʾn@xЄN0 ^ƶcXz0{kT^p$jҡ6@aU_m˹x=>+QďON։}vsW8>yvupV”U1{dCeG偅E> G2xU;OjT`B&f/:rs(ǒ WٕFH Tq+Zs؛WN[ڪ-͑M/+H0Wn ӤbчpKj;Ny:tCK.k/0TTՀc PK!_CcEEnpm-explore.1.gznu[uS]k@|_H}h'QK[Rκ=t'#}$)$ ۙٽdwuP.jMg0;+ׁ.?o|XRijˇtJyv]c,r n9:AiyӠWCmsɋ`IΒm,ђL8p=Ueږkq%RQE:ܥ6wf5ppajl_#e$9^JIL"R& f^XO|ڠO'9kU)@řqQЛ@}<"[o4sv9N(`0~|ƒ,>;<4tOݢĭf{ qyU!]iA?\5;0lI[! #z5Iw7RMb4ؼ>b7_꛹3{/PK!ae00npm-deprecate.1.gznu[}Rn0+:@L;h`qcu8KQ@KZ|ﻔ_E\,~d26b&<뎻#L'1y^ a'mը։ ,/1p8`* ,/Dm嫜ЌMSBuEp0ziv#ĜJtZfmWm(u l[lB# vp>\Boe܍=Xg&%s1 G̾BSR20I=͋Zx`ժ "Q$="r@0{+ YɂA=xGA5#%Brg# O &N}NYv] -J YAKv'qpQ[+MFr1JYA4 c^?eZ'M:nk'ђ#Q;L{7YbF&՝E@^o \Pn 1#Cu:*JΧ),毃7BW]6Eq-yuq`L>PK!2 npm-root.1.gznu[}1k0wS$JǴԥT(ri}%Lng(jveCi[@N"$ 6Cs!̳qw  2xi@$<[M8 agПEy>"lld^ThwX.Bh.O WQJ(A?+sqwRZD'qv{^Dm~_ uPK!JA   npm-org.1.gznu[TN0}W\U{`I!FM0Dx1v1v6(}9:e($>)7TT?- )꯲ҫΠ`A%]1 eqN”Yg$5YI0=WlZ1 VKdaū֌$9E:\} m`nP|T8J.#mcA/H}RijPk%ޓC!Xm! wq/oj:3ZЪݩnǪ;zp\[qt(wQl`B2nC85ǣ0HV&*jEHb :͊˕OnǍk/g[t;)]c%y J2GH5`6o _=:u^0i}MKQsXۙR%"#~PS7uaPK!v`aa npm-view.1.gznu[Wko6_A>aERAqҡ(D*$;)pvH{9|t6;M'_-%sx]Wiq ʥrǔ.L?vv>O,b߱D g9G.3<@J^uJuf~IsØ(p} ܭYR(:;z1]NϨ˕r<3U%t; /Xsk}KiJ{ǕpRg2MX8^i1Cp]߯T,DS" B8cW:LNw9IM? ce)|<Lh3ƣG9XKG\Ѯy[gb@.d]nv%.gK{sYKIZ܃ŶL&d?7 j[m S^sDPԣx~OͷHjKJ!~9GJ;Y += 뽛Oau rt A4l>_߇- mP./Rt?JqN gCKB+|[_)0E-Mzq/jAhԠ4nm¿KmjOm?MnJ_0:dO7/Xc>+;WBbZ(T&|0KzݻBi_.7dBʶ)kWM?!vw~|xDw|Sl]-ѝw2*`4l-vC\by{BQn1PfJc՟45Ɠp7Kj@ZʎDwOA(7Q4tv=#A:k1c܉A[}2ŀ$P'K TkǽzBڥ9 7t |c¢N][=6,ԃ۾(E]*6y:LNM*l$a{Qdo1e~i%O_/ 6[\iX޹ܾ9>9v&s,t5 3R0 PK!sBjose-jws-sig.1.gznu[Wmo6_At͊0/smdXYbZ:٬%#8ް;RoV2y|Gr 2P@lRf7.'5q(Ӊ22凭(25 `Rwlx`ts#ې &OGpĿ|FZxɂ:ӌ?$G,"[3RK,㭷~h#' 9~B_[YYyU}-?gXT(YD?z0fSǿ\=<:#fȗv|$mUtKcѳl{hi7mb 2ZIp*cZؿ$-B Jm"I #鴉=[->.?ZuVzYJ=R4lr EyH[^1tXvw3lst`ԙ#3}HY+kâN[FyIh={^g߰4iy_b q>7=dR'LihW4%YpgKcx̺FeFD0r<1)_*nV?ԜԄ%fekPrїz~w-[L@އWxX)!ۥahV52Ow6cw>9?/zn/anb-PK!7&jose-jwe-enc.1.gznu[Xms7ίӤI=m'6 и^#Q^*LH&J>tC>j=cw"d[iVlދWƤ秧w NI"['%i~՛_2j<ݫ[| o2m'g?3_!~CāNe8PhnhXe|ǒXD(Q]ݾ>MD- w7l4+U3hf=Ld_kB{Tl:اӘ !x_XNߎ^kxI_Knx y )=v1өd#-Vܬxll-5,l΂@ΡAT%r͵iGNNZ}0@8ZD#(*JlJ KWIYRJ0I*Tp1*l`u/iFȀo(ġqL̼v +k!E+ EJn:TE}"k+Pwɐˆ+~/tNkWzf W73p:RLmj<=' |=8lc.o?ۋ=}B^=$]c_"} D/SA+ewp̆wM~/?KCWjĖ'؇5 8lG8/)zjIs L58g`&_ Ő͹jx}sգۆlwaK &G1;{MD@h ץ{)\-m' :9O u)6:`"sFA`SbߧZ-c8d7IЅOg'd6ȸ>yPK!A:TBBjose-jwk-thp.1.gznu[Umo6_q*4/͂R-5N6-QdtENȸ(0 F>G5CfъH:)9cUyl41Jhf[N/[%yVReEikn4̾ۡ՟\Vx&nw~ŵS>&C42炆VLa2Ђ?I- $'@/ʘߎ\[@؂d?@wZq@bwuϞF5``%a1D?yf<( J^i"ln|r)HJsKz}]gčߟcG*1>GTۇ7mbƘxN^Y{`B2A1Ȇ^gDLS$U,h%1%"m64")2lE^z;c dEL +8|)_8u4HBJ#e :qXd['d,{>%U>>HНj+g(#3OMw l4vtٱ<F8/P0=OMZ0~HaɰAk5>=3-U?:j]>s69'bS.m~r+%sZz `Z C$Xf \KV6tj0?1Μ^Yw<\^Ev~wu3QhHP9ٗU-,]z}8xz7y0t}%܎G:d&eCg0tQ:/EqǦ1"2%, #bYolQF^Q8%2TG޶ڷ̓Not^&`|PPK!2UU jose-fmt.1.gznu[X]o6} >@d[m:IIӴ^hHBRI}RCYS MJ9ܳ!?V䗣79N Onb& gsɩLjE+d1N' ժLth2]&Wsx*WO g_FXG@ʄR: KXmEǂ-dux@v02H%iLH5lf\2)@y"Sm oŒ%Uy3 L\+Fb3c4%9:kqFW{H|[ 8 //f՜VSqTY+pLٍNR.3M n Κ\/llآ-*J}m3p>\łaj"di701(Umdvs{8u@0_C#g 6mY)>Rܑ,v1 8V\ֈo+hċW2Zii2502F#\8l3MH'VzmؼO&vsR[(Q*\ ̠n6I(kcmi[RtHuwr\ ]lgi@X9 ++!ICIa AUWL8#\͗\NPW bL)խ5ǥZ8C՜vD{j]>bvVv@Sq͹\߽5zv 4d["t=]k%i#+%k~ !| ~46i߈4s(s )9Fo1[yEOrp-q^>2~BpkV{|Ō;@}lE$Q-轃>x:vުbW0.׿) 4? -"{O: B,vp49+ I%O&oK:(T(PK!H((jose-jwk-exc.1.gznu[VQo6~ׯ {HNCmi6l0큑(DeXwGɒHlX-\3#8r8ygLv3lVӇ<>Ŀ}R9O_ ^AX4/h1PBn8!C~B]5_,׳u  ߁'z_mѢ儳>'`,#e2]^DbO :-XR$75*݆DH.\YKJc/:Zt1JՊt߀x {)WdH~&bv0U{z MNtk{b:gcgYe ӎkn%LF#ɞa$-xT8aNTt:̢HX}Q dhXPX}9b\IYHH ΋gQv+5T0?-!+?ɃJdS'T\qT^ QwD5 vxhWOfl,it⤴8ݯs|}) 9Kq:#<0=CYq@5 Aj|eXssIw׳|W26VneQ꽢%b ׻~`Vn>jv;ZH^?kvǦ9%ң{y] _{Ps7@R1z¯'~Uyvᐮ4쥥mWJ'cD[\g'Z0ϿAS@_ꛕah09q=߀Z(D PK!Cjose-jwk-use.1.gznu[mo6W~HN7,X%8Ml#r S1eHC{益h6M'!YxPRNco.'58UD[UݓhRI7(~xQ^_cT]GaןS2+dfA4 ST}FsfE<{" z NF#?Z Eg>ч0X&_2KIT4'I)Y8oŖK0܂ʑ$cXnxˀƺ C4.Q Ҫ 9 회)Ep.p7̀TZV(ٔ@F^P]Zq/]ZY.q$|Z?Wp5G tT^PcI? lx lSur-cFO1T8fu?(=Di./emII9(,R ;|>?1!ytU<3tdfݘ_E8/[)|J1rH7; oHW<=O+g; 9a Y/(~ÏWZBB67pvQW}NӍW^3Hry˛C7R?~Uwl;z? S%;8 5 PK![jose-jwk-gen.1.gznu[Vmo6_A~IҮCm6,P-SITIʮ0!bQd@(s;r;dR&f:"KHl<ma@$#EB{1UKF{o"s;ss<.k|كlr:=?P|0%R20SIӍHPI($a4O\%͒,g=/ ۠@u|7u*b#hRfݳD%B2z1}SLC+nc֬ȖXJ*N1Y90Jَ>!IXB{`u U< 0hh(06yY\B-J;`Qe,aai~+Wuz9psH&EƤ.j0!v>a:"I2)]}/#ÞML&?"S`@%L6TYµiB<@V yKPD#ɪMc­p@S8JO  JEfߚ#Oab 6;}R4=>uiaPVvU#'ν.S˹: 86$sX*A[x0P}kmQaӳ5L2E^G农Xr1qj!75d;vITAoa l^U3|ZiaF83|]ź.,rT/74N]o7cDE=k|:ikڈUzn@< (`Rm2t ^}_ō~[pّ/kTSel mvl s4i@wb_;Εw+Y"j<>)=cA!??+gKG&0~ӭM*\f­=[ճa؁~_usS,0>~ysRT" tkE5VW]`O6K:G?:2VT7 UY~ck_:}%'K7&9mp:Oi 7ZDQXx<]Lny 6 '}z Ӏ+À',nnC :ʺ x9uv< 2 PK!jose-jwk-pub.1.gznu[TmO0_q${ӪmZAڨ) ɤNHvʪsҴh~?G ̸>a,,kCxnLtf^$22c{Q(;+wǛ|2>uWߩ\ G>m9Da'OԽ{n^x ԅӔ3!W=_j̀(,kJkQK|3shĻfLLAL.M%V dRq{^>$"/#dapYFH Qm0'`J72Sbm|_g.9nY9B㶅kfjZUI$w*%J%qQ.A㶄֥b4N/}`%V U΃3X ﹌ڸ~`[5E8`(8:{_?<~<--"f6˧$R \ԭ^,P\$7 <%xw~*MUx<&N6:ݻ|3dfDS8N' >Qc8T4&q8IV0(zhbb*<={NPK!>(nghttp.1nu[.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "NGHTTP" "1" "Apr 19, 2026" "1.69.0" "nghttp2" .SH NAME nghttp \- HTTP/2 client .SH SYNOPSIS .sp \fBnghttp\fP [OPTIONS]... ... .SH DESCRIPTION .sp HTTP/2 client .INDENT 0.0 .TP .B Specify URI to access. .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \-v, \-\-verbose Print debug information such as reception and transmission of frames and name/value pairs. Specifying this option multiple times increases verbosity. .UNINDENT .INDENT 0.0 .TP .B \-n, \-\-null\-out Discard downloaded data. .UNINDENT .INDENT 0.0 .TP .B \-O, \-\-remote\-name Save download data in the current directory. The filename is derived from URI. If URI ends with \(aq\fI/\fP\(aq, \(aqindex.html\(aq is used as a filename. Not implemented yet. .UNINDENT .INDENT 0.0 .TP .B \-t, \-\-timeout= Timeout each request after . Set 0 to disable timeout. .UNINDENT .INDENT 0.0 .TP .B \-w, \-\-window\-bits= Sets the stream level initial window size to 2**\-1. .UNINDENT .INDENT 0.0 .TP .B \-W, \-\-connection\-window\-bits= Sets the connection level initial window size to 2**\-1. .UNINDENT .INDENT 0.0 .TP .B \-a, \-\-get\-assets Download assets such as stylesheets, images and script files linked from the downloaded resource. Only links whose origins are the same with the linking resource will be downloaded. nghttp prioritizes resources using HTTP/2 dependency based priority. The priority order, from highest to lowest, is html itself, css, javascript and images. .UNINDENT .INDENT 0.0 .TP .B \-s, \-\-stat Print statistics. .UNINDENT .INDENT 0.0 .TP .B \-H, \-\-header=
Add a header to the requests. Example: \fB\-H\fP\(aq:method: PUT\(aq .UNINDENT .INDENT 0.0 .TP .B \-\-trailer=
Add a trailer header to the requests.
must not include pseudo header field (header field name starting with \(aq:\(aq). To send trailer, one must use \fB\-d\fP option to send request body. Example: \fB\-\-trailer\fP \(aqfoo: bar\(aq. .UNINDENT .INDENT 0.0 .TP .B \-\-cert= Use the specified client certificate file. The file must be in PEM format. .UNINDENT .INDENT 0.0 .TP .B \-\-key= Use the client private key file. The file must be in PEM format. .UNINDENT .INDENT 0.0 .TP .B \-d, \-\-data= Post FILE to server. If \(aq\-\(aq is given, data will be read from stdin. .UNINDENT .INDENT 0.0 .TP .B \-m, \-\-multiply= Request each URI times. By default, same URI is not requested twice. This option disables it too. .UNINDENT .INDENT 0.0 .TP .B \-u, \-\-upgrade Perform HTTP Upgrade for HTTP/2. This option is ignored if the request URI has https scheme. If \fB\-d\fP is used, the HTTP upgrade request is performed with OPTIONS method. .UNINDENT .INDENT 0.0 .TP .B \-\-extpri= Sets RFC 9218 priority of given URI. must be the wire format of priority header field (e.g., \(dqu=3,i\(dq). This option can be used multiple times, and N\-th \fB\-\-extpri\fP option sets priority of N\-th URI in the command line. If the number of this option is less than the number of URI, the last option value is repeated. If there is no \fB\-\-extpri\fP option, urgency is 3, and incremental is false. .UNINDENT .INDENT 0.0 .TP .B \-M, \-\-peer\-max\-concurrent\-streams= Use as SETTINGS_MAX_CONCURRENT_STREAMS value of remote endpoint as if it is received in SETTINGS frame. .sp Default: \fB100\fP .UNINDENT .INDENT 0.0 .TP .B \-c, \-\-header\-table\-size= Specify decoder header table size. If this option is used multiple times, and the minimum value among the given values except for last one is strictly less than the last value, that minimum value is set in SETTINGS frame payload before the last value, to simulate multiple header table size change. .UNINDENT .INDENT 0.0 .TP .B \-\-encoder\-header\-table\-size= Specify encoder header table size. The decoder (server) specifies the maximum dynamic table size it accepts. Then the negotiated dynamic table size is the minimum of this option value and the value which server specified. .UNINDENT .INDENT 0.0 .TP .B \-b, \-\-padding= Add at most bytes to a frame payload as padding. Specify 0 to disable padding. .UNINDENT .INDENT 0.0 .TP .B \-r, \-\-har= Output HTTP transactions in HAR format. If \(aq\-\(aq is given, data is written to stdout. .UNINDENT .INDENT 0.0 .TP .B \-\-color Force colored log output. .UNINDENT .INDENT 0.0 .TP .B \-\-continuation Send large header to test CONTINUATION. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-content\-length Don\(aqt send content\-length header field. .UNINDENT .INDENT 0.0 .TP .B \-\-hexdump Display the incoming traffic in hexadecimal (Canonical hex+ASCII display). If SSL/TLS is used, decrypted data are used. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-push Disable server push. .UNINDENT .INDENT 0.0 .TP .B \-\-max\-concurrent\-streams= The number of concurrent pushed streams this client accepts. .UNINDENT .INDENT 0.0 .TP .B \-\-expect\-continue Perform an Expect/Continue handshake: wait to send DATA (up to a short timeout) until the server sends a 100 Continue interim response. This option is ignored unless combined with the \fB\-d\fP option. .UNINDENT .INDENT 0.0 .TP .B \-y, \-\-no\-verify\-peer Suppress warning on server certificate verification failure. .UNINDENT .INDENT 0.0 .TP .B \-\-ktls Enable ktls. .UNINDENT .INDENT 0.0 .TP .B \-\-version Display version information and exit. .UNINDENT .INDENT 0.0 .TP .B \-h, \-\-help Display this help and exit. .UNINDENT .sp The argument is an integer and an optional unit (e.g., 10K is 10 * 1024). Units are K, M and G (powers of 1024). .sp The argument is an integer and an optional unit (e.g., 1s is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms (hours, minutes, seconds and milliseconds, respectively). If a unit is omitted, a second is used as unit. .SH SEE ALSO .sp \fBnghttpd(1)\fP, \fBnghttpx(1)\fP, \fBh2load(1)\fP .SH Author Tatsuhiro Tsujikawa .SH Copyright 2012, 2015, 2016, Tatsuhiro Tsujikawa .\" End of generated man page. PK!ܒcc nghttpx.1nu[.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "NGHTTPX" "1" "Apr 19, 2026" "1.69.0" "nghttp2" .SH NAME nghttpx \- HTTP/2 proxy .SH SYNOPSIS .sp \fBnghttpx\fP [OPTIONS]... [ ] .SH DESCRIPTION .sp A reverse proxy for HTTP/3, HTTP/2, and HTTP/1. .INDENT 0.0 .TP .B Set path to server\(aqs private key. Required unless \(dqno\-tls\(dq parameter is used in \fB\-\-frontend\fP option. .UNINDENT .INDENT 0.0 .TP .B Set path to server\(aqs certificate. Required unless \(dqno\-tls\(dq parameter is used in \fB\-\-frontend\fP option. .UNINDENT .SH OPTIONS .sp The options are categorized into several groups. .SS Connections .INDENT 0.0 .TP .B \-b, \-\-backend=(,|unix:)[;[[:...]][[;]...] Set backend host and port. The multiple backend addresses are accepted by repeating this option. UNIX domain socket can be specified by prefixing path name with \(dqunix:\(dq (e.g., unix:/var/run/backend.sock). .sp Optionally, if s are given, the backend address is only used if request matches the pattern. The pattern matching is closely designed to ServeMux in net/http package of Go programming language. consists of path, host + path or just host. The path must start with \(dq\fI/\fP\(dq. If it ends with \(dq\fI/\fP\(dq, it matches all request path in its subtree. To deal with the request to the directory without trailing slash, the path which ends with \(dq\fI/\fP\(dq also matches the request path which only lacks trailing \(aq\fI/\fP\(aq (e.g., path \(dq\fI/foo/\fP\(dq matches request path \(dq\fI/foo\fP\(dq). If it does not end with \(dq\fI/\fP\(dq, it performs exact match against the request path. If host is given, it performs a match against the request host. For a request received on the frontend listener with \(dqsni\-fwd\(dq parameter enabled, SNI host is used instead of a request host. If host alone is given, \(dq\fI/\fP\(dq is appended to it, so that it matches all request paths under the host (e.g., specifying \(dqnghttp2.org\(dq equals to \(dqnghttp2.org/\(dq). CONNECT method is treated specially. It does not have path, and we don\(aqt allow empty path. To workaround this, we assume that CONNECT method has \(dq\fI/\fP\(dq as path. .sp Patterns with host take precedence over patterns with just path. Then, longer patterns take precedence over shorter ones. .sp Host can include \(dq*\(dq in the left most position to indicate wildcard match (only suffix match is done). The \(dq*\(dq must match at least one character. For example, host pattern \(dq*.nghttp2.org\(dq matches against \(dqwww.nghttp2.org\(dq and \(dqgit.ngttp2.org\(dq, but does not match against \(dqnghttp2.org\(dq. The exact hosts match takes precedence over the wildcard hosts match. .sp If path part ends with \(dq*\(dq, it is treated as wildcard path. The wildcard path behaves differently from the normal path. For normal path, match is made around the boundary of path component separator,\(dq\fI/\fP\(dq. On the other hand, the wildcard path does not take into account the path component separator. All paths which include the wildcard path without last \(dq*\(dq as prefix, and are strictly longer than wildcard path without last \(dq*\(dq are matched. \(dq*\(dq must match at least one character. For example, the pattern \(dq\fI/foo*\fP\(dq matches \(dq\fI/foo/\fP\(dq and \(dq\fI/foobar\fP\(dq. But it does not match \(dq\fI/foo\fP\(dq, or \(dq\fI/fo\fP\(dq. .sp If is omitted or empty string, \(dq\fI/\fP\(dq is used as pattern, which matches all request paths (catch\-all pattern). The catch\-all backend must be given. .sp When doing a match, nghttpx made some normalization to pattern, request host and path. For host part, they are converted to lower case. For path part, percent\-encoded unreserved characters defined in RFC 3986 are decoded, and any dot\-segments (\(dq..\(dq and \(dq.\(dq) are resolved and removed. .sp For example, \fB\-b\fP\(aq127.0.0.1,8080;nghttp2.org/httpbin/\(aq matches the request host \(dqnghttp2.org\(dq and the request path \(dq\fI/httpbin/get\fP\(dq, but does not match the request host \(dqnghttp2.org\(dq and the request path \(dq\fI/index.html\fP\(dq. .sp The multiple s can be specified, delimiting them by \(dq:\(dq. Specifying \fB\-b\fP\(aq127.0.0.1,8080;nghttp2.org:www.nghttp2.org\(aq has the same effect to specify \fB\-b\fP\(aq127.0.0.1,8080;nghttp2.org\(aq and \fB\-b\fP\(aq127.0.0.1,8080;www.nghttp2.org\(aq. .sp The backend addresses sharing same are grouped together forming load balancing group. .sp Several parameters are accepted after . The parameters are delimited by \(dq;\(dq. The available parameters are: \(dqproto=\(dq, \(dqtls\(dq, \(dqsni=\(dq, \(dqfall=\(dq, \(dqrise=\(dq, \(dqaffinity=\(dq, \(dqdns\(dq, \(dqredirect\-if\-not\-tls\(dq, \(dqupgrade\-scheme\(dq, \(dqmruby=\(dq, \(dqread\-timeout=\(dq, \(dqwrite\-timeout=\(dq, \(dqgroup=\(dq, \(dqgroup\-weight=\(dq, \(dqweight=\(dq, and \(dqdnf\(dq. The parameter consists of keyword, and optionally followed by \(dq=\(dq and value. For example, the parameter \(dqproto=h2\(dq consists of the keyword \(dqproto\(dq and value \(dqh2\(dq. The parameter \(dqtls\(dq consists of the keyword \(dqtls\(dq without value. Each parameter is described as follows. .sp The backend application protocol can be specified using optional \(dqproto\(dq parameter, and in the form of \(dqproto=\(dq. should be one of the following list without quotes: \(dqh2\(dq, \(dqhttp/1.1\(dq. The default value of is \(dqhttp/1.1\(dq. Note that usually \(dqh2\(dq refers to HTTP/2 over TLS. But in this option, it may mean HTTP/2 over cleartext TCP unless \(dqtls\(dq keyword is used (see below). .sp TLS can be enabled by specifying optional \(dqtls\(dq parameter. TLS is not enabled by default. .sp With \(dqsni=\(dq parameter, it can override the TLS SNI field value with given . This will default to the backend name .sp The feature to detect whether backend is online or offline can be enabled using optional \(dqfall\(dq and \(dqrise\(dq parameters. Using \(dqfall=\(dq parameter, if nghttpx cannot connect to a this backend times in a row, this backend is assumed to be offline, and it is excluded from load balancing. If is 0, this backend never be excluded from load balancing whatever times nghttpx cannot connect to it, and this is the default. There is also \(dqrise=\(dq parameter. After backend was excluded from load balancing group, nghttpx periodically attempts to make a connection to the failed backend, and if the connection is made successfully times in a row, the backend is assumed to be online, and it is now eligible for load balancing target. If is 0, a backend is permanently offline, once it goes in that state, and this is the default behaviour. .sp The session affinity is enabled using \(dqaffinity=\(dq parameter. If \(dqip\(dq is given in , client IP based session affinity is enabled. If \(dqcookie\(dq is given in , cookie based session affinity is enabled. If \(dqnone\(dq is given in , session affinity is disabled, and this is the default. The session affinity is enabled per . If at least one backend has \(dqaffinity\(dq parameter, and its is not \(dqnone\(dq, session affinity is enabled for all backend servers sharing the same . It is advised to set \(dqaffinity\(dq parameter to all backend explicitly if session affinity is desired. The session affinity may break if one of the backend gets unreachable, or backend settings are reloaded or replaced by API. .sp If \(dqaffinity=cookie\(dq is used, the additional configuration is required. \(dqaffinity\-cookie\-name=\(dq must be used to specify a name of cookie to use. Optionally, \(dqaffinity\-cookie\-path=\(dq can be used to specify a path which cookie is applied. The optional \(dqaffinity\-cookie\-secure=\(dq controls the Secure attribute of a cookie. The default value is \(dqauto\(dq, and the Secure attribute is determined by a request scheme. If a request scheme is \(dqhttps\(dq, then Secure attribute is set. Otherwise, it is not set. If is \(dqyes\(dq, the Secure attribute is always set. If is \(dqno\(dq, the Secure attribute is always omitted. \(dqaffinity\-cookie\-stickiness=\(dq controls stickiness of this affinity. If is \(dqloose\(dq, removing or adding a backend server might break the affinity and the request might be forwarded to a different backend server. If is \(dqstrict\(dq, removing the designated backend server breaks affinity, but adding new backend server does not cause breakage. If the designated backend server becomes unavailable, new backend server is chosen as if the request does not have an affinity cookie. defaults to \(dqloose\(dq. .sp By default, name resolution of backend host name is done at start up, or reloading configuration. If \(dqdns\(dq parameter is given, name resolution takes place dynamically. This is useful if backend address changes frequently. If \(dqdns\(dq is given, name resolution of backend host name at start up, or reloading configuration is skipped. .sp If \(dqredirect\-if\-not\-tls\(dq parameter is used, the matched backend requires that frontend connection is TLS encrypted. If it isn\(aqt, nghttpx responds to the request with 308 status code, and https URI the client should use instead is included in Location header field. The port number in redirect URI is 443 by default, and can be changed using \fB\-\-redirect\-https\-port\fP option. If at least one backend has \(dqredirect\-if\-not\-tls\(dq parameter, this feature is enabled for all backend servers sharing the same . It is advised to set \(dqredirect\-if\-no\-tls\(dq parameter to all backends explicitly if this feature is desired. .sp If \(dqupgrade\-scheme\(dq parameter is used along with \(dqtls\(dq parameter, HTTP/2 :scheme pseudo header field is changed to \(dqhttps\(dq from \(dqhttp\(dq when forwarding a request to this particular backend. This is a workaround for a backend server which requires \(dqhttps\(dq :scheme pseudo header field on TLS encrypted connection. .sp \(dqmruby=\(dq parameter specifies a path to mruby script file which is invoked when this pattern is matched. All backends which share the same pattern must have the same mruby path. .sp \(dqread\-timeout=\(dq and \(dqwrite\-timeout=\(dq parameters specify the read and write timeout of the backend connection when this pattern is matched. All backends which share the same pattern must have the same timeouts. If these timeouts are entirely omitted for a pattern, \fB\-\-backend\-read\-timeout\fP and \fB\-\-backend\-write\-timeout\fP are used. .sp \(dqgroup=\(dq parameter specifies the name of group this backend address belongs to. By default, it belongs to the unnamed default group. The name of group is unique per pattern. \(dqgroup\-weight=\(dq parameter specifies the weight of the group. The higher weight gets more frequently selected by the load balancing algorithm. must be [1, 256] inclusive. The weight 8 has 4 times more weight than 2. must be the same for all addresses which share the same . If \(dqgroup\-weight\(dq is omitted in an address, but the other address which belongs to the same group specifies \(dqgroup\-weight\(dq, its weight is used. If no \(dqgroup\-weight\(dq is specified for all addresses, the weight of a group becomes 1. \(dqgroup\(dq and \(dqgroup\-weight\(dq are ignored if session affinity is enabled. .sp \(dqweight=\(dq parameter specifies the weight of the backend address inside a group which this address belongs to. The higher weight gets more frequently selected by the load balancing algorithm. must be [1, 256] inclusive. The weight 8 has 4 times more weight than weight 2. If this parameter is omitted, weight becomes 1. \(dqweight\(dq is ignored if session affinity is enabled. .sp If \(dqdnf\(dq parameter is specified, an incoming request is not forwarded to a backend and just consumed along with the request body (actually a backend server never be contacted). It is expected that the HTTP response is generated by mruby script (see \(dqmruby=\(dq parameter above). \(dqdnf\(dq is an abbreviation of \(dqdo not forward\(dq. .sp Since \(dq;\(dq and \(dq:\(dq are used as delimiter, must not contain these characters. In order to include \(dq:\(dq in , one has to specify \(dq%3A\(dq (which is percent\-encoded from of \(dq:\(dq) instead. Since \(dq;\(dq has special meaning in shell, the option value must be quoted. .sp Default: \fB127.0.0.1,80\fP .UNINDENT .INDENT 0.0 .TP .B \-f, \-\-frontend=(,|unix:)[[;]...] Set frontend host and port. If is \(aq*\(aq, it assumes all addresses including both IPv4 and IPv6. UNIX domain socket can be specified by prefixing path name with \(dqunix:\(dq (e.g., unix:/var/run/nghttpx.sock). This option can be used multiple times to listen to multiple addresses. .sp This option can take 0 or more parameters, which are described below. Note that \(dqapi\(dq and \(dqhealthmon\(dq parameters are mutually exclusive. .sp Optionally, TLS can be disabled by specifying \(dqno\-tls\(dq parameter. TLS is enabled by default. .sp If \(dqsni\-fwd\(dq parameter is used, when performing a match to select a backend server, SNI host name received from the client is used instead of the request host. See \fB\-\-backend\fP option about the pattern match. .sp To make this frontend as API endpoint, specify \(dqapi\(dq parameter. This is disabled by default. It is important to limit the access to the API frontend. Otherwise, someone may change the backend server, and break your services, or expose confidential information to the outside the world. .sp To make this frontend as health monitor endpoint, specify \(dqhealthmon\(dq parameter. This is disabled by default. Any requests which come through this address are replied with 200 HTTP status, without no body. .sp To accept PROXY protocol version 1 and 2 on frontend connection, specify \(dqproxyproto\(dq parameter. This is disabled by default. .sp To receive HTTP/3 (QUIC) traffic, specify \(dqquic\(dq parameter. It makes nghttpx listen on UDP port rather than TCP port. UNIX domain socket, \(dqapi\(dq, and \(dqhealthmon\(dq parameters cannot be used with \(dqquic\(dq parameter. .sp Default: \fB*,3000\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backlog= Set listen backlog size. .sp Default: \fB65536\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-address\-family=(auto|IPv4|IPv6) Specify address family of backend connections. If \(dqauto\(dq is given, both IPv4 and IPv6 are considered. If \(dqIPv4\(dq is given, only IPv4 address is considered. If \(dqIPv6\(dq is given, only IPv6 address is considered. .sp Default: \fBauto\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http\-proxy\-uri= Specify proxy URI in the form \%/[:@]:. If a proxy requires authentication, specify and . Note that they must be properly percent\-encoded. This proxy is used when the backend connection is HTTP/2. First, make a CONNECT request to the proxy and it connects to the backend on behalf of nghttpx. This forms tunnel. After that, nghttpx performs SSL/TLS handshake with the downstream through the tunnel. The timeouts when connecting and making CONNECT request can be specified by \fB\-\-backend\-read\-timeout\fP and \fB\-\-backend\-write\-timeout\fP options. .UNINDENT .SS Performance .INDENT 0.0 .TP .B \-n, \-\-workers= Set the number of worker threads. .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-\-single\-thread Run everything in one thread inside the worker process. This feature is provided for better debugging experience, or for the platforms which lack thread support. If threading is disabled, this option is always enabled. .UNINDENT .INDENT 0.0 .TP .B \-\-read\-rate= Set maximum average read rate on frontend connection. Setting 0 to this option means read rate is unlimited. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-read\-burst= Set maximum read burst size on frontend connection. Setting 0 to this option means read burst size is unlimited. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-write\-rate= Set maximum average write rate on frontend connection. Setting 0 to this option means write rate is unlimited. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-write\-burst= Set maximum write burst size on frontend connection. Setting 0 to this option means write burst size is unlimited. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-read\-rate= Set maximum average read rate on frontend connection per worker. Setting 0 to this option means read rate is unlimited. Not implemented yet. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-read\-burst= Set maximum read burst size on frontend connection per worker. Setting 0 to this option means read burst size is unlimited. Not implemented yet. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-write\-rate= Set maximum average write rate on frontend connection per worker. Setting 0 to this option means write rate is unlimited. Not implemented yet. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-write\-burst= Set maximum write burst size on frontend connection per worker. Setting 0 to this option means write burst size is unlimited. Not implemented yet. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-frontend\-connections= Set maximum number of simultaneous connections frontend accepts. Setting 0 means unlimited. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-connections\-per\-host= Set maximum number of backend concurrent connections (and/or streams in case of HTTP/2) per origin host. This option is meaningful when \fB\-\-http2\-proxy\fP option is used. The origin host is determined by authority portion of request URI (or :authority header field for HTTP/2). To limit the number of connections per frontend for default mode, use \fB\-\-backend\-connections\-per\-frontend\fP\&. .sp Default: \fB8\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-connections\-per\-frontend= Set maximum number of backend concurrent connections (and/or streams in case of HTTP/2) per frontend. This option is only used for default mode. 0 means unlimited. To limit the number of connections per host with \fB\-\-http2\-proxy\fP option, use \fB\-\-backend\-connections\-per\-host\fP\&. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-rlimit\-nofile= Set maximum number of open files (RLIMIT_NOFILE) to . If 0 is given, nghttpx does not set the limit. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-rlimit\-memlock= Set maximum number of bytes of memory that may be locked into RAM. If 0 is given, nghttpx does not set the limit. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-request\-buffer= Set buffer size used to store backend request. .sp Default: \fB16K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-response\-buffer= Set buffer size used to store backend response. .sp Default: \fB128K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-fastopen= Enables \(dqTCP Fast Open\(dq for the listening socket and limits the maximum length for the queue of connections that have not yet completed the three\-way handshake. If value is 0 then fast open is disabled. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-kqueue Don\(aqt use kqueue. This option is only applicable for the platforms which have kqueue. For other platforms, this option will be simply ignored. .UNINDENT .SS Timeout .INDENT 0.0 .TP .B \-\-frontend\-http2\-idle\-timeout= Specify idle timeout for HTTP/2 frontend connection. If no active streams exist for this duration, connection is closed. .sp Default: \fB3m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-idle\-timeout= Specify idle timeout for HTTP/3 frontend connection. If no active streams exist for this duration, connection is closed. .sp Default: \fB3m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-write\-timeout= Specify write timeout for all frontend connections. .sp Default: \fB30s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-keep\-alive\-timeout= Specify keep\-alive timeout for frontend HTTP/1 connection. .sp Default: \fB1m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-header\-timeout= Specify duration that the server waits for an HTTP request header fields to be received completely. On timeout, HTTP/1 and HTTP/2 connections are closed. For HTTP/3, the stream is shutdown, and the connection itself is left intact. .sp Default: \fB1m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-stream\-read\-timeout= Specify read timeout for HTTP/2 streams. 0 means no timeout. .sp Default: \fB0\fP .UNINDENT .INDENT 0.0 .TP .B \-\-stream\-write\-timeout= Specify write timeout for HTTP/2 streams. 0 means no timeout. .sp Default: \fB1m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-read\-timeout= Specify read timeout for backend connection. .sp Default: \fB1m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-write\-timeout= Specify write timeout for backend connection. .sp Default: \fB30s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-connect\-timeout= Specify timeout before establishing TCP connection to backend. .sp Default: \fB30s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-keep\-alive\-timeout= Specify keep\-alive timeout for backend HTTP/1 connection. .sp Default: \fB2s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-listener\-disable\-timeout= After accepting connection failed, connection listener is disabled for a given amount of time. Specifying 0 disables this feature. .sp Default: \fB30s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-setting\-timeout= Specify timeout before SETTINGS ACK is received from client. .sp Default: \fB10s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-settings\-timeout= Specify timeout before SETTINGS ACK is received from backend server. .sp Default: \fB10s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-max\-backoff= Specify maximum backoff interval. This is used when doing health check against offline backend (see \(dqfail\(dq parameter in \fB\-\-backend\fP option). It is also used to limit the maximum interval to temporarily disable backend when nghttpx failed to connect to it. These intervals are calculated using exponential backoff, and consecutive failed attempts increase the interval. This option caps its maximum value. .sp Default: \fB2m\fP .UNINDENT .SS SSL/TLS .INDENT 0.0 .TP .B \-\-ciphers= Set allowed cipher list for frontend connection. The format of the string is described in OpenSSL ciphers(1). This option sets cipher suites for TLSv1.2. Use \fB\-\-tls13\-ciphers\fP for TLSv1.3. .sp Default: \fBECDHE\-ECDSA\-AES128\-GCM\-SHA256:ECDHE\-RSA\-AES128\-GCM\-SHA256:ECDHE\-ECDSA\-AES256\-GCM\-SHA384:ECDHE\-RSA\-AES256\-GCM\-SHA384:ECDHE\-ECDSA\-CHACHA20\-POLY1305:ECDHE\-RSA\-CHACHA20\-POLY1305:DHE\-RSA\-AES128\-GCM\-SHA256:DHE\-RSA\-AES256\-GCM\-SHA384\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls13\-ciphers= Set allowed cipher list for frontend connection. The format of the string is described in OpenSSL ciphers(1). This option sets cipher suites for TLSv1.3. Use \fB\-\-ciphers\fP for TLSv1.2. .sp Default: \fBTLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256\fP .UNINDENT .INDENT 0.0 .TP .B \-\-client\-ciphers= Set allowed cipher list for backend connection. The format of the string is described in OpenSSL ciphers(1). This option sets cipher suites for TLSv1.2. Use \fB\-\-tls13\-client\-ciphers\fP for TLSv1.3. .sp Default: \fBECDHE\-ECDSA\-AES128\-GCM\-SHA256:ECDHE\-RSA\-AES128\-GCM\-SHA256:ECDHE\-ECDSA\-AES256\-GCM\-SHA384:ECDHE\-RSA\-AES256\-GCM\-SHA384:ECDHE\-ECDSA\-CHACHA20\-POLY1305:ECDHE\-RSA\-CHACHA20\-POLY1305:DHE\-RSA\-AES128\-GCM\-SHA256:DHE\-RSA\-AES256\-GCM\-SHA384\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls13\-client\-ciphers= Set allowed cipher list for backend connection. The format of the string is described in OpenSSL ciphers(1). This option sets cipher suites for TLSv1.3. Use \fB\-\-client\-ciphers\fP for TLSv1.2. .sp Default: \fBTLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256\fP .UNINDENT .INDENT 0.0 .TP .B \-\-groups= Set the supported group list for frontend connections. is a colon separated list of group NID or names in the preference order. The supported curves depend on the linked OpenSSL library. This function requires OpenSSL >= 1.0.2. .sp Default: \fBX25519:P\-256:P\-384:P\-521\fP .UNINDENT .INDENT 0.0 .TP .B \-k, \-\-insecure Don\(aqt verify backend server\(aqs certificate if TLS is enabled for backend connections. .UNINDENT .INDENT 0.0 .TP .B \-\-cacert= Set path to trusted CA certificate file. It is used in backend TLS connections to verify peer\(aqs certificate. The file must be in PEM format. It can contain multiple certificates. If the linked OpenSSL is configured to load system wide certificates, they are loaded at startup regardless of this option. .UNINDENT .INDENT 0.0 .TP .B \-\-private\-key\-passwd\-file= Path to file that contains password for the server\(aqs private key. If none is given and the private key is password protected it\(aqll be requested interactively. .UNINDENT .INDENT 0.0 .TP .B \-\-subcert=:[[;]...] Specify additional certificate and private key file. nghttpx will choose certificates based on the hostname indicated by client using TLS SNI extension. If nghttpx is built with OpenSSL >= 1.0.2, the signature algorithms (e.g., ECDSA+SHA256) presented by client are also taken into consideration. This allows nghttpx to send ML\-DSA or ECDSA certificate to modern clients, while sending RSA based certificate to older clients. This option can be used multiple times. .sp Additional parameter can be specified in . The available is \(dqsct\-dir=\(dq. .sp \(dqsct\-dir=\(dq specifies the path to directory which contains *.sct files for TLS signed_certificate_timestamp extension (RFC 6962). This feature requires OpenSSL >= 1.0.2. See also \fB\-\-tls\-sct\-dir\fP option. .UNINDENT .INDENT 0.0 .TP .B \-\-dh\-param\-file= Path to file that contains DH parameters in PEM format. Without this option, DHE cipher suites are not available. .UNINDENT .INDENT 0.0 .TP .B \-\-alpn\-list= Comma delimited list of ALPN protocol identifier sorted in the order of preference. That means most desirable protocol comes first. The parameter must be delimited by a single comma only and any white spaces are treated as a part of protocol string. .sp Default: \fBh2,http/1.1\fP .UNINDENT .INDENT 0.0 .TP .B \-\-verify\-client Require and verify client certificate. .UNINDENT .INDENT 0.0 .TP .B \-\-verify\-client\-cacert= Path to file that contains CA certificates to verify client certificate. The file must be in PEM format. It can contain multiple certificates. .UNINDENT .INDENT 0.0 .TP .B \-\-verify\-client\-tolerate\-expired Accept expired client certificate. Operator should handle the expired client certificate by some means (e.g., mruby script). Otherwise, this option might cause a security risk. .UNINDENT .INDENT 0.0 .TP .B \-\-client\-private\-key\-file= Path to file that contains client private key used in backend client authentication. .UNINDENT .INDENT 0.0 .TP .B \-\-client\-cert\-file= Path to file that contains client certificate used in backend client authentication. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-min\-proto\-version= Specify minimum SSL/TLS protocol. The name matching is done in case\-insensitive manner. The versions between \fB\-\-tls\-min\-proto\-version\fP and \fB\-\-tls\-max\-proto\-version\fP are enabled. If the protocol list advertised by client does not overlap this range, you will receive the error message \(dqunknown protocol\(dq. The available versions are: TLSv1.3 and TLSv1.2 .sp Default: \fBTLSv1.2\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-max\-proto\-version= Specify maximum SSL/TLS protocol. The name matching is done in case\-insensitive manner. The versions between \fB\-\-tls\-min\-proto\-version\fP and \fB\-\-tls\-max\-proto\-version\fP are enabled. If the protocol list advertised by client does not overlap this range, you will receive the error message \(dqunknown protocol\(dq. The available versions are: TLSv1.3 and TLSv1.2 .sp Default: \fBTLSv1.3\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-file= Path to file that contains random data to construct TLS session ticket parameters. If aes\-128\-cbc is given in \fB\-\-tls\-ticket\-key\-cipher\fP, the file must contain exactly 48 bytes. If aes\-256\-cbc is given in \fB\-\-tls\-ticket\-key\-cipher\fP, the file must contain exactly 80 bytes. This options can be used repeatedly to specify multiple ticket parameters. If several files are given, only the first key is used to encrypt TLS session tickets. Other keys are accepted but server will issue new session ticket with first key. This allows session key rotation. Please note that key rotation does not occur automatically. User should rearrange files or change options values and restart nghttpx gracefully. If opening or reading given file fails, all loaded keys are discarded and it is treated as if none of this option is given. If this option is not given or an error occurred while opening or reading a file, key is generated every 1 hour internally and they are valid for 12 hours. This is recommended if ticket key sharing between nghttpx instances is not required. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached=,[;tls] Specify address of memcached server to get TLS ticket keys for session resumption. This enables shared TLS ticket key between multiple nghttpx instances. nghttpx does not set TLS ticket key to memcached. The external ticket key generator is required. nghttpx just gets TLS ticket keys from memcached, and use them, possibly replacing current set of keys. It is up to extern TLS ticket key generator to rotate keys frequently. See \(dqTLS SESSION TICKET RESUMPTION\(dq section in manual page to know the data format in memcached entry. Optionally, memcached connection can be encrypted with TLS by specifying \(dqtls\(dq parameter. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-address\-family=(auto|IPv4|IPv6) Specify address family of memcached connections to get TLS ticket keys. If \(dqauto\(dq is given, both IPv4 and IPv6 are considered. If \(dqIPv4\(dq is given, only IPv4 address is considered. If \(dqIPv6\(dq is given, only IPv6 address is considered. .sp Default: \fBauto\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-interval= Set interval to get TLS ticket keys from memcached. .sp Default: \fB10m\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-max\-retry= Set maximum number of consecutive retries before abandoning TLS ticket key retrieval. If this number is reached, the attempt is considered as failure, and \(dqfailure\(dq count is incremented by 1, which contributed to the value controlled \fB\-\-tls\-ticket\-key\-memcached\-max\-fail\fP option. .sp Default: \fB3\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-max\-fail= Set maximum number of consecutive failure before disabling TLS ticket until next scheduled key retrieval. .sp Default: \fB2\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-cipher= Specify cipher to encrypt TLS session ticket. Specify either aes\-128\-cbc or aes\-256\-cbc. By default, aes\-128\-cbc is used. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-cert\-file= Path to client certificate for memcached connections to get TLS ticket keys. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ticket\-key\-memcached\-private\-key\-file= Path to client private key for memcached connections to get TLS ticket keys. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-dyn\-rec\-warmup\-threshold= Specify the threshold size for TLS dynamic record size behaviour. During a TLS session, after the threshold number of bytes have been written, the TLS record size will be increased to the maximum allowed (16K). The max record size will continue to be used on the active TLS session. After \fB\-\-tls\-dyn\-rec\-idle\-timeout\fP has elapsed, the record size is reduced to 1300 bytes. Specify 0 to always use the maximum record size, regardless of idle period. This behaviour applies to all TLS based frontends, and TLS HTTP/2 backends. .sp Default: \fB1M\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-dyn\-rec\-idle\-timeout= Specify TLS dynamic record size behaviour timeout. See \fB\-\-tls\-dyn\-rec\-warmup\-threshold\fP for more information. This behaviour applies to all TLS based frontends, and TLS HTTP/2 backends. .sp Default: \fB1s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-http2\-cipher\-block\-list Allow block listed cipher suite on frontend HTTP/2 connection. See \% for the complete HTTP/2 cipher suites block list. .UNINDENT .INDENT 0.0 .TP .B \-\-client\-no\-http2\-cipher\-block\-list Allow block listed cipher suite on backend HTTP/2 connection. See \% for the complete HTTP/2 cipher suites block list. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-sct\-dir= Specifies the directory where *.sct files exist. All *.sct files in are read, and sent as extension_data of TLS signed_certificate_timestamp (RFC 6962) to client. These *.sct files are for the certificate specified in positional command\-line argument , or certificate option in configuration file. For additional certificates, use \fB\-\-subcert\fP option. This option requires OpenSSL >= 1.0.2. .UNINDENT .INDENT 0.0 .TP .B \-\-psk\-secrets= Read list of PSK identity and secrets from . This is used for frontend connection. The each line of input file is formatted as :, where is PSK identity, and is secret in hex. An empty line, and line which starts with \(aq#\(aq are skipped. The default enabled cipher list might not contain any PSK cipher suite. In that case, desired PSK cipher suites must be enabled using \fB\-\-ciphers\fP option. The desired PSK cipher suite may be block listed by HTTP/2. To use those cipher suites with HTTP/2, consider to use \fB\-\-no\-http2\-cipher\-block\-list\fP option. But be aware its implications. .UNINDENT .INDENT 0.0 .TP .B \-\-client\-psk\-secrets= Read PSK identity and secrets from . This is used for backend connection. The each line of input file is formatted as :, where is PSK identity, and is secret in hex. An empty line, and line which starts with \(aq#\(aq are skipped. The first identity and secret pair encountered is used. The default enabled cipher list might not contain any PSK cipher suite. In that case, desired PSK cipher suites must be enabled using \fB\-\-client\-ciphers\fP option. The desired PSK cipher suite may be block listed by HTTP/2. To use those cipher suites with HTTP/2, consider to use \fB\-\-client\-no\-http2\-cipher\-block\-list\fP option. But be aware its implications. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-no\-postpone\-early\-data By default, except for QUIC connections, nghttpx postpones forwarding HTTP requests sent in early data, including those sent in partially in it, until TLS handshake finishes. If all backend server recognizes \(dqEarly\-Data\(dq header field, using this option makes nghttpx not postpone forwarding request and get full potential of 0\-RTT data. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-max\-early\-data= Sets the maximum amount of 0\-RTT data that server accepts. .sp Default: \fB16K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-ktls Enable ktls. .UNINDENT .INDENT 0.0 .TP .B \-\-ech\-config\-file= Read Encrypted Client Hello (ECH) server configuration from . See \fB\-\-ech\-retry\-config\-file\fP for details. .UNINDENT .INDENT 0.0 .TP .B \-\-ech\-retry\-config\-file= This option and \fB\-\-ech\-config\-file\fP option read Encrypted Client Hello (ECH) server configuration from . If \fB\-\-ech\-retry\-config\-file\fP is used, the configurations are included in the retry configurations. The file format must be PEM ECH file described in RFC 9934. These options can be used repeatedly to read multiple files. \fB\-\-ech\-retry\-config\-file\fP must be used at least once when enabling ECH. .UNINDENT .SS HTTP/2 .INDENT 0.0 .TP .B \-c, \-\-frontend\-http2\-max\-concurrent\-streams= Set the maximum number of the concurrent streams in one frontend HTTP/2 session. .sp Default: \fB100\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-max\-concurrent\-streams= Set the maximum number of the concurrent streams in one backend HTTP/2 session. This sets maximum number of concurrent opened pushed streams. The maximum number of concurrent requests are set by a remote server. .sp Default: \fB100\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-window\-size= Sets the per\-stream initial window size of HTTP/2 frontend connection. .sp Default: \fB65535\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-connection\-window\-size= Sets the per\-connection window size of HTTP/2 frontend connection. .sp Default: \fB65535\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-window\-size= Sets the initial window size of HTTP/2 backend connection. .sp Default: \fB65535\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-connection\-window\-size= Sets the per\-connection window size of HTTP/2 backend connection. .sp Default: \fB2147483647\fP .UNINDENT .INDENT 0.0 .TP .B \-\-http2\-no\-cookie\-crumbling Don\(aqt crumble cookie header field. .UNINDENT .INDENT 0.0 .TP .B \-\-padding= Add at most bytes to a HTTP/2 frame payload as padding. Specify 0 to disable padding. This option is meant for debugging purpose and not intended to enhance protocol security. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-server\-push Disable HTTP/2 server push. Server push is supported by default mode and HTTP/2 frontend via Link header field. It is also supported if both frontend and backend are HTTP/2 in default mode. In this case, server push from backend session is relayed to frontend, and server push via Link header field is also supported. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-optimize\-write\-buffer\-size (Experimental) Enable write buffer size optimization in frontend HTTP/2 TLS connection. This optimization aims to reduce write buffer size so that it only contains bytes which can send immediately. This makes server more responsive to prioritized HTTP/2 stream because the buffering of lower priority stream is reduced. This option is only effective on recent Linux platform. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-optimize\-window\-size (Experimental) Automatically tune connection level window size of frontend HTTP/2 TLS connection. If this feature is enabled, connection window size starts with the default window size, 65535 bytes. nghttpx automatically adjusts connection window size based on TCP receiving window size. The maximum window size is capped by the value specified by \fB\-\-frontend\-http2\-connection\-window\-size\fP\&. Since the stream is subject to stream level window size, it should be adjusted using \fB\-\-frontend\-http2\-window\-size\fP option as well. This option is only effective on recent Linux platform. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-encoder\-dynamic\-table\-size= Specify the maximum dynamic table size of HPACK encoder in the frontend HTTP/2 connection. The decoder (client) specifies the maximum dynamic table size it accepts. Then the negotiated dynamic table size is the minimum of this option value and the value which client specified. .sp Default: \fB4K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-decoder\-dynamic\-table\-size= Specify the maximum dynamic table size of HPACK decoder in the frontend HTTP/2 connection. .sp Default: \fB4K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-encoder\-dynamic\-table\-size= Specify the maximum dynamic table size of HPACK encoder in the backend HTTP/2 connection. The decoder (backend) specifies the maximum dynamic table size it accepts. Then the negotiated dynamic table size is the minimum of this option value and the value which backend specified. .sp Default: \fB4K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-backend\-http2\-decoder\-dynamic\-table\-size= Specify the maximum dynamic table size of HPACK decoder in the backend HTTP/2 connection. .sp Default: \fB4K\fP .UNINDENT .SS Mode .INDENT 0.0 .TP .B (default mode) Accept HTTP/2, and HTTP/1.1 over SSL/TLS. \(dqno\-tls\(dq parameter is used in \fB\-\-frontend\fP option, accept HTTP/2 and HTTP/1.1 over cleartext TCP. The incoming HTTP/1.1 connection can be upgraded to HTTP/2 through HTTP Upgrade. .UNINDENT .INDENT 0.0 .TP .B \-s, \-\-http2\-proxy Like default mode, but enable forward proxy. This is so called HTTP/2 proxy mode. .UNINDENT .SS Logging .INDENT 0.0 .TP .B \-L, \-\-log\-level= Set the severity level of log output. must be one of INFO, NOTICE, WARN, ERROR and FATAL. .sp Default: \fBNOTICE\fP .UNINDENT .INDENT 0.0 .TP .B \-\-accesslog\-file= Set path to write access log. To reopen file, send USR1 signal to nghttpx. .UNINDENT .INDENT 0.0 .TP .B \-\-accesslog\-syslog Send access log to syslog. If this option is used, \fB\-\-accesslog\-file\fP option is ignored. .UNINDENT .INDENT 0.0 .TP .B \-\-accesslog\-format= Specify format string for access log. The default format is combined format. The following variables are available: .INDENT 7.0 .IP \(bu 2 $remote_addr: client IP address. .IP \(bu 2 $time_local: local time in Common Log format. .IP \(bu 2 $time_iso8601: local time in ISO 8601 format. .IP \(bu 2 $request: HTTP request line. .IP \(bu 2 $status: HTTP response status code. .IP \(bu 2 $body_bytes_sent: the number of bytes sent to client as response body. .IP \(bu 2 $http_: value of HTTP request header where \(aq_\(aq in is replaced with \(aq\-\(aq. .IP \(bu 2 $remote_port: client port. .IP \(bu 2 $server_port: server port. .IP \(bu 2 $request_time: request processing time in seconds with milliseconds resolution. .IP \(bu 2 $pid: PID of the running process. .IP \(bu 2 $alpn: ALPN identifier of the protocol which generates the response. For HTTP/1, ALPN is always http/1.1, regardless of minor version. .IP \(bu 2 $tls_cipher: cipher used for SSL/TLS connection. .IP \(bu 2 $tls_client_fingerprint_sha256: SHA\-256 fingerprint of client certificate. .IP \(bu 2 $tls_client_fingerprint_sha1: SHA\-1 fingerprint of client certificate. .IP \(bu 2 $tls_client_subject_name: subject name in client certificate. .IP \(bu 2 $tls_client_issuer_name: issuer name in client certificate. .IP \(bu 2 $tls_client_serial: serial number in client certificate. .IP \(bu 2 $tls_protocol: protocol for SSL/TLS connection. .IP \(bu 2 $tls_session_id: session ID for SSL/TLS connection. .IP \(bu 2 $tls_session_reused: \(dqr\(dq if SSL/TLS session was reused. Otherwise, \(dq.\(dq .IP \(bu 2 $tls_sni: SNI server name for SSL/TLS connection. .IP \(bu 2 $tls_ech_accepted: \(dqe\(dq if ECH was accepted in SSL/TLS session. Otherwise, \(dq.\(dq .IP \(bu 2 $backend_host: backend host used to fulfill the request. \(dq\-\(dq if backend host is not available. .IP \(bu 2 $backend_port: backend port used to fulfill the request. \(dq\-\(dq if backend host is not available. .IP \(bu 2 $method: HTTP method .IP \(bu 2 $path: Request path including query. For CONNECT request, authority is recorded. .IP \(bu 2 $path_without_query: $path up to the first \(aq?\(aq character. For CONNECT request, authority is recorded. .IP \(bu 2 $protocol_version: HTTP version (e.g., HTTP/1.1, HTTP/2) .UNINDENT .sp The variable can be enclosed by \(dq{\(dq and \(dq}\(dq for disambiguation (e.g., ${remote_addr}). .sp Default: \fB$remote_addr \- \- [$time_local] \(dq$request\(dq $status $body_bytes_sent \(dq$http_referer\(dq \(dq$http_user_agent\(dq\fP .UNINDENT .INDENT 0.0 .TP .B \-\-accesslog\-write\-early Write access log when response header fields are received from backend rather than when request transaction finishes. .UNINDENT .INDENT 0.0 .TP .B \-\-errorlog\-file= Set path to write error log. To reopen file, send USR1 signal to nghttpx. stderr will be redirected to the error log file unless \fB\-\-errorlog\-syslog\fP is used. .sp Default: \fB/dev/stderr\fP .UNINDENT .INDENT 0.0 .TP .B \-\-errorlog\-syslog Send error log to syslog. If this option is used, \fB\-\-errorlog\-file\fP option is ignored. .UNINDENT .INDENT 0.0 .TP .B \-\-syslog\-facility= Set syslog facility to . .sp Default: \fBdaemon\fP .UNINDENT .SS HTTP .INDENT 0.0 .TP .B \-\-add\-x\-forwarded\-for Append X\-Forwarded\-For header field to the downstream request. .UNINDENT .INDENT 0.0 .TP .B \-\-strip\-incoming\-x\-forwarded\-for Strip X\-Forwarded\-For header field from inbound client requests. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-add\-x\-forwarded\-proto Don\(aqt append additional X\-Forwarded\-Proto header field to the backend request. If inbound client sets X\-Forwarded\-Proto, and \fB\-\-no\-strip\-incoming\-x\-forwarded\-proto\fP option is used, they are passed to the backend. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-strip\-incoming\-x\-forwarded\-proto Don\(aqt strip X\-Forwarded\-Proto header field from inbound client requests. .UNINDENT .INDENT 0.0 .TP .B \-\-add\-forwarded= Append RFC 7239 Forwarded header field with parameters specified in comma delimited list . The supported parameters are \(dqby\(dq, \(dqfor\(dq, \(dqhost\(dq, and \(dqproto\(dq. By default, the value of \(dqby\(dq and \(dqfor\(dq parameters are obfuscated string. See \fB\-\-forwarded\-by\fP and \fB\-\-forwarded\-for\fP options respectively. Note that nghttpx does not translate non\-standard X\-Forwarded\-* header fields into Forwarded header field, and vice versa. .UNINDENT .INDENT 0.0 .TP .B \-\-strip\-incoming\-forwarded Strip Forwarded header field from inbound client requests. .UNINDENT .INDENT 0.0 .TP .B \-\-forwarded\-by=(obfuscated|ip|) Specify the parameter value sent out with \(dqby\(dq parameter of Forwarded header field. If \(dqobfuscated\(dq is given, the string is randomly generated at startup. If \(dqip\(dq is given, the interface address of the connection, including port number, is sent with \(dqby\(dq parameter. In case of UNIX domain socket, \(dqlocalhost\(dq is used instead of address and port. User can also specify the static obfuscated string. The limitation is that it must start with \(dq_\(dq, and only consists of character set [A\-Za\-z0\-9._\-], as described in RFC 7239. .sp Default: \fBobfuscated\fP .UNINDENT .INDENT 0.0 .TP .B \-\-forwarded\-for=(obfuscated|ip) Specify the parameter value sent out with \(dqfor\(dq parameter of Forwarded header field. If \(dqobfuscated\(dq is given, the string is randomly generated for each client connection. If \(dqip\(dq is given, the remote client address of the connection, without port number, is sent with \(dqfor\(dq parameter. In case of UNIX domain socket, \(dqlocalhost\(dq is used instead of address. .sp Default: \fBobfuscated\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-via Don\(aqt append to Via header field. If Via header field is received, it is left unaltered. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-strip\-incoming\-early\-data Don\(aqt strip Early\-Data header field from inbound client requests. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-location\-rewrite Don\(aqt rewrite location header field in default mode. When \fB\-\-http2\-proxy\fP is used, location header field will not be altered regardless of this option. .UNINDENT .INDENT 0.0 .TP .B \-\-host\-rewrite Rewrite host and :authority header fields in default mode. When \fB\-\-http2\-proxy\fP is used, these headers will not be altered regardless of this option. .UNINDENT .INDENT 0.0 .TP .B \-\-altsvc= Specify protocol ID, port, host and origin of alternative service. , and are optional. Empty and are allowed and they are treated as nothing is specified. They are advertised in alt\-svc header field only in HTTP/1.1 frontend. This option can be used multiple times to specify multiple alternative services. Example: \fB\-\-altsvc\fP=\(dqh2,443,,,ma=3600; persist=1\(dq .UNINDENT .INDENT 0.0 .TP .B \-\-http2\-altsvc= Just like \fB\-\-altsvc\fP option, but this altsvc is only sent in HTTP/2 frontend. .UNINDENT .INDENT 0.0 .TP .B \-\-add\-request\-header=
Specify additional header field to add to request header set. The field name must be lowercase. This option just appends header field and won\(aqt replace anything already set. This option can be used several times to specify multiple header fields. Example: \fB\-\-add\-request\-header\fP=\(dqfoo: bar\(dq .UNINDENT .INDENT 0.0 .TP .B \-\-add\-response\-header=
Specify additional header field to add to response header set. The field name must be lowercase. This option just appends header field and won\(aqt replace anything already set. This option can be used several times to specify multiple header fields. Example: \fB\-\-add\-response\-header\fP=\(dqfoo: bar\(dq .UNINDENT .INDENT 0.0 .TP .B \-\-request\-header\-field\-buffer= Set maximum buffer size for incoming HTTP request header field list. This is the sum of header name and value in bytes. If trailer fields exist, they are counted towards this number. .sp Default: \fB64K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-max\-request\-header\-fields= Set maximum number of incoming HTTP request header fields. If trailer fields exist, they are counted towards this number. .sp Default: \fB100\fP .UNINDENT .INDENT 0.0 .TP .B \-\-response\-header\-field\-buffer= Set maximum buffer size for incoming HTTP response header field list. This is the sum of header name and value in bytes. If trailer fields exist, they are counted towards this number. .sp Default: \fB64K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-max\-response\-header\-fields= Set maximum number of incoming HTTP response header fields. If trailer fields exist, they are counted towards this number. .sp Default: \fB500\fP .UNINDENT .INDENT 0.0 .TP .B \-\-error\-page=(|*)= Set file path to custom error page served when nghttpx originally generates HTTP error status code . must be greater than or equal to 400, and at most 599. If \(dq*\(dq is used instead of , it matches all HTTP status code. If error status code comes from backend server, the custom error pages are not used. .UNINDENT .INDENT 0.0 .TP .B \-\-server\-name= Change server response header field value to . .sp Default: \fBnghttpx\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-server\-rewrite Don\(aqt rewrite server header field in default mode. When \fB\-\-http2\-proxy\fP is used, these headers will not be altered regardless of this option. .UNINDENT .INDENT 0.0 .TP .B \-\-redirect\-https\-port= Specify the port number which appears in Location header field when redirect to HTTPS URI is made due to \(dqredirect\-if\-not\-tls\(dq parameter in \fB\-\-backend\fP option. .sp Default: \fB443\fP .UNINDENT .INDENT 0.0 .TP .B \-\-require\-http\-scheme Always require http or https scheme in HTTP request. It also requires that https scheme must be used for an encrypted connection. Otherwise, http scheme must be used. This option is recommended for a server deployment which directly faces clients and the services it provides only require http or https scheme. .UNINDENT .SS API .INDENT 0.0 .TP .B \-\-api\-max\-request\-body= Set the maximum size of request body for API request. .sp Default: \fB32M\fP .UNINDENT .SS DNS .INDENT 0.0 .TP .B \-\-dns\-cache\-timeout= Set duration that cached DNS results remain valid. Note that nghttpx caches the unsuccessful results as well. .sp Default: \fB10s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-dns\-lookup\-timeout= Set timeout that DNS server is given to respond to the initial DNS query. For the 2nd and later queries, server is given time based on this timeout, and it is scaled linearly. .sp Default: \fB250ms\fP .UNINDENT .INDENT 0.0 .TP .B \-\-dns\-max\-try= Set the number of DNS query before nghttpx gives up name lookup. .sp Default: \fB3\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-max\-requests= The number of requests that single frontend connection can process. For HTTP/2, this is the number of streams in one HTTP/2 connection. For HTTP/1, this is the number of keep alive requests. This is hint to nghttpx, and it may allow additional few requests. The default value is unlimited. .UNINDENT .SS Debug .INDENT 0.0 .TP .B \-\-frontend\-http2\-dump\-request\-header= Dumps request headers received by HTTP/2 frontend to the file denoted in . The output is done in HTTP/1 header field format and each header block is followed by an empty line. This option is not thread safe and MUST NOT be used with option \fB\-n\fP, where >= 2. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http2\-dump\-response\-header= Dumps response headers sent from HTTP/2 frontend to the file denoted in . The output is done in HTTP/1 header field format and each header block is followed by an empty line. This option is not thread safe and MUST NOT be used with option \fB\-n\fP, where >= 2. .UNINDENT .INDENT 0.0 .TP .B \-o, \-\-frontend\-frame\-debug Print HTTP/2 frames in frontend to stderr. This option is not thread safe and MUST NOT be used with option \fB\-n\fP=N, where N >= 2. .UNINDENT .SS Process .INDENT 0.0 .TP .B \-D, \-\-daemon Run in a background. If \fB\-D\fP is used, the current working directory is changed to \(aq\fI/\fP\(aq. .UNINDENT .INDENT 0.0 .TP .B \-\-pid\-file= Set path to save PID of this program. .UNINDENT .INDENT 0.0 .TP .B \-\-user= Run this program as . This option is intended to be used to drop root privileges. .UNINDENT .INDENT 0.0 .TP .B \-\-single\-process Run this program in a single process mode for debugging purpose. Without this option, nghttpx creates at least 2 processes: main and worker processes. If this option is used, main and worker are unified into a single process. nghttpx still spawns additional process if neverbleed is used. In the single process mode, the signal handling feature is disabled. .UNINDENT .INDENT 0.0 .TP .B \-\-max\-worker\-processes= The maximum number of worker processes. nghttpx spawns new worker process when it reloads its configuration. The previous worker process enters graceful termination period and will terminate when it finishes handling the existing connections. However, if reloading configurations happen very frequently, the worker processes might be piled up if they take a bit long time to finish the existing connections. With this option, if the number of worker processes exceeds the given value, the oldest worker process is terminated immediately. Specifying 0 means no limit and it is the default behaviour. .UNINDENT .INDENT 0.0 .TP .B \-\-worker\-process\-grace\-shutdown\-period= Maximum period for a worker process to terminate gracefully. When a worker process enters in graceful shutdown period (e.g., when nghttpx reloads its configuration) and it does not finish handling the existing connections in the given period of time, it is immediately terminated. Specifying 0 means no limit and it is the default behaviour. .UNINDENT .SS Scripting .INDENT 0.0 .TP .B \-\-mruby\-file= Set mruby script file .UNINDENT .INDENT 0.0 .TP .B \-\-ignore\-per\-pattern\-mruby\-error Ignore mruby compile error for per\-pattern mruby script file. If error occurred, it is treated as if no mruby file were specified for the pattern. .UNINDENT .SS HTTP/3 and QUIC .INDENT 0.0 .TP .B \-\-frontend\-quic\-idle\-timeout= Specify an idle timeout for QUIC connection. .sp Default: \fB30s\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-debug\-log Output QUIC debug log to \fI/dev/stderr.\fP .UNINDENT .INDENT 0.0 .TP .B \-\-quic\-bpf\-program\-file= Specify a path to eBPF program file reuseport_kern.o to direct an incoming QUIC UDP datagram to a correct socket. .sp Default: \fB/usr/local/lib/nghttp2/reuseport_kern.o\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-early\-data Enable early data on frontend QUIC connections. nghttpx sends \(dqEarly\-Data\(dq header field to a backend server if a request is received in early data and handshake has not finished. All backend servers should deal with possibly replayed requests. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-qlog\-dir= Specify a directory where a qlog file is written for frontend QUIC connections. A qlog file is created per each QUIC connection. The file name is ISO8601 basic format, followed by \(dq\-\(dq, server Source Connection ID and \(dq.sqlog\(dq. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-require\-token Require an address validation token for a frontend QUIC connection. Server sends a token in Retry packet or NEW_TOKEN frame in the previous connection. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-congestion\-controller= Specify a congestion controller algorithm for a frontend QUIC connection. should be either \(dqcubic\(dq or \(dqbbr\(dq. .sp Default: \fBcubic\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-secret\-file= Path to file that contains secure random data to be used as QUIC keying materials. It is used to derive keys for encrypting tokens and Connection IDs. It is not used to encrypt QUIC packets. Each line of this file must contain exactly 136 bytes hex\-encoded string (when decoded the byte string is 68 bytes long). The first 3 bits of decoded byte string are used to identify the keying material. An empty line or a line which starts \(aq#\(aq is ignored. The file can contain more than one keying materials. Because the identifier is 3 bits, at most 8 keying materials are read and the remaining data is discarded. The first keying material in the file is primarily used for encryption and decryption for new connection. The other ones are used to decrypt data for the existing connections. Specifying multiple keying materials enables key rotation. Please note that key rotation does not occur automatically. User should update files or change options values and restart nghttpx gracefully. If opening or reading given file fails, all loaded keying materials are discarded and it is treated as if none of this option is given. If this option is not given or an error occurred while opening or reading a file, a keying material is generated internally on startup and reload. .UNINDENT .INDENT 0.0 .TP .B \-\-quic\-server\-id= Specify server ID encoded in Connection ID to identify this particular server instance. Connection ID is encrypted and this part is not visible in public. It must be 4 bytes long and must be encoded in hex string (which is 8 bytes long). If this option is omitted, a random server ID is generated on startup and configuration reload. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-quic\-initial\-rtt= Specify the initial RTT of the frontend QUIC connection. .sp Default: \fB333ms\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-quic\-bpf Disable eBPF. .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-window\-size= Sets the per\-stream initial window size of HTTP/3 frontend connection. .sp Default: \fB256K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-connection\-window\-size= Sets the per\-connection window size of HTTP/3 frontend connection. .sp Default: \fB1M\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-max\-window\-size= Sets the maximum per\-stream window size of HTTP/3 frontend connection. The window size is adjusted based on the receiving rate of stream data. The initial value is the value specified by \fB\-\-frontend\-http3\-window\-size\fP and the window size grows up to bytes. .sp Default: \fB6M\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-max\-connection\-window\-size= Sets the maximum per\-connection window size of HTTP/3 frontend connection. The window size is adjusted based on the receiving rate of stream data. The initial value is the value specified by \fB\-\-frontend\-http3\-connection\-window\-size\fP and the window size grows up to bytes. .sp Default: \fB8M\fP .UNINDENT .INDENT 0.0 .TP .B \-\-frontend\-http3\-max\-concurrent\-streams= Set the maximum number of the concurrent streams in one frontend HTTP/3 connection. .sp Default: \fB100\fP .UNINDENT .SS Misc .INDENT 0.0 .TP .B \-\-conf= Load configuration from . Please note that nghttpx always tries to read the default configuration file if \fB\-\-conf\fP is not given. .sp Default: \fB/etc/nghttpx/nghttpx.conf\fP .UNINDENT .INDENT 0.0 .TP .B \-\-include= Load additional configurations from . File is read when configuration parser encountered this option. This option can be used multiple times, or even recursively. .UNINDENT .INDENT 0.0 .TP .B \-v, \-\-version Print version and exit. .UNINDENT .INDENT 0.0 .TP .B \-h, \-\-help Print this help and exit. .UNINDENT .sp The argument is an integer and an optional unit (e.g., 10K is 10 * 1024). Units are K, M and G (powers of 1024). .sp The argument is an integer and an optional unit (e.g., 1s is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms (hours, minutes, seconds and milliseconds, respectively). If a unit is omitted, a second is used as unit. .SH FILES .INDENT 0.0 .TP .B \fI/etc/nghttpx/nghttpx.conf\fP The default configuration file path nghttpx searches at startup. The configuration file path can be changed using \fB\-\-conf\fP option. .sp Those lines which are staring \fB#\fP are treated as comment. .sp The option name in the configuration file is the long command\-line option name with leading \fB\-\-\fP stripped (e.g., \fBfrontend\fP). Put \fB=\fP between option name and value. Don\(aqt put extra leading or trailing spaces. .sp When specifying arguments including characters which have special meaning to a shell, we usually use quotes so that shell does not interpret them. When writing this configuration file, quotes for this purpose must not be used. For example, specify additional request header field, do this: .INDENT 7.0 .INDENT 3.5 .sp .EX add\-request\-header=foo: bar .EE .UNINDENT .UNINDENT .sp instead of: .INDENT 7.0 .INDENT 3.5 .sp .EX add\-request\-header=\(dqfoo: bar\(dq .EE .UNINDENT .UNINDENT .sp The options which do not take argument in the command\-line \fItake\fP argument in the configuration file. Specify \fByes\fP as an argument (e.g., \fBhttp2\-proxy=yes\fP). If other string is given, it is ignored. .sp To specify private key and certificate file which are given as positional arguments in command\-line, use \fBprivate\-key\-file\fP and \fBcertificate\-file\fP\&. .sp \fB\-\-conf\fP option cannot be used in the configuration file and will be ignored if specified. .TP .B Error log Error log is written to stderr by default. It can be configured using \fB\-\-errorlog\-file\fP\&. The format of log message is as follows: .sp (:) .INDENT 7.0 .TP .B It is a combination of date and time when the log is written. It is in ISO 8601 format. .TP .B It is a main process ID. .TP .B It is a process ID which writes this log. .TP .B It is a thread ID which writes this log. It would be unique within . .TP .B and They are source file name, and line number which produce this log. .TP .B It is a log message body. .UNINDENT .UNINDENT .SH SIGNALS .INDENT 0.0 .TP .B SIGQUIT Shutdown gracefully. First accept pending connections and stop accepting connection. After all connections are handled, nghttpx exits. .TP .B SIGHUP Reload configuration file given in \fB\-\-conf\fP\&. .TP .B SIGUSR1 Reopen log files. .UNINDENT .sp SIGUSR2 .INDENT 0.0 .INDENT 3.5 Fork and execute nghttpx. It will execute the binary in the same path with same command\-line arguments and environment variables. As of nghttpx version 1.20.0, the new main process sends SIGQUIT to the original main process when it is ready to serve requests. For the earlier versions of nghttpx, user has to send SIGQUIT to the original main process. .sp The difference between SIGUSR2 (+ SIGQUIT) and SIGHUP is that former is usually used to execute new binary, and the main process is newly spawned. On the other hand, the latter just reloads configuration file, and the same main process continues to exist. .UNINDENT .UNINDENT .sp \fBNote:\fP .INDENT 0.0 .INDENT 3.5 nghttpx consists of multiple processes: one process for processing these signals, and another one for processing requests. The former spawns the latter. The former is called main process, and the latter is called worker process. If neverbleed is enabled, the worker process spawns neverbleed daemon process which does RSA key processing. The above signal must be sent to the main process. If the other processes received one of them, it is ignored. This behaviour of these processes may change in the future release. In other words, in the future release, the processes other than main process may terminate upon the reception of these signals. Therefore these signals should not be sent to the processes other than main process. .UNINDENT .UNINDENT .SH SERVER PUSH .sp nghttpx supports HTTP/2 server push in default mode with Link header field. nghttpx looks for Link header field (RFC 5988 \%) in response headers from backend server and extracts URI\-reference with parameter \fBrel=preload\fP (see preload \%) and pushes those URIs to the frontend client. Here is a sample Link header field to initiate server push: .INDENT 0.0 .INDENT 3.5 .sp .EX Link: ; rel=preload Link: ; rel=preload .EE .UNINDENT .UNINDENT .sp Currently, the following restriction is applied for server push: .INDENT 0.0 .IP 1. 3 The associated stream must have method \(dqGET\(dq or \(dqPOST\(dq. The associated stream\(aqs status code must be 200. .UNINDENT .sp This limitation may be loosened in the future release. .sp nghttpx also supports server push if both frontend and backend are HTTP/2 in default mode. In this case, in addition to server push via Link header field, server push from backend is forwarded to frontend HTTP/2 session. .sp HTTP/2 server push will be disabled if \fB\-\-http2\-proxy\fP is used. .SH UNIX DOMAIN SOCKET .sp nghttpx supports UNIX domain socket with a filename for both frontend and backend connections. .sp Please note that current nghttpx implementation does not delete a socket with a filename. And on start up, if nghttpx detects that the specified socket already exists in the file system, nghttpx first deletes it. However, if SIGUSR2 is used to execute new binary and both old and new configurations use same filename, new binary does not delete the socket and continues to use it. .SH TLS SESSION RESUMPTION .sp nghttpx supports TLS session resumption through both session ID and session ticket. .SS SESSION ID RESUMPTION .sp By default, session ID is shared by all worker threads. .SS TLS SESSION TICKET RESUMPTION .sp By default, session ticket is shared by all worker threads. The automatic key rotation is also enabled by default. Every an hour, new encryption key is generated, and previous encryption key becomes decryption only key. We set session timeout to 12 hours, and thus we keep at most 12 keys. .sp If \fB\-\-tls\-ticket\-key\-memcached\fP is given, encryption keys are retrieved from memcached. nghttpx just reads keys from memcached; one has to deploy key generator program to update keys frequently (e.g., every 1 hour). The example key generator tlsticketupdate.go is available under contrib directory in nghttp2 archive. The memcached entry key is \fBnghttpx:tls\-ticket\-key\fP\&. The data format stored in memcached is the binary format described below: .INDENT 0.0 .INDENT 3.5 .sp .EX +\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ | VERSION (4) |LEN (2)|KEY(48 or 80) ... +\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ ^ | | | +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ (LEN, KEY) pair can be repeated .EE .UNINDENT .UNINDENT .sp All numbers in the above figure is bytes. All integer fields are network byte order. .sp First 4 bytes integer VERSION field, which must be 1. The 2 bytes integer LEN field gives the length of following KEY field, which contains key. If \fB\-\-tls\-ticket\-key\-cipher\fP=aes\-128\-cbc is used, LEN must be 48. If \fB\-\-tls\-ticket\-key\-cipher\fP=aes\-256\-cbc is used, LEN must be 80. LEN and KEY pair can be repeated multiple times to store multiple keys. The key appeared first is used as encryption key. All the remaining keys are used as decryption only. .sp By default, connections to memcached server are not encrypted. To enable encryption, use \fBtls\fP keyword in \fB\-\-tls\-ticket\-key\-memcached\fP option. .sp If \fB\-\-tls\-ticket\-key\-file\fP is given, encryption key is read from the given file. In this case, nghttpx does not rotate key automatically. To rotate key, one has to restart nghttpx (see SIGNALS). .SH CERTIFICATE TRANSPARENCY .sp nghttpx supports TLS \fBsigned_certificate_timestamp\fP extension (RFC 6962 \%). The relevant options are \fB\-\-tls\-sct\-dir\fP and \fBsct\-dir\fP parameter in \fB\-\-subcert\fP\&. They takes a directory, and nghttpx reads all files whose extension is \fB\&.sct\fP under the directory. The \fB*.sct\fP files are encoded as \fBSignedCertificateTimestamp\fP struct described in section 3.2 of RFC 69662 \%\&. This format is the same one used by nginx\-ct \% and mod_ssl_ct \%\&. ct\-submit \% can be used to submit certificates to log servers, and obtain the \fBSignedCertificateTimestamp\fP struct which can be used with nghttpx. .SH MRUBY SCRIPTING .sp \fBWarning:\fP .INDENT 0.0 .INDENT 3.5 The current mruby extension API is experimental and not frozen. The API is subject to change in the future release. .UNINDENT .UNINDENT .sp \fBWarning:\fP .INDENT 0.0 .INDENT 3.5 Almost all string value returned from method, or attribute is a fresh new mruby string, which involves memory allocation, and copies. Therefore, it is strongly recommended to store a return value in a local variable, and use it, instead of calling method or accessing attribute repeatedly. .UNINDENT .UNINDENT .sp nghttpx allows users to extend its capability using mruby scripts. nghttpx has 2 hook points to execute mruby script: request phase and response phase. The request phase hook is invoked after all request header fields are received from client. The response phase hook is invoked after all response header fields are received from backend server. These hooks allows users to modify header fields, or common HTTP variables, like authority or request path, and even return custom response without forwarding request to backend servers. .sp There are 2 levels of mruby script invocations: global and per\-pattern. The global mruby script is set by \fB\-\-mruby\-file\fP option and is called for all requests. The per\-pattern mruby script is set by \(dqmruby\(dq parameter in \fB\-b\fP option. It is invoked for a request which matches the particular pattern. The order of hook invocation is: global request phase hook, per\-pattern request phase hook, per\-pattern response phase hook, and finally global response phase hook. If a hook returns a response, any later hooks are not invoked. The global request hook is invoked before the pattern matching is made and changing request path may affect the pattern matching. .sp Please note that request and response hooks of per\-pattern mruby script for a single request might not come from the same script. This might happen after a request hook is executed, backend failed for some reason, and at the same time, backend configuration is replaced by API request, and then the request uses new configuration on retry. The response hook from new configuration, if it is specified, will be invoked. .sp The all mruby script will be evaluated once per thread on startup, and it must instantiate object and evaluate it as the return value (e.g., \fBApp.new\fP). This object is called app object. If app object defines \fBon_req\fP method, it is called with \fBNghttpx::Env\fP object on request hook. Similarly, if app object defines \fBon_resp\fP method, it is called with \fBNghttpx::Env\fP object on response hook. For each method invocation, user can can access \fBNghttpx::Request\fP and \fBNghttpx::Response\fP objects via \fBNghttpx::Env#req\fP and \fBNghttpx::Env#resp\fP respectively. .INDENT 0.0 .TP .B Nghttpx::REQUEST_PHASE Constant to represent request phase. .UNINDENT .INDENT 0.0 .TP .B Nghttpx::RESPONSE_PHASE Constant to represent response phase. .UNINDENT .INDENT 0.0 .TP .B class Nghttpx::Env Object to represent current request specific context. .INDENT 7.0 .TP .B attribute [R] req Return \fBRequest\fP object. .UNINDENT .INDENT 7.0 .TP .B attribute [R] resp Return \fBResponse\fP object. .UNINDENT .INDENT 7.0 .TP .B attribute [R] ctx Return Ruby hash object. It persists until request finishes. So values set in request phase hook can be retrieved in response phase hook. .UNINDENT .INDENT 7.0 .TP .B attribute [R] phase Return the current phase. .UNINDENT .INDENT 7.0 .TP .B attribute [R] remote_addr Return IP address of a remote client. If connection is made via UNIX domain socket, this returns the string \(dqlocalhost\(dq. .UNINDENT .INDENT 7.0 .TP .B attribute [R] server_addr Return address of server that accepted the connection. This is a string which specified in \fB\-\-frontend\fP option, excluding port number, and not a resolved IP address. For UNIX domain socket, this is a path to UNIX domain socket. .UNINDENT .INDENT 7.0 .TP .B attribute [R] server_port Return port number of the server frontend which accepted the connection from client. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_used Return true if TLS is used on the connection. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_sni Return the TLS SNI value which client sent in this connection. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_fingerprint_sha256 Return the SHA\-256 fingerprint of a client certificate. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_fingerprint_sha1 Return the SHA\-1 fingerprint of a client certificate. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_issuer_name Return the issuer name of a client certificate. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_subject_name Return the subject name of a client certificate. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_serial Return the serial number of a client certificate. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_not_before Return the start date of a client certificate in seconds since the epoch. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_client_not_after Return the end date of a client certificate in seconds since the epoch. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_cipher Return a TLS cipher negotiated in this connection. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_protocol Return a TLS protocol version negotiated in this connection. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_session_id Return a session ID for this connection in hex string. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_session_reused Return true if, and only if a SSL/TLS session is reused. .UNINDENT .INDENT 7.0 .TP .B attribute [R] alpn Return ALPN identifier negotiated in this connection. .UNINDENT .INDENT 7.0 .TP .B attribute [R] tls_handshake_finished Return true if SSL/TLS handshake has finished. If it returns false in the request phase hook, the request is received in TLSv1.3 early data (0\-RTT) and might be vulnerable to the replay attack. nghttpx will send Early\-Data header field to backend servers to indicate this. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class Nghttpx::Request Object to represent request from client. The modification to Request object is allowed only in request phase hook. .INDENT 7.0 .TP .B attribute [R] http_version_major Return HTTP major version. .UNINDENT .INDENT 7.0 .TP .B attribute [R] http_version_minor Return HTTP minor version. .UNINDENT .INDENT 7.0 .TP .B attribute [R/W] method HTTP method. On assignment, copy of given value is assigned. We don\(aqt accept arbitrary method name. We will document them later, but well known methods, like GET, PUT and POST, are all supported. .UNINDENT .INDENT 7.0 .TP .B attribute [R/W] authority Authority (i.e., example.org), including optional port component . On assignment, copy of given value is assigned. .UNINDENT .INDENT 7.0 .TP .B attribute [R/W] scheme Scheme (i.e., http, https). On assignment, copy of given value is assigned. .UNINDENT .INDENT 7.0 .TP .B attribute [R/W] path Request path, including query component (i.e., /index.html). On assignment, copy of given value is assigned. The path does not include authority component of URI. This may include query component. nghttpx makes certain normalization for path. It decodes percent\-encoding for unreserved characters (see \%), and resolves \(dq..\(dq and \(dq.\(dq. But it may leave characters which should be percent\-encoded as is. So be careful when comparing path against desired string. .UNINDENT .INDENT 7.0 .TP .B attribute [R] headers Return Ruby hash containing copy of request header fields. Changing values in returned hash does not change request header fields actually used in request processing. Use \fBNghttpx::Request#add_header\fP or \fBNghttpx::Request#set_header\fP to change request header fields. .UNINDENT .INDENT 7.0 .TP .B add_header(key, value) Add header entry associated with key. The value can be single string or array of string. It does not replace any existing values associated with key. .UNINDENT .INDENT 7.0 .TP .B set_header(key, value) Set header entry associated with key. The value can be single string or array of string. It replaces any existing values associated with key. .UNINDENT .INDENT 7.0 .TP .B clear_headers() Clear all existing request header fields. .UNINDENT .INDENT 7.0 .TP .B push(uri) Initiate to push resource identified by \fIuri\fP\&. Only HTTP/2 protocol supports this feature. For the other protocols, this method is noop. \fIuri\fP can be absolute URI, absolute path or relative path to the current request. For absolute or relative path, scheme and authority are inherited from the current request. Currently, method is always GET. nghttpx will issue request to backend servers to fulfill this request. The request and response phase hooks will be called for pushed resource as well. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class Nghttpx::Response Object to represent response from backend server. .INDENT 7.0 .TP .B attribute [R] http_version_major Return HTTP major version. .UNINDENT .INDENT 7.0 .TP .B attribute [R] http_version_minor Return HTTP minor version. .UNINDENT .INDENT 7.0 .TP .B attribute [R/W] status HTTP status code. It must be in the range [200, 999], inclusive. The non\-final status code is not supported in mruby scripting at the moment. .UNINDENT .INDENT 7.0 .TP .B attribute [R] headers Return Ruby hash containing copy of response header fields. Changing values in returned hash does not change response header fields actually used in response processing. Use \fBNghttpx::Response#add_header\fP or \fBNghttpx::Response#set_header\fP to change response header fields. .UNINDENT .INDENT 7.0 .TP .B add_header(key, value) Add header entry associated with key. The value can be single string or array of string. It does not replace any existing values associated with key. .UNINDENT .INDENT 7.0 .TP .B set_header(key, value) Set header entry associated with key. The value can be single string or array of string. It replaces any existing values associated with key. .UNINDENT .INDENT 7.0 .TP .B clear_headers() Clear all existing response header fields. .UNINDENT .INDENT 7.0 .TP .B return(body) Return custom response \fIbody\fP to a client. When this method is called in request phase hook, the request is not forwarded to the backend, and response phase hook for this request will not be invoked. When this method is called in response phase hook, response from backend server is canceled and discarded. The status code and response header fields should be set before using this method. To set status code, use \fBNghttpx::Response#status\fP\&. If status code is not set, 200 is used. To set response header fields, \fBNghttpx::Response#add_header\fP and \fBNghttpx::Response#set_header\fP\&. When this method is invoked in response phase hook, the response headers are filled with the ones received from backend server. To send completely custom header fields, first call \fBNghttpx::Response#clear_headers\fP to erase all existing header fields, and then add required header fields. It is an error to call this method twice for a given request. .UNINDENT .INDENT 7.0 .TP .B send_info(status, headers) Send non\-final (informational) response to a client. \fIstatus\fP must be in the range [100, 199], inclusive. \fIheaders\fP is a hash containing response header fields. Its key must be a string, and the associated value must be either string or array of strings. Since this is not a final response, even if this method is invoked, request is still forwarded to a backend unless \fBNghttpx::Response#return\fP is called. This method can be called multiple times. It cannot be called after \fBNghttpx::Response#return\fP is called. .UNINDENT .UNINDENT .SS MRUBY EXAMPLES .sp Modify request path: .INDENT 0.0 .INDENT 3.5 .sp .EX class App def on_req(env) env.req.path = \(dq/apps#{env.req.path}\(dq end end App.new .EE .UNINDENT .UNINDENT .sp Don\(aqt forget to instantiate and evaluate object at the last line. .sp Restrict permission of viewing a content to a specific client addresses: .INDENT 0.0 .INDENT 3.5 .sp .EX class App def on_req(env) allowed_clients = [\(dq127.0.0.1\(dq, \(dq::1\(dq] if env.req.path.start_with?(\(dq/log/\(dq) && !allowed_clients.include?(env.remote_addr) then env.resp.status = 404 env.resp.return \(dqpermission denied\(dq end end end App.new .EE .UNINDENT .UNINDENT .SH API ENDPOINTS .sp nghttpx exposes API endpoints to manipulate it via HTTP based API. By default, API endpoint is disabled. To enable it, add a dedicated frontend for API using \fB\-\-frontend\fP option with \(dqapi\(dq parameter. All requests which come from this frontend address, will be treated as API request. .sp The response is normally JSON dictionary, and at least includes the following keys: .INDENT 0.0 .TP .B status The status of the request processing. The following values are defined: .INDENT 7.0 .TP .B Success The request was successful. .TP .B Failure The request was failed. No change has been made. .UNINDENT .TP .B code HTTP status code .UNINDENT .sp Additionally, depending on the API endpoint, \fBdata\fP key may be present, and its value contains the API endpoint specific data. .sp We wrote \(dqnormally\(dq, since nghttpx may return ordinal HTML response in some cases where the error has occurred before reaching API endpoint (e.g., header field is too large). .sp The following section describes available API endpoints. .SS POST /api/v1beta1/backendconfig .sp This API replaces the current backend server settings with the requested ones. The request method should be POST, but PUT is also acceptable. The request body must be nghttpx configuration file format. For configuration file format, see FILES section. The line separator inside the request body must be single LF (0x0A). Currently, only \fBbackend\fP option is parsed, the others are simply ignored. The semantics of this API is replace the current backend with the backend options in request body. Describe the desired set of backend severs, and nghttpx makes it happen. If there is no \fBbackend\fP option is found in request body, the current set of backend is replaced with the \fBbackend\fP option\(aqs default value, which is \fB127.0.0.1,80\fP\&. .sp The replacement is done instantly without breaking existing connections or requests. It also avoids any process creation as is the case with hot swapping with signals. .sp The one limitation is that only numeric IP address is allowed in \fBbackend\fP in request body unless \(dqdns\(dq parameter is used while non numeric hostname is allowed in command\-line or configuration file is read using \fB\-\-conf\fP\&. .SS GET /api/v1beta1/configrevision .sp This API returns configuration revision of the current nghttpx. The configuration revision is opaque string, and it changes after each reloading by SIGHUP. With this API, an external application knows that whether nghttpx has finished reloading its configuration by comparing the configuration revisions between before and after reloading. It is recommended to disable persistent (keep\-alive) connection for this purpose in order to avoid to send a request using the reused connection which may bound to an old process. .sp This API returns response including \fBdata\fP key. Its value is JSON object, and it contains at least the following key: .INDENT 0.0 .TP .B configRevision The configuration revision of the current nghttpx .UNINDENT .SH SEE ALSO .sp \fBnghttp(1)\fP, \fBnghttpd(1)\fP, \fBh2load(1)\fP .SH Author Tatsuhiro Tsujikawa .SH Copyright 2012, 2015, 2016, Tatsuhiro Tsujikawa .\" End of generated man page. PK!`)G%=%=h2load.1nu[.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "H2LOAD" "1" "Apr 19, 2026" "1.69.0" "nghttp2" .SH NAME h2load \- HTTP/2 benchmarking tool .SH SYNOPSIS .sp \fBh2load\fP [OPTIONS]... [URI]... .SH DESCRIPTION .sp benchmarking tool for HTTP/2 server .INDENT 0.0 .TP .B Specify URI to access. Multiple URIs can be specified. URIs are used in this order for each client. All URIs are used, then first URI is used and then 2nd URI, and so on. The scheme, host and port in the subsequent URIs, if present, are ignored. Those in the first URI are used solely. Definition of a base URI overrides all scheme, host or port values. .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \-n, \-\-requests= Number of requests across all clients. If it is used with \fB\-\-timing\-script\-file\fP option, this option specifies the number of requests each client performs rather than the number of requests across all clients. This option is ignored if timing\-based benchmarking is enabled (see \fB\-\-duration\fP option). .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-c, \-\-clients= Number of concurrent clients. With \fB\-r\fP option, this specifies the maximum number of connections to be made. .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-t, \-\-threads= Number of native threads. .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-i, \-\-input\-file= Path of a file with multiple URIs are separated by EOLs. This option will disable URIs getting from command\-line. If \(aq\-\(aq is given as , URIs will be read from stdin. URIs are used in this order for each client. All URIs are used, then first URI is used and then 2nd URI, and so on. The scheme, host and port in the subsequent URIs, if present, are ignored. Those in the first URI are used solely. Definition of a base URI overrides all scheme, host or port values. .UNINDENT .INDENT 0.0 .TP .B \-m, \-\-max\-concurrent\-streams= Max concurrent streams to issue per session. When http/1.1 is used, this specifies the number of HTTP pipelining requests in\-flight. .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-f, \-\-max\-frame\-size= Maximum frame size that the local endpoint is willing to receive. .sp Default: \fB16K\fP .UNINDENT .INDENT 0.0 .TP .B \-w, \-\-window\-bits= Sets the stream level initial window size to (2**)\-1. For QUIC, is capped to 26 (roughly 64MiB). It defaults to 24 (16MiB) for QUIC, and 30 for other protocols. .UNINDENT .INDENT 0.0 .TP .B \-W, \-\-connection\-window\-bits= Sets the connection level initial window size to (2**)\-1. .sp Default: \fB30\fP .UNINDENT .INDENT 0.0 .TP .B \-H, \-\-header=
Add/Override a header to the requests. .UNINDENT .INDENT 0.0 .TP .B \-\-ciphers= Set allowed cipher list for TLSv1.2 or earlier. The format of the string is described in OpenSSL ciphers(1). .sp Default: \fBECDHE\-ECDSA\-AES128\-GCM\-SHA256:ECDHE\-RSA\-AES128\-GCM\-SHA256:ECDHE\-ECDSA\-AES256\-GCM\-SHA384:ECDHE\-RSA\-AES256\-GCM\-SHA384:ECDHE\-ECDSA\-CHACHA20\-POLY1305:ECDHE\-RSA\-CHACHA20\-POLY1305:DHE\-RSA\-AES128\-GCM\-SHA256:DHE\-RSA\-AES256\-GCM\-SHA384\fP .UNINDENT .INDENT 0.0 .TP .B \-\-tls13\-ciphers= Set allowed cipher list for TLSv1.3. The format of the string is described in OpenSSL ciphers(1). .sp Default: \fBTLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_SHA256\fP .UNINDENT .INDENT 0.0 .TP .B \-p, \-\-no\-tls\-proto= Specify ALPN identifier of the protocol to be used when accessing http URI without SSL/TLS. Available protocols: h2c and http/1.1 .sp Default: \fBh2c\fP .UNINDENT .INDENT 0.0 .TP .B \-d, \-\-data= Post FILE to server. The request method is changed to POST. For http/1.1 connection, if \fB\-d\fP is used, the maximum number of in\-flight pipelined requests is set to 1. .UNINDENT .INDENT 0.0 .TP .B \-r, \-\-rate= Specifies the fixed rate at which connections are created. The rate must be a positive integer, representing the number of connections to be made per rate period. The maximum number of connections to be made is given in \fB\-c\fP option. This rate will be distributed among threads as evenly as possible. For example, with \fB\-t\fP2 and \fB\-r\fP4, each thread gets 2 connections per period. When the rate is 0, the program will run as it normally does, creating connections at whatever variable rate it wants. The default value for this option is 0. \fB\-r\fP and \fB\-D\fP are mutually exclusive. .UNINDENT .INDENT 0.0 .TP .B \-\-rate\-period= Specifies the time period between creating connections. The period must be a positive number, representing the length of the period in time. This option is ignored if the rate option is not used. The default value for this option is 1s. .UNINDENT .INDENT 0.0 .TP .B \-D, \-\-duration= Specifies the main duration for the measurements in case of timing\-based benchmarking. \fB\-D\fP and \fB\-r\fP are mutually exclusive. .UNINDENT .INDENT 0.0 .TP .B \-\-warm\-up\-time= Specifies the time period before starting the actual measurements, in case of timing\-based benchmarking. Needs to provided along with \fB\-D\fP option. .UNINDENT .INDENT 0.0 .TP .B \-T, \-\-connection\-active\-timeout= Specifies the maximum time that h2load is willing to keep a connection open, regardless of the activity on said connection. must be a positive integer, specifying the amount of time to wait. When no timeout value is set (either active or inactive), h2load will keep a connection open indefinitely, waiting for a response. .UNINDENT .INDENT 0.0 .TP .B \-N, \-\-connection\-inactivity\-timeout= Specifies the amount of time that h2load is willing to wait to see activity on a given connection. must be a positive integer, specifying the amount of time to wait. When no timeout value is set (either active or inactive), h2load will keep a connection open indefinitely, waiting for a response. .UNINDENT .INDENT 0.0 .TP .B \-\-timing\-script\-file= Path of a file containing one or more lines separated by EOLs. Each script line is composed of two tab\-separated fields. The first field represents the time offset from the start of execution, expressed as a positive value of milliseconds with microsecond resolution. The second field represents the URI. This option will disable URIs getting from command\-line. If \(aq\-\(aq is given as , script lines will be read from stdin. Script lines are used in order for each client. If \fB\-n\fP is given, it must be less than or equal to the number of script lines, larger values are clamped to the number of script lines. If \fB\-n\fP is not given, the number of requests will default to the number of script lines. The scheme, host and port defined in the first URI are used solely. Values contained in other URIs, if present, are ignored. Definition of a base URI overrides all scheme, host or port values. \fB\-\-timing\-script\-file\fP and \fB\-\-rps\fP are mutually exclusive. .UNINDENT .INDENT 0.0 .TP .B \-B, \-\-base\-uri=(|unix:) Specify URI from which the scheme, host and port will be used for all requests. The base URI overrides all values defined either at the command line or inside input files. If argument starts with \(dqunix:\(dq, then the rest of the argument will be treated as UNIX domain socket path. The connection is made through that path instead of TCP. In this case, scheme is inferred from the first URI appeared in the command line or inside input files as usual. .UNINDENT .INDENT 0.0 .TP .B \-\-alpn\-list= Comma delimited list of ALPN protocol identifier sorted in the order of preference. That means most desirable protocol comes first. The parameter must be delimited by a single comma only and any white spaces are treated as a part of protocol string. .sp Default: \fBh2,http/1.1\fP .UNINDENT .INDENT 0.0 .TP .B \-\-h1 Short hand for \fB\-\-alpn\-list\fP=http/1.1 \fB\-\-no\-tls\-proto\fP=http/1.1, which effectively force http/1.1 for both http and https URI. .UNINDENT .INDENT 0.0 .TP .B \-\-h3 Short hand for \fB\-\-alpn\-list\fP=h3, which effectively forces HTTP/3. .UNINDENT .INDENT 0.0 .TP .B \-\-header\-table\-size= Specify decoder header table size. .sp Default: \fB4K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-encoder\-header\-table\-size= Specify encoder header table size. The decoder (server) specifies the maximum dynamic table size it accepts. Then the negotiated dynamic table size is the minimum of this option value and the value which server specified. .sp Default: \fB4K\fP .UNINDENT .INDENT 0.0 .TP .B \-\-log\-file= Write per\-request information to a file as tab\-separated columns: start time as microseconds since epoch; HTTP status code; microseconds until end of response. More columns may be added later. Rows are ordered by end\-of\- response time when using one worker thread, but may appear slightly out of order with multiple threads due to buffering. Status code is \-1 for failed streams. .UNINDENT .INDENT 0.0 .TP .B \-\-qlog\-file\-base= Enable qlog output and specify base file name for qlogs. Qlog is emitted for each connection. For a given base name \(dqbase\(dq, each output file name becomes \(dqbase.M.N.sqlog\(dq where M is worker ID and N is client ID (e.g. \(dqbase.0.3.sqlog\(dq). Only effective in QUIC runs. .UNINDENT .INDENT 0.0 .TP .B \-\-connect\-to=[:] Host and port to connect instead of using the authority in . .UNINDENT .INDENT 0.0 .TP .B \-\-rps= Specify request per second for each client. \fB\-\-rps\fP and \fB\-\-timing\-script\-file\fP are mutually exclusive. .UNINDENT .INDENT 0.0 .TP .B \-\-groups= Specify the supported groups. .sp Default: \fBX25519:P\-256:P\-384:P\-521\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-udp\-gso Disable UDP GSO. .UNINDENT .INDENT 0.0 .TP .B \-\-max\-udp\-payload\-size= Specify the maximum outgoing UDP datagram payload size. .UNINDENT .INDENT 0.0 .TP .B \-\-ktls Enable ktls. .UNINDENT .INDENT 0.0 .TP .B \-\-sni= Send in TLS SNI, overriding the host name specified in URI. .UNINDENT .INDENT 0.0 .TP .B \-\-histogram Plot histogram for performance statistics. .UNINDENT .INDENT 0.0 .TP .B \-\-tls\-session\-file= Read TLS session from , and set it to all TLS connections to perform the session resumption. It is also used to store the new TLS session. At most one session is written to the given file. .UNINDENT .INDENT 0.0 .TP .B \-\-output\-file= Write the measurement results to in JSON format. This basically includes all numbers reported to the normal output. In addition, for performance measurements, all raw samples are included. .UNINDENT .INDENT 0.0 .TP .B \-v, \-\-verbose Output debug information. .UNINDENT .INDENT 0.0 .TP .B \-\-version Display version information and exit. .UNINDENT .INDENT 0.0 .TP .B \-h, \-\-help Display this help and exit. .UNINDENT .sp The argument is an integer and an optional unit (e.g., 10K is 10 * 1024). Units are K, M and G (powers of 1024). .sp The argument is an integer and an optional unit (e.g., 1s is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms (hours, minutes, seconds and milliseconds, respectively). If a unit is omitted, a second is used as unit. .SH OUTPUT .SS REQUEST METRICS .INDENT 0.0 .TP .B requests .INDENT 7.0 .TP .B total The total number of requests h2load was instructed to make. .TP .B started The number of requests initiated by the tool. .TP .B done The number of requests that reached completion. .TP .B succeeded Requests resulting in an HTTP 2xx or 3xx status code. .TP .B failed The total number of failed requests. This includes both \fBerrored\fP requests and requests that completed with a non\-2xx/3xx status code. .TP .B errored A subset of \fBfailed\fP where the requests failed due to network\-level issues (e.g., TCP resets, \fBRST_STREAM\fP) rather than HTTP status codes. .TP .B timeout A subset of \fBerrored\fP where the connection timed out before completion. .UNINDENT .TP .B status codes The specific count of received HTTP status codes categorized by class (2xx, 3xx, 4xx, 5xx). .UNINDENT .SS TRAFFIC METRICS .INDENT 0.0 .TP .B traffic .INDENT 7.0 .TP .B total Total application data bytes received \(dqon the wire\(dq (decrypted if using TLS). .TP .B headers Total bytes used for response headers (pre\-decompression). .INDENT 7.0 .TP .B space savings Header compression efficiency, calculated as: .sp (1 \- headers / decompressed_headers) * 100 .sp where \fBheaders\fP is the compressed size and \fBdecompressed_headers\fP is the size after decompression. .UNINDENT .TP .B data Total bytes received in response bodies. .UNINDENT .UNINDENT .SS PERFORMANCE STATISTICS .INDENT 0.0 .TP .B Metric Definitions .INDENT 7.0 .TP .B request The duration from sending the first byte of a request to receiving the last byte of the response. .TP .B connect The time taken to establish a connection, including TLS handshakes. .TP .B TTFB The duration until the first byte of application data is received from the server (decrypted if using TLS). .TP .B req/s The requests per second measured individually across all clients. .TP .B min RTT The minimum RTT (QUIC). .TP .B smoothed RTT The smoothed RTT (QUIC). .TP .B packets sent The number of packets sent (QUIC). .TP .B packets recv The number of packets received (QUIC). .TP .B packets lost The number of packets declared lost (QUIC). .TP .B GRO packets The number of packets received in a single recvmsg call (QUIC). .UNINDENT .TP .B Distribution Fields .INDENT 7.0 .TP .B min / max The absolute minimum and maximum values recorded. .TP .B median The 50th percentile value. .TP .B p95 / p99 The 95th and 99th percentiles, indicating tail performance. .TP .B mean The arithmetic average of all samples. .TP .B sd The standard deviation (measure of data dispersion). .TP .B +/\- sd The percentage of successful samples falling within one standard deviation of the mean (mean +/\- sd). .UNINDENT .UNINDENT .SH FLOW CONTROL .sp h2load sets large flow control window by default, and effectively disables flow control to avoid under utilization of server performance. To set smaller flow control window, use \fB\-w\fP and \fB\-W\fP options. For example, use \fB\-w16 \-W16\fP to set default window size described in HTTP/2 protocol specification. .SH SEE ALSO .sp \fBnghttp(1)\fP, \fBnghttpd(1)\fP, \fBnghttpx(1)\fP .SH Author Tatsuhiro Tsujikawa .SH Copyright 2012, 2015, 2016, Tatsuhiro Tsujikawa .\" End of generated man page. PK!  nghttpd.1nu[.\" Man page generated from reStructuredText .\" by the Docutils 0.22.4 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "NGHTTPD" "1" "Apr 19, 2026" "1.69.0" "nghttp2" .SH NAME nghttpd \- HTTP/2 server .SH SYNOPSIS .sp \fBnghttpd\fP [OPTION]... [ ] .SH DESCRIPTION .sp HTTP/2 server .INDENT 0.0 .TP .B Specify listening port number. .UNINDENT .INDENT 0.0 .TP .B Set path to server\(aqs private key. Required unless \fB\-\-no\-tls\fP is specified. .UNINDENT .INDENT 0.0 .TP .B Set path to server\(aqs certificate. Required unless \fB\-\-no\-tls\fP is specified. .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \-a, \-\-address= The address to bind to. If not specified the default IP address determined by getaddrinfo is used. .UNINDENT .INDENT 0.0 .TP .B \-D, \-\-daemon Run in a background. If \fB\-D\fP is used, the current working directory is changed to \(aq\fI/\fP\(aq. Therefore if this option is used, \fB\-d\fP option must be specified. .UNINDENT .INDENT 0.0 .TP .B \-V, \-\-verify\-client The server sends a client certificate request. If the client did not return a certificate, the handshake is terminated. Currently, this option just requests a client certificate and does not verify it. .UNINDENT .INDENT 0.0 .TP .B \-d, \-\-htdocs= Specify document root. If this option is not specified, the document root is the current working directory. .UNINDENT .INDENT 0.0 .TP .B \-v, \-\-verbose Print debug information such as reception/ transmission of frames and name/value pairs. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-tls Disable SSL/TLS. .UNINDENT .INDENT 0.0 .TP .B \-c, \-\-header\-table\-size= Specify decoder header table size. .UNINDENT .INDENT 0.0 .TP .B \-\-encoder\-header\-table\-size= Specify encoder header table size. The decoder (client) specifies the maximum dynamic table size it accepts. Then the negotiated dynamic table size is the minimum of this option value and the value which client specified. .UNINDENT .INDENT 0.0 .TP .B \-\-color Force colored log output. .UNINDENT .INDENT 0.0 .TP .B \-p, \-\-push== Push resources s when is requested. This option can be used repeatedly to specify multiple push configurations. and s are relative to document root. See \fB\-\-htdocs\fP option. Example: \fB\-p\fP/=/foo.png \fB\-p\fP/doc=/bar.css .UNINDENT .INDENT 0.0 .TP .B \-b, \-\-padding= Add at most bytes to a frame payload as padding. Specify 0 to disable padding. .UNINDENT .INDENT 0.0 .TP .B \-m, \-\-max\-concurrent\-streams= Set the maximum number of the concurrent streams in one HTTP/2 session. .sp Default: \fB100\fP .UNINDENT .INDENT 0.0 .TP .B \-n, \-\-workers= Set the number of worker threads. .sp Default: \fB1\fP .UNINDENT .INDENT 0.0 .TP .B \-e, \-\-error\-gzip Make error response gzipped. .UNINDENT .INDENT 0.0 .TP .B \-w, \-\-window\-bits= Sets the stream level initial window size to 2**\-1. .UNINDENT .INDENT 0.0 .TP .B \-W, \-\-connection\-window\-bits= Sets the connection level initial window size to 2**\-1. .UNINDENT .INDENT 0.0 .TP .B \-\-dh\-param\-file= Path to file that contains DH parameters in PEM format. Without this option, DHE cipher suites are not available. .UNINDENT .INDENT 0.0 .TP .B \-\-early\-response Start sending response when request HEADERS is received, rather than complete request is received. .UNINDENT .INDENT 0.0 .TP .B \-\-trailer=
Add a trailer header to a response.
must not include pseudo header field (header field name starting with \(aq:\(aq). The trailer is sent only if a response has body part. Example: \fB\-\-trailer\fP \(aqfoo: bar\(aq. .UNINDENT .INDENT 0.0 .TP .B \-\-hexdump Display the incoming traffic in hexadecimal (Canonical hex+ASCII display). If SSL/TLS is used, decrypted data are used. .UNINDENT .INDENT 0.0 .TP .B \-\-echo\-upload Send back uploaded content if method is POST or PUT. .UNINDENT .INDENT 0.0 .TP .B \-\-mime\-types\-file= Path to file that contains MIME media types and the extensions that represent them. .sp Default: \fB/etc/mime.types\fP .UNINDENT .INDENT 0.0 .TP .B \-\-no\-content\-length Don\(aqt send content\-length header field. .UNINDENT .INDENT 0.0 .TP .B \-\-groups= Specify the supported groups. .sp Default: \fBX25519:P\-256:P\-384:P\-521\fP .UNINDENT .INDENT 0.0 .TP .B \-\-ktls Enable ktls. .UNINDENT .INDENT 0.0 .TP .B \-\-version Display version information and exit. .UNINDENT .INDENT 0.0 .TP .B \-h, \-\-help Display this help and exit. .UNINDENT .sp The argument is an integer and an optional unit (e.g., 10K is 10 * 1024). Units are K, M and G (powers of 1024). .SH SEE ALSO .sp \fBnghttp(1)\fP, \fBnghttpx(1)\fP, \fBh2load(1)\fP .SH Author Tatsuhiro Tsujikawa .SH Copyright 2012, 2015, 2016, Tatsuhiro Tsujikawa .\" End of generated man page. PK!=> > version.htmlnu[ version

NAME

openssl-version, version - print OpenSSL version information

SYNOPSIS

openssl version [-help] [-a] [-v] [-b] [-o] [-f] [-p] [-d] [-e]

DESCRIPTION

This command is used to print out version information about OpenSSL.

OPTIONS

-help

Print out a usage message.

-a

All information, this is the same as setting all the other flags.

-v

The current OpenSSL version.

-b

The date the current version of OpenSSL was built.

-o

Option information: various options set when the library was built.

-f

Compilation flags.

-p

Platform setting.

-d

OPENSSLDIR setting.

-e

ENGINESDIR setting.

NOTES

The output of openssl version -a would typically be used when sending in a bug report.

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!"WNSNS ocsp.htmlnu[ ocsp

NAME

openssl-ocsp, ocsp - Online Certificate Status Protocol utility

SYNOPSIS

openssl ocsp [-help] [-out file] [-issuer file] [-cert file] [-serial n] [-signer file] [-signkey file] [-sign_other file] [-no_certs] [-req_text] [-resp_text] [-text] [-reqout file] [-respout file] [-reqin file] [-respin file] [-nonce] [-no_nonce] [-url URL] [-host host:port] [-multi process-count] [-header] [-path] [-CApath dir] [-CAfile file] [-no-CAfile] [-no-CApath] [-attime timestamp] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-no_check_time] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-VAfile file] [-validity_period n] [-status_age n] [-noverify] [-verify_other file] [-trust_other] [-no_intern] [-no_signature_verify] [-no_cert_verify] [-no_chain] [-no_cert_checks] [-no_explicit] [-port num] [-ignore_err] [-index file] [-CA file] [-rsigner file] [-rkey file] [-rother file] [-rsigopt nm:v] [-resp_no_certs] [-nmin n] [-ndays n] [-resp_key_id] [-nrequest n] [-digest]

DESCRIPTION

The Online Certificate Status Protocol (OCSP) enables applications to determine the (revocation) state of an identified certificate (RFC 2560).

The ocsp command performs many common OCSP tasks. It can be used to print out requests and responses, create requests and send queries to an OCSP responder and behave like a mini OCSP server itself.

OPTIONS

This command operates as either a client or a server. The options are described below, divided into those two modes.

OCSP Client Options

-help

Print out a usage message.

-out filename

specify output filename, default is standard output.

-issuer filename

This specifies the current issuer certificate. This option can be used multiple times. The certificate specified in filename must be in PEM format. This option MUST come before any -cert options.

-cert filename

Add the certificate filename to the request. The issuer certificate is taken from the previous issuer option, or an error occurs if no issuer certificate is specified.

-serial num

Same as the cert option except the certificate with serial number num is added to the request. The serial number is interpreted as a decimal integer unless preceded by 0x. Negative integers can also be specified by preceding the value by a - sign.

-signer filename, -signkey filename

Sign the OCSP request using the certificate specified in the signer option and the private key specified by the signkey option. If the signkey option is not present then the private key is read from the same file as the certificate. If neither option is specified then the OCSP request is not signed.

-sign_other filename

Additional certificates to include in the signed request.

-nonce, -no_nonce

Add an OCSP nonce extension to a request or disable OCSP nonce addition. Normally if an OCSP request is input using the reqin option no nonce is added: using the nonce option will force addition of a nonce. If an OCSP request is being created (using cert and serial options) a nonce is automatically added specifying no_nonce overrides this.

-req_text, -resp_text, -text

Print out the text form of the OCSP request, response or both respectively.

-reqout file, -respout file

Write out the DER encoded certificate request or response to file.

-reqin file, -respin file

Read OCSP request or response file from file. These option are ignored if OCSP request or response creation is implied by other options (for example with serial, cert and host options).

-url responder_url

Specify the responder URL. Both HTTP and HTTPS (SSL/TLS) URLs can be specified.

-host hostname:port, -path pathname

If the host option is present then the OCSP request is sent to the host hostname on port port. path specifies the HTTP pathname to use or "/" by default. This is equivalent to specifying -url with scheme http:// and the given hostname, port, and pathname.

-header name=value

Adds the header name with the specified value to the OCSP request that is sent to the responder. This may be repeated.

-timeout seconds

Connection timeout to the OCSP responder in seconds. On POSIX systems, when running as an OCSP responder, this option also limits the time that the responder is willing to wait for the client request. This time is measured from the time the responder accepts the connection until the complete request is received.

-multi process-count

Run the specified number of OCSP responder child processes, with the parent process respawning child processes as needed. Child processes will detect changes in the CA index file and automatically reload it. When running as a responder -timeout option is recommended to limit the time each child is willing to wait for the client's OCSP response. This option is available on POSIX systems (that support the fork() and other required unix system-calls).

-CAfile file, -CApath pathname

File or pathname containing trusted CA certificates. These are used to verify the signature on the OCSP response.

-no-CAfile

Do not load the trusted CA certificates from the default file location

-no-CApath

Do not load the trusted CA certificates from the default directory location

-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict

Set different certificate verification options. See verify(1) manual page for details.

-verify_other file

File containing additional certificates to search when attempting to locate the OCSP response signing certificate. Some responders omit the actual signer's certificate from the response: this option can be used to supply the necessary certificate in such cases.

-trust_other

The certificates specified by the -verify_other option should be explicitly trusted and no additional checks will be performed on them. This is useful when the complete responder certificate chain is not available or trusting a root CA is not appropriate.

-VAfile file

File containing explicitly trusted responder certificates. Equivalent to the -verify_other and -trust_other options.

-noverify

Don't attempt to verify the OCSP response signature or the nonce values. This option will normally only be used for debugging since it disables all verification of the responders certificate.

-no_intern

Ignore certificates contained in the OCSP response when searching for the signers certificate. With this option the signers certificate must be specified with either the -verify_other or -VAfile options.

-no_signature_verify

Don't check the signature on the OCSP response. Since this option tolerates invalid signatures on OCSP responses it will normally only be used for testing purposes.

-no_cert_verify

Don't verify the OCSP response signers certificate at all. Since this option allows the OCSP response to be signed by any certificate it should only be used for testing purposes.

-no_chain

Do not use certificates in the response as additional untrusted CA certificates.

-no_explicit

Do not explicitly trust the root CA if it is set to be trusted for OCSP signing.

-no_cert_checks

Don't perform any additional checks on the OCSP response signers certificate. That is do not make any checks to see if the signers certificate is authorised to provide the necessary status information: as a result this option should only be used for testing purposes.

-validity_period nsec, -status_age age

These options specify the range of times, in seconds, which will be tolerated in an OCSP response. Each certificate status response includes a notBefore time and an optional notAfter time. The current time should fall between these two values, but the interval between the two times may be only a few seconds. In practice the OCSP responder and clients clocks may not be precisely synchronised and so such a check may fail. To avoid this the -validity_period option can be used to specify an acceptable error range in seconds, the default value is 5 minutes.

If the notAfter time is omitted from a response then this means that new status information is immediately available. In this case the age of the notBefore field is checked to see it is not older than age seconds old. By default this additional check is not performed.

-digest

This option sets digest algorithm to use for certificate identification in the OCSP request. Any digest supported by the OpenSSL dgst command can be used. The default is SHA-1. This option may be used multiple times to specify the digest used by subsequent certificate identifiers.

OCSP Server Options

-index indexfile

The indexfile parameter is the name of a text index file in ca format containing certificate revocation information.

If the index option is specified the ocsp utility is in responder mode, otherwise it is in client mode. The request(s) the responder processes can be either specified on the command line (using issuer and serial options), supplied in a file (using the reqin option) or via external OCSP clients (if port or url is specified).

If the index option is present then the CA and rsigner options must also be present.

-CA file

CA certificate corresponding to the revocation information in indexfile.

-rsigner file

The certificate to sign OCSP responses with.

-rother file

Additional certificates to include in the OCSP response.

-resp_no_certs

Don't include any certificates in the OCSP response.

-resp_key_id

Identify the signer certificate using the key ID, default is to use the subject name.

-rkey file

The private key to sign OCSP responses with: if not present the file specified in the rsigner option is used.

-rsigopt nm:v

Pass options to the signature algorithm when signing OCSP responses. Names and values of these options are algorithm-specific.

-port portnum

Port to listen for OCSP requests on. The port may also be specified using the url option.

-ignore_err

Ignore malformed requests or responses: When acting as an OCSP client, retry if a malformed response is received. When acting as an OCSP responder, continue running instead of terminating upon receiving a malformed request.

-nrequest number

The OCSP server will exit after receiving number requests, default unlimited.

-nmin minutes, -ndays days

Number of minutes or days when fresh revocation information is available: used in the nextUpdate field. If neither option is present then the nextUpdate field is omitted meaning fresh revocation information is immediately available.

OCSP Response verification.

OCSP Response follows the rules specified in RFC2560.

Initially the OCSP responder certificate is located and the signature on the OCSP request checked using the responder certificate's public key.

Then a normal certificate verify is performed on the OCSP responder certificate building up a certificate chain in the process. The locations of the trusted certificates used to build the chain can be specified by the CAfile and CApath options or they will be looked for in the standard OpenSSL certificates directory.

If the initial verify fails then the OCSP verify process halts with an error.

Otherwise the issuing CA certificate in the request is compared to the OCSP responder certificate: if there is a match then the OCSP verify succeeds.

Otherwise the OCSP responder certificate's CA is checked against the issuing CA certificate in the request. If there is a match and the OCSPSigning extended key usage is present in the OCSP responder certificate then the OCSP verify succeeds.

Otherwise, if -no_explicit is not set the root CA of the OCSP responders CA is checked to see if it is trusted for OCSP signing. If it is the OCSP verify succeeds.

If none of these checks is successful then the OCSP verify fails.

What this effectively means if that if the OCSP responder certificate is authorised directly by the CA it is issuing revocation information about (and it is correctly configured) then verification will succeed.

If the OCSP responder is a "global responder" which can give details about multiple CAs and has its own separate certificate chain then its root CA can be trusted for OCSP signing. For example:

 openssl x509 -in ocspCA.pem -addtrust OCSPSigning -out trustedCA.pem

Alternatively the responder certificate itself can be explicitly trusted with the -VAfile option.

NOTES

As noted, most of the verify options are for testing or debugging purposes. Normally only the -CApath, -CAfile and (if the responder is a 'global VA') -VAfile options need to be used.

The OCSP server is only useful for test and demonstration purposes: it is not really usable as a full OCSP responder. It contains only a very simple HTTP request handling and can only handle the POST form of OCSP queries. It also handles requests serially meaning it cannot respond to new requests until it has processed the current one. The text index file format of revocation is also inefficient for large quantities of revocation data.

It is possible to run the ocsp application in responder mode via a CGI script using the reqin and respout options.

EXAMPLES

Create an OCSP request and write it to a file:

 openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -reqout req.der

Send a query to an OCSP responder with URL http://ocsp.myhost.com/ save the response to a file, print it out in text form, and verify the response:

 openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem \
     -url http://ocsp.myhost.com/ -resp_text -respout resp.der

Read in an OCSP response and print out text form:

 openssl ocsp -respin resp.der -text -noverify

OCSP server on port 8888 using a standard ca configuration, and a separate responder certificate. All requests and responses are printed to a file.

 openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem
        -text -out log.txt

As above but exit after processing one request:

 openssl ocsp -index demoCA/index.txt -port 8888 -rsigner rcert.pem -CA demoCA/cacert.pem
     -nrequest 1

Query status information using an internally generated request:

 openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem
     -issuer demoCA/cacert.pem -serial 1

Query status information using request read from a file, and write the response to a second file.

 openssl ocsp -index demoCA/index.txt -rsigner rcert.pem -CA demoCA/cacert.pem
     -reqin req.der -respout resp.der

HISTORY

The -no_alt_chains option was added in OpenSSL 1.1.0.

COPYRIGHT

Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK! pkcs7.htmlnu[ pkcs7

NAME

openssl-pkcs7, pkcs7 - PKCS#7 utility

SYNOPSIS

openssl pkcs7 [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] [-print_certs] [-text] [-noout] [-engine id]

DESCRIPTION

The pkcs7 command processes PKCS#7 files in DER or PEM format.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. DER format is DER encoded PKCS#7 v1.5 structure.PEM (the default) is a base64 encoded version of the DER form with header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read from or standard input if this option is not specified.

-out filename

Specifies the output filename to write to or standard output by default.

Prints out any certificates or CRLs contained in the file. They are preceded by their subject and issuer names in one line format.

-text

Prints out certificates details in full rather than just subject and issuer names.

-noout

Don't output the encoded version of the PKCS#7 structure (or certificates is -print_certs is set).

-engine id

Specifying an engine (by its unique id string) will cause pkcs7 to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

EXAMPLES

Convert a PKCS#7 file from PEM to DER:

 openssl pkcs7 -in file.pem -outform DER -out file.der

Output all certificates in a file:

 openssl pkcs7 -in file.pem -print_certs -out certs.pem

NOTES

The PEM PKCS#7 format uses the header and footer lines:

 -----BEGIN PKCS7-----
 -----END PKCS7-----

For compatibility with some CAs it will also accept:

 -----BEGIN CERTIFICATE-----
 -----END CERTIFICATE-----

RESTRICTIONS

There is no option to print out all the fields of a PKCS#7 file.

This PKCS#7 routines only understand PKCS#7 v 1.5 as specified in RFC2315 they cannot currently parse, for example, the new CMS as described in RFC2630.

SEE ALSO

crl2pkcs7(1)

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!Q%% s_time.htmlnu[ s_time

NAME

openssl-s_time, s_time - SSL/TLS performance timing program

SYNOPSIS

openssl s_time [-help] [-connect host:port] [-www page] [-cert filename] [-key filename] [-CApath directory] [-CAfile filename] [-no-CAfile] [-no-CApath] [-reuse] [-new] [-verify depth] [-nameopt option] [-time seconds] [-ssl3] [-bugs] [-cipher cipherlist] [-ciphersuites val]

DESCRIPTION

The s_time command implements a generic SSL/TLS client which connects to a remote host using SSL/TLS. It can request a page from the server and includes the time to transfer the payload data in its timing measurements. It measures the number of connections within a given timeframe, the amount of data transferred (if any), and calculates the average time spent for one connection.

OPTIONS

-help

Print out a usage message.

-connect host:port

This specifies the host and optional port to connect to.

-www page

This specifies the page to GET from the server. A value of '/' gets the index.htm[l] page. If this parameter is not specified, then s_time will only perform the handshake to establish SSL connections but not transfer any payload data.

-cert certname

The certificate to use, if one is requested by the server. The default is not to use a certificate. The file is in PEM format.

-key keyfile

The private key to use. If not specified then the certificate file will be used. The file is in PEM format.

-verify depth

The verify depth to use. This specifies the maximum length of the server certificate chain and turns on server certificate verification. Currently the verify operation continues after errors so all the problems with a certificate chain can be seen. As a side effect the connection will never fail due to a server certificate verify failure.

-nameopt option

Option which determines how the subject or issuer names are displayed. The option argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the x509(1) manual page for details.

-CApath directory

The directory to use for server certificate verification. This directory must be in "hash format", see verify for more information. These are also used when building the client certificate chain.

-CAfile file

A file containing trusted certificates to use during server authentication and to use when attempting to build the client certificate chain.

-no-CAfile

Do not load the trusted CA certificates from the default file location

-no-CApath

Do not load the trusted CA certificates from the default directory location

-new

Performs the timing test using a new session ID for each connection. If neither -new nor -reuse are specified, they are both on by default and executed in sequence.

-reuse

Performs the timing test using the same session ID; this can be used as a test that session caching is working. If neither -new nor -reuse are specified, they are both on by default and executed in sequence.

-ssl3

This option disables the use of SSL version 3. By default the initial handshake uses a method which should be compatible with all servers and permit them to use SSL v3 or TLS as appropriate.

The timing program is not as rich in options to turn protocols on and off as the s_client(1) program and may not connect to all servers. Unfortunately there are a lot of ancient and broken servers in use which cannot handle this technique and will fail to connect. Some servers only work if TLS is turned off with the -ssl3 option.

Note that this option may not be available, depending on how OpenSSL was built.

-bugs

There are several known bugs in SSL and TLS implementations. Adding this option enables various workarounds.

-cipher cipherlist

This allows the TLSv1.2 and below cipher list sent by the client to be modified. This list will be combined with any TLSv1.3 ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See ciphers(1) for more information.

-ciphersuites val

This allows the TLSv1.3 ciphersuites sent by the client to be modified. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See ciphers(1) for more information. The format for this list is a simple colon (":") separated list of TLSv1.3 ciphersuite names.

-time length

Specifies how long (in seconds) s_time should establish connections and optionally transfer payload data from a server. Server and client performance and the link speed determine how many connections s_time can establish.

NOTES

s_time can be used to measure the performance of an SSL connection. To connect to an SSL HTTP server and get the default page the command

 openssl s_time -connect servername:443 -www / -CApath yourdir -CAfile yourfile.pem -cipher commoncipher [-ssl3]

would typically be used (https uses port 443). 'commoncipher' is a cipher to which both client and server can agree, see the ciphers(1) command for details.

If the handshake fails then there are several possible causes, if it is nothing obvious like no client certificate then the -bugs and -ssl3 options can be tried in case it is a buggy server. In particular you should play with these options before submitting a bug report to an OpenSSL mailing list.

A frequent problem when attempting to get client certificates working is that a web client complains it has no certificates or gives an empty list to choose from. This is normally because the server is not sending the clients certificate authority in its "acceptable CA list" when it requests a certificate. By using s_client(1) the CA list can be viewed and checked. However, some servers only request client authentication after a specific URL is requested. To obtain the list in this case it is necessary to use the -prexit option of s_client(1) and send an HTTP request for an appropriate page.

If a certificate is specified on the command line using the -cert option it will not be used unless the server specifically requests a client certificate. Therefore, merely including a client certificate on the command line is no guarantee that the certificate works.

BUGS

Because this program does not have all the options of the s_client(1) program to turn protocols on and off, you may not be able to measure the performance of all protocols with all servers.

The -verify option should really exit if the server verification fails.

SEE ALSO

s_client(1), s_server(1), ciphers(1)

COPYRIGHT

Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!z tsget.htmlnu[ tsget

NAME

openssl-tsget, tsget - Time Stamping HTTP/HTTPS client

SYNOPSIS

tsget -h server_url [-e extension] [-o output] [-v] [-d] [-k private_key.pem] [-p key_password] [-c client_cert.pem] [-C CA_certs.pem] [-P CA_path] [-r file:file...] [-g EGD_socket] [request]...

DESCRIPTION

The tsget command can be used for sending a timestamp request, as specified in RFC 3161, to a timestamp server over HTTP or HTTPS and storing the timestamp response in a file. This tool cannot be used for creating the requests and verifying responses, you can use the OpenSSL ts(1) command to do that. tsget can send several requests to the server without closing the TCP connection if more than one requests are specified on the command line.

The tool sends the following HTTP request for each timestamp request:

        POST url HTTP/1.1
        User-Agent: OpenTSA tsget.pl/<version>
        Host: <host>:<port>
        Pragma: no-cache
        Content-Type: application/timestamp-query
        Accept: application/timestamp-reply
        Content-Length: length of body

        ...binary request specified by the user...

tsget expects a response of type application/timestamp-reply, which is written to a file without any interpretation.

OPTIONS

-h server_url

The URL of the HTTP/HTTPS server listening for timestamp requests.

-e extension

If the -o option is not given this argument specifies the extension of the output files. The base name of the output file will be the same as those of the input files. Default extension is '.tsr'. (Optional)

-o output

This option can be specified only when just one request is sent to the server. The timestamp response will be written to the given output file. '-' means standard output. In case of multiple timestamp requests or the absence of this argument the names of the output files will be derived from the names of the input files and the default or specified extension argument. (Optional)

-v

The name of the currently processed request is printed on standard error. (Optional)

-d

Switches on verbose mode for the underlying curl library. You can see detailed debug messages for the connection. (Optional)

-k private_key.pem

(HTTPS) In case of certificate-based client authentication over HTTPS <private_key.pem> must contain the private key of the user. The private key file can optionally be protected by a passphrase. The -c option must also be specified. (Optional)

-p key_password

(HTTPS) Specifies the passphrase for the private key specified by the -k argument. If this option is omitted and the key is passphrase protected tsget will ask for it. (Optional)

-c client_cert.pem

(HTTPS) In case of certificate-based client authentication over HTTPS <client_cert.pem> must contain the X.509 certificate of the user. The -k option must also be specified. If this option is not specified no certificate-based client authentication will take place. (Optional)

-C CA_certs.pem

(HTTPS) The trusted CA certificate store. The certificate chain of the peer's certificate must include one of the CA certificates specified in this file. Either option -C or option -P must be given in case of HTTPS. (Optional)

-P CA_path

(HTTPS) The path containing the trusted CA certificates to verify the peer's certificate. The directory must be prepared with the c_rehash OpenSSL utility. Either option -C or option -P must be given in case of HTTPS. (Optional)

-rand file:file...

The files containing random data for seeding the random number generator. Multiple files can be specified, the separator is ; for MS-Windows, , for VMS and : for all other platforms. (Optional)

-g EGD_socket

The name of an EGD socket to get random data from. (Optional)

[request]...

List of files containing RFC 3161 DER-encoded timestamp requests. If no requests are specified only one request will be sent to the server and it will be read from the standard input. (Optional)

ENVIRONMENT VARIABLES

The TSGET environment variable can optionally contain default arguments. The content of this variable is added to the list of command line arguments.

EXAMPLES

The examples below presume that file1.tsq and file2.tsq contain valid timestamp requests, tsa.opentsa.org listens at port 8080 for HTTP requests and at port 8443 for HTTPS requests, the TSA service is available at the /tsa absolute path.

Get a timestamp response for file1.tsq over HTTP, output is written to file1.tsr:

  tsget -h http://tsa.opentsa.org:8080/tsa file1.tsq

Get a timestamp response for file1.tsq and file2.tsq over HTTP showing progress, output is written to file1.reply and file2.reply respectively:

  tsget -h http://tsa.opentsa.org:8080/tsa -v -e .reply \
        file1.tsq file2.tsq

Create a timestamp request, write it to file3.tsq, send it to the server and write the response to file3.tsr:

  openssl ts -query -data file3.txt -cert | tee file3.tsq \
        | tsget -h http://tsa.opentsa.org:8080/tsa \
        -o file3.tsr

Get a timestamp response for file1.tsq over HTTPS without client authentication:

  tsget -h https://tsa.opentsa.org:8443/tsa \
        -C cacerts.pem file1.tsq

Get a timestamp response for file1.tsq over HTTPS with certificate-based client authentication (it will ask for the passphrase if client_key.pem is protected):

  tsget -h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \
        -k client_key.pem -c client_cert.pem file1.tsq

You can shorten the previous command line if you make use of the TSGET environment variable. The following commands do the same as the previous example:

  TSGET='-h https://tsa.opentsa.org:8443/tsa -C cacerts.pem \
        -k client_key.pem -c client_cert.pem'
  export TSGET
  tsget file1.tsq

SEE ALSO

openssl(1), ts(1), curl(1), RFC 3161

COPYRIGHT

Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!>Oeeec.htmlnu[ ec

NAME

openssl-ec, ec - EC key processing

SYNOPSIS

openssl ec [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-des] [-des3] [-idea] [-text] [-noout] [-param_out] [-pubin] [-pubout] [-conv_form arg] [-param_enc arg] [-no_public] [-check] [-engine id]

DESCRIPTION

The ec command processes EC keys. They can be converted between various forms and their components printed out. Note OpenSSL uses the private key format specified in 'SEC 1: Elliptic Curve Cryptography' (http://www.secg.org/). To convert an OpenSSL EC private key into the PKCS#8 private key format use the pkcs8 command.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option with a private key uses an ASN.1 DER encoded SEC1 private key. When used with a public key it uses the SubjectPublicKeyInfo structure as specified in RFC 3280. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines. In the case of a private key PKCS#8 format is also accepted.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write a key to or standard output by is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.

-passout arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-des|-des3|-idea

These options encrypt the private key with the DES, triple DES, IDEA or any other cipher supported by OpenSSL before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the ec utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with PEM format output files.

-text

Prints out the public, private key components and parameters.

-noout

This option prevents output of the encoded version of the key.

-pubin

By default, a private key is read from the input file. With this option a public key is read instead.

-pubout

By default a private key is output. With this option a public key will be output instead. This option is automatically set if the input is a public key.

-conv_form

This specifies how the points on the elliptic curve are converted into octet strings. Possible values are: compressed (the default value), uncompressed and hybrid. For more information regarding the point conversion forms please read the X9.62 standard. Note Due to patent issues the compressed option is disabled by default for binary curves and can be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at compile time.

-param_enc arg

This specifies how the elliptic curve parameters are encoded. Possible value are: named_curve, i.e. the ec parameters are specified by an OID, or explicit where the ec parameters are explicitly given (see RFC 3279 for the definition of the EC parameters structures). The default value is named_curve. Note the implicitlyCA alternative, as specified in RFC 3279, is currently not implemented in OpenSSL.

-no_public

This option omits the public key components from the private key output.

-check

This option checks the consistency of an EC private or public key.

-engine id

Specifying an engine (by its unique id string) will cause ec to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

NOTES

The PEM private key format uses the header and footer lines:

 -----BEGIN EC PRIVATE KEY-----
 -----END EC PRIVATE KEY-----

The PEM public key format uses the header and footer lines:

 -----BEGIN PUBLIC KEY-----
 -----END PUBLIC KEY-----

EXAMPLES

To encrypt a private key using triple DES:

 openssl ec -in key.pem -des3 -out keyout.pem

To convert a private key from PEM to DER format:

 openssl ec -in key.pem -outform DER -out keyout.der

To print out the components of a private key to standard output:

 openssl ec -in key.pem -text -noout

To just output the public part of a private key:

 openssl ec -in key.pem -pubout -out pubkey.pem

To change the parameters encoding to explicit:

 openssl ec -in key.pem -param_enc explicit -out keyout.pem

To change the point conversion form to compressed:

 openssl ec -in key.pem -conv_form compressed -out keyout.pem

SEE ALSO

ecparam(1), dsa(1), rsa(1)

COPYRIGHT

Copyright 2003-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!:񄲂 s_server.htmlnu[ s_server

NAME

openssl-s_server, s_server - SSL/TLS server program

SYNOPSIS

openssl s_server [-help] [-port +int] [-accept val] [-unix val] [-4] [-6] [-unlink] [-context val] [-verify int] [-Verify int] [-cert infile] [-nameopt val] [-naccept +int] [-serverinfo val] [-certform PEM|DER] [-key infile] [-keyform format] [-pass val] [-dcert infile] [-dcertform PEM|DER] [-dkey infile] [-dkeyform PEM|DER] [-dpass val] [-nbio_test] [-crlf] [-debug] [-msg] [-msgfile outfile] [-state] [-CAfile infile] [-CApath dir] [-no-CAfile] [-no-CApath] [-nocert] [-quiet] [-no_resume_ephemeral] [-www] [-WWW] [-servername] [-servername_fatal] [-cert2 infile] [-key2 infile] [-tlsextdebug] [-HTTP] [-id_prefix val] [-rand file...] [-writerand file] [-keymatexport val] [-keymatexportlen +int] [-CRL infile] [-crl_download] [-cert_chain infile] [-dcert_chain infile] [-chainCApath dir] [-verifyCApath dir] [-no_cache] [-ext_cache] [-CRLform PEM|DER] [-verify_return_error] [-verify_quiet] [-build_chain] [-chainCAfile infile] [-verifyCAfile infile] [-ign_eof] [-no_ign_eof] [-status] [-status_verbose] [-status_timeout int] [-status_url val] [-status_file infile] [-trace] [-security_debug] [-security_debug_verbose] [-brief] [-rev] [-async] [-ssl_config val] [-max_send_frag +int] [-split_send_frag +int] [-max_pipelines +int] [-read_buf +int] [-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_tls1_3] [-bugs] [-no_comp] [-comp] [-no_ticket] [-num_tickets] [-serverpref] [-legacy_renegotiation] [-no_renegotiation] [-legacy_server_connect] [-no_resumption_on_reneg] [-no_legacy_server_connect] [-allow_no_dhe_kex] [-prioritize_chacha] [-strict] [-sigalgs val] [-client_sigalgs val] [-groups val] [-curves val] [-named_curve val] [-cipher val] [-ciphersuites val] [-dhparam infile] [-record_padding val] [-debug_broken_protocol] [-policy val] [-purpose val] [-verify_name val] [-verify_depth int] [-auth_level int] [-attime intmax] [-verify_hostname val] [-verify_email val] [-verify_ip] [-ignore_critical] [-issuer_checks] [-crl_check] [-crl_check_all] [-policy_check] [-explicit_policy] [-inhibit_any] [-inhibit_map] [-x509_strict] [-extended_crl] [-use_deltas] [-policy_print] [-check_ss_sig] [-trusted_first] [-suiteB_128_only] [-suiteB_128] [-suiteB_192] [-partial_chain] [-no_alt_chains] [-no_check_time] [-allow_proxy_certs] [-xkey] [-xcert] [-xchain] [-xchain_build] [-xcertform PEM|DER] [-xkeyform PEM|DER] [-nbio] [-psk_identity val] [-psk_hint val] [-psk val] [-psk_session file] [-srpvfile infile] [-srpuserseed val] [-ssl3] [-tls1] [-tls1_1] [-tls1_2] [-tls1_3] [-dtls] [-timeout] [-mtu +int] [-listen] [-dtls1] [-dtls1_2] [-sctp] [-sctp_label_bug] [-no_dhe] [-nextprotoneg val] [-use_srtp val] [-alpn val] [-engine val] [-keylogfile outfile] [-max_early_data int] [-early_data] [-anti_replay] [-no_anti_replay]

DESCRIPTION

The s_server command implements a generic SSL/TLS server which listens for connections on a given port using SSL/TLS.

OPTIONS

In addition to the options below the s_server utility also supports the common and server only options documented in the "Supported Command Line Commands" section of the SSL_CONF_cmd(3) manual page.

-help

Print out a usage message.

-port +int

The TCP port to listen on for connections. If not specified 4433 is used.

-accept val

The optional TCP host and port to listen on for connections. If not specified, *:4433 is used.

-unix val

Unix domain socket to accept on.

-4

Use IPv4 only.

-6

Use IPv6 only.

For -unix, unlink any existing socket first.

-context val

Sets the SSL context id. It can be given any string value. If this option is not present a default value will be used.

-verify int, -Verify int

The verify depth to use. This specifies the maximum length of the client certificate chain and makes the server request a certificate from the client. With the -verify option a certificate is requested but the client does not have to send one, with the -Verify option the client must supply a certificate or an error occurs.

If the cipher suite cannot request a client certificate (for example an anonymous cipher suite or PSK) this option has no effect.

-cert infile

The certificate to use, most servers cipher suites require the use of a certificate and some require a certificate with a certain public key type: for example the DSS cipher suites require a certificate containing a DSS (DSA) key. If not specified then the filename "server.pem" will be used.

-cert_chain

A file containing trusted certificates to use when attempting to build the client/server certificate chain related to the certificate specified via the -cert option.

-build_chain

Specify whether the application should build the certificate chain to be provided to the client.

-nameopt val

Option which determines how the subject or issuer names are displayed. The val argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the x509(1) manual page for details.

-naccept +int

The server will exit after receiving the specified number of connections, default unlimited.

-serverinfo val

A file containing one or more blocks of PEM data. Each PEM block must encode a TLS ServerHello extension (2 bytes type, 2 bytes length, followed by "length" bytes of extension data). If the client sends an empty TLS ClientHello extension matching the type, the corresponding ServerHello extension will be returned.

-certform PEM|DER

The certificate format to use: DER or PEM. PEM is the default.

-key infile

The private key to use. If not specified then the certificate file will be used.

-keyform format

The private format to use: DER or PEM. PEM is the default.

-pass val

The private key password source. For more information about the format of val see "Pass Phrase Options" in openssl(1).

-dcert infile, -dkey infile

Specify an additional certificate and private key, these behave in the same manner as the -cert and -key options except there is no default if they are not specified (no additional certificate and key is used). As noted above some cipher suites require a certificate containing a key of a certain type. Some cipher suites need a certificate carrying an RSA key and some a DSS (DSA) key. By using RSA and DSS certificates and keys a server can support clients which only support RSA or DSS cipher suites by using an appropriate certificate.

-dcert_chain

A file containing trusted certificates to use when attempting to build the server certificate chain when a certificate specified via the -dcert option is in use.

-dcertform PEM|DER, -dkeyform PEM|DER, -dpass val

Additional certificate and private key format and passphrase respectively.

-xkey infile, -xcert infile, -xchain

Specify an extra certificate, private key and certificate chain. These behave in the same manner as the -cert, -key and -cert_chain options. When specified, the callback returning the first valid chain will be in use by the server.

-xchain_build

Specify whether the application should build the certificate chain to be provided to the client for the extra certificates provided via -xkey infile, -xcert infile, -xchain options.

-xcertform PEM|DER, -xkeyform PEM|DER

Extra certificate and private key format respectively.

-nbio_test

Tests non blocking I/O.

-crlf

This option translated a line feed from the terminal into CR+LF.

-debug

Print extensive debugging information including a hex dump of all traffic.

-msg

Show all protocol messages with hex dump.

-msgfile outfile

File to send output of -msg or -trace to, default standard output.

-state

Prints the SSL session states.

-CAfile infile

A file containing trusted certificates to use during client authentication and to use when attempting to build the server certificate chain. The list is also used in the list of acceptable client CAs passed to the client when a certificate is requested.

-CApath dir

The directory to use for client certificate verification. This directory must be in "hash format", see verify(1) for more information. These are also used when building the server certificate chain.

-chainCApath dir

The directory to use for building the chain provided to the client. This directory must be in "hash format", see verify(1) for more information.

-chainCAfile file

A file containing trusted certificates to use when attempting to build the server certificate chain.

-no-CAfile

Do not load the trusted CA certificates from the default file location.

-no-CApath

Do not load the trusted CA certificates from the default directory location.

-nocert

If this option is set then no certificate is used. This restricts the cipher suites available to the anonymous ones (currently just anonymous DH).

-quiet

Inhibit printing of session and certificate information.

-www

Sends a status message back to the client when it connects. This includes information about the ciphers used and various session parameters. The output is in HTML format so this option will normally be used with a web browser. Cannot be used in conjunction with -early_data.

-WWW

Emulates a simple web server. Pages will be resolved relative to the current directory, for example if the URL https://myhost/page.html is requested the file ./page.html will be loaded. Cannot be used in conjunction with -early_data.

-tlsextdebug

Print a hex dump of any TLS extensions received from the server.

-HTTP

Emulates a simple web server. Pages will be resolved relative to the current directory, for example if the URL https://myhost/page.html is requested the file ./page.html will be loaded. The files loaded are assumed to contain a complete and correct HTTP response (lines that are part of the HTTP response line and headers must end with CRLF). Cannot be used in conjunction with -early_data.

-id_prefix val

Generate SSL/TLS session IDs prefixed by val. This is mostly useful for testing any SSL/TLS code (e.g. proxies) that wish to deal with multiple servers, when each of which might be generating a unique range of session IDs (e.g. with a certain prefix).

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-verify_return_error

Verification errors normally just print a message but allow the connection to continue, for debugging purposes. If this option is used, then verification errors close the connection.

-status

Enables certificate status request support (aka OCSP stapling).

-status_verbose

Enables certificate status request support (aka OCSP stapling) and gives a verbose printout of the OCSP response.

-status_timeout int

Sets the timeout for OCSP response to int seconds.

-status_url val

Sets a fallback responder URL to use if no responder URL is present in the server certificate. Without this option an error is returned if the server certificate does not contain a responder address.

-status_file infile

Overrides any OCSP responder URLs from the certificate and always provides the OCSP Response stored in the file. The file must be in DER format.

-trace

Show verbose trace output of protocol messages. OpenSSL needs to be compiled with enable-ssl-trace for this option to work.

-brief

Provide a brief summary of connection parameters instead of the normal verbose output.

-rev

Simple test server which just reverses the text received from the client and sends it back to the server. Also sets -brief. Cannot be used in conjunction with -early_data.

-async

Switch on asynchronous mode. Cryptographic operations will be performed asynchronously. This will only have an effect if an asynchronous capable engine is also used via the -engine option. For test purposes the dummy async engine (dasync) can be used (if available).

-max_send_frag +int

The maximum size of data fragment to send. See SSL_CTX_set_max_send_fragment(3) for further information.

-split_send_frag +int

The size used to split data for encrypt pipelines. If more data is written in one go than this value then it will be split into multiple pipelines, up to the maximum number of pipelines defined by max_pipelines. This only has an effect if a suitable cipher suite has been negotiated, an engine that supports pipelining has been loaded, and max_pipelines is greater than 1. See SSL_CTX_set_split_send_fragment(3) for further information.

-max_pipelines +int

The maximum number of encrypt/decrypt pipelines to be used. This will only have an effect if an engine has been loaded that supports pipelining (e.g. the dasync engine) and a suitable cipher suite has been negotiated. The default value is 1. See SSL_CTX_set_max_pipelines(3) for further information.

-read_buf +int

The default read buffer size to be used for connections. This will only have an effect if the buffer size is larger than the size that would otherwise be used and pipelining is in use (see SSL_CTX_set_default_read_buffer_len(3) for further information).

-ssl2, -ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl2, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3

These options require or disable the use of the specified SSL or TLS protocols. By default s_server will negotiate the highest mutually supported protocol version. When a specific TLS version is required, only that version will be accepted from the client. Note that not all protocols and flags may be available, depending on how OpenSSL was built.

-bugs

There are several known bugs in SSL and TLS implementations. Adding this option enables various workarounds.

-no_comp

Disable negotiation of TLS compression. TLS compression is not recommended and is off by default as of OpenSSL 1.1.0.

-comp

Enable negotiation of TLS compression. This option was introduced in OpenSSL 1.1.0. TLS compression is not recommended and is off by default as of OpenSSL 1.1.0.

-no_ticket

Disable RFC4507bis session ticket support. This option has no effect if TLSv1.3 is negotiated. See -num_tickets.

-num_tickets

Control the number of tickets that will be sent to the client after a full handshake in TLSv1.3. The default number of tickets is 2. This option does not affect the number of tickets sent after a resumption handshake.

-serverpref

Use the server's cipher preferences, rather than the client's preferences.

-prioritize_chacha

Prioritize ChaCha ciphers when preferred by clients. Requires -serverpref.

-no_resumption_on_reneg

Set the SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION option.

-client_sigalgs val

Signature algorithms to support for client certificate authentication (colon-separated list).

-named_curve val

Specifies the elliptic curve to use. NOTE: this is single curve, not a list. For a list of all possible curves, use:

    $ openssl ecparam -list_curves
-cipher val

This allows the list of TLSv1.2 and below ciphersuites used by the server to be modified. This list is combined with any TLSv1.3 ciphersuites that have been configured. When the client sends a list of supported ciphers the first client cipher also included in the server list is used. Because the client specifies the preference order, the order of the server cipherlist is irrelevant. See the ciphers command for more information.

-ciphersuites val

This allows the list of TLSv1.3 ciphersuites used by the server to be modified. This list is combined with any TLSv1.2 and below ciphersuites that have been configured. When the client sends a list of supported ciphers the first client cipher also included in the server list is used. Because the client specifies the preference order, the order of the server cipherlist is irrelevant. See the ciphers command for more information. The format for this list is a simple colon (":") separated list of TLSv1.3 ciphersuite names.

-dhparam infile

The DH parameter file to use. The ephemeral DH cipher suites generate keys using a set of DH parameters. If not specified then an attempt is made to load the parameters from the server certificate file. If this fails then a static set of parameters hard coded into the s_server program will be used.

-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict

Set different peer certificate verification options. See the verify(1) manual page for details.

-crl_check, -crl_check_all

Check the peer certificate has not been revoked by its CA. The CRL(s) are appended to the certificate file. With the -crl_check_all option all CRLs of all CAs in the chain are checked.

-nbio

Turns on non blocking I/O.

-psk_identity val

Expect the client to send PSK identity val when using a PSK cipher suite, and warn if they do not. By default, the expected PSK identity is the string "Client_identity".

-psk_hint val

Use the PSK identity hint val when using a PSK cipher suite.

-psk val

Use the PSK key val when using a PSK cipher suite. The key is given as a hexadecimal number without leading 0x, for example -psk 1a2b3c4d. This option must be provided in order to use a PSK cipher.

-psk_session file

Use the pem encoded SSL_SESSION data stored in file as the basis of a PSK. Note that this will only work if TLSv1.3 is negotiated.

-listen

This option can only be used in conjunction with one of the DTLS options above. With this option s_server will listen on a UDP port for incoming connections. Any ClientHellos that arrive will be checked to see if they have a cookie in them or not. Any without a cookie will be responded to with a HelloVerifyRequest. If a ClientHello with a cookie is received then s_server will connect to that peer and complete the handshake.

-dtls, -dtls1, -dtls1_2

These options make s_server use DTLS protocols instead of TLS. With -dtls, s_server will negotiate any supported DTLS protocol version, whilst -dtls1 and -dtls1_2 will only support DTLSv1.0 and DTLSv1.2 respectively.

-sctp

Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with -dtls, -dtls1 or -dtls1_2. This option is only available where OpenSSL has support for SCTP enabled.

-sctp_label_bug

Use the incorrect behaviour of older OpenSSL implementations when computing endpoint-pair shared secrets for DTLS/SCTP. This allows communication with older broken implementations but breaks interoperability with correct implementations. Must be used in conjunction with -sctp. This option is only available where OpenSSL has support for SCTP enabled.

-no_dhe

If this option is set then no DH parameters will be loaded effectively disabling the ephemeral DH cipher suites.

-alpn val, -nextprotoneg val

These flags enable the Application-Layer Protocol Negotiation or Next Protocol Negotiation (NPN) extension, respectively. ALPN is the IETF standard and replaces NPN. The val list is a comma-separated list of supported protocol names. The list should contain the most desirable protocols first. Protocol names are printable ASCII strings, for example "http/1.1" or "spdy/3". The flag -nextprotoneg cannot be specified if -tls1_3 is used.

-engine val

Specifying an engine (by its unique id string in val) will cause s_server to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-keylogfile outfile

Appends TLS secrets to the specified keylog file such that external programs (like Wireshark) can decrypt TLS connections.

-max_early_data int

Change the default maximum early data bytes that are specified for new sessions and any incoming early data (when used in conjunction with the -early_data flag). The default value is approximately 16k. The argument must be an integer greater than or equal to 0.

-early_data

Accept early data where possible. Cannot be used in conjunction with -www, -WWW, -HTTP or -rev.

-anti_replay, -no_anti_replay

Switches replay protection on or off, respectively. Replay protection is on by default unless overridden by a configuration file. When it is on, OpenSSL will automatically detect if a session ticket has been used more than once, TLSv1.3 has been negotiated, and early data is enabled on the server. A full handshake is forced if a session ticket is used a second or subsequent time. Any early data that was sent will be rejected.

CONNECTED COMMANDS

If a connection request is established with an SSL client and neither the -www nor the -WWW option has been used then normally any data received from the client is displayed and any key presses will be sent to the client.

Certain commands are also recognized which perform special operations. These commands are a letter which must appear at the start of a line. They are listed below.

q

End the current SSL connection but still accept new connections.

Q

End the current SSL connection and exit.

r

Renegotiate the SSL session (TLSv1.2 and below only).

R

Renegotiate the SSL session and request a client certificate (TLSv1.2 and below only).

P

Send some plain text down the underlying TCP connection: this should cause the client to disconnect due to a protocol violation.

S

Print out some session cache status information.

B

Send a heartbeat message to the client (DTLS only)

k

Send a key update message to the client (TLSv1.3 only)

K

Send a key update message to the client and request one back (TLSv1.3 only)

c

Send a certificate request to the client (TLSv1.3 only)

NOTES

s_server can be used to debug SSL clients. To accept connections from a web browser the command:

 openssl s_server -accept 443 -www

can be used for example.

Although specifying an empty list of CAs when requesting a client certificate is strictly speaking a protocol violation, some SSL clients interpret this to mean any CA is acceptable. This is useful for debugging purposes.

The session parameters can printed out using the sess_id program.

BUGS

Because this program has a lot of options and also because some of the techniques used are rather old, the C source of s_server is rather hard to read and not a model of how things should be done. A typical SSL server program would be much simpler.

The output of common ciphers is wrong: it just gives the list of ciphers that OpenSSL recognizes and the client supports.

There should be a way for the s_server program to print out details of any unknown cipher suites a client says it supports.

SEE ALSO

SSL_CONF_cmd(3), sess_id(1), s_client(1), ciphers(1) SSL_CTX_set_max_send_fragment(3), SSL_CTX_set_split_send_fragment(3), SSL_CTX_set_max_pipelines(3)

HISTORY

The -no_alt_chains option was added in OpenSSL 1.1.0.

The -allow-no-dhe-kex and -prioritize_chacha options were added in OpenSSL 1.1.1.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!Q8@w@wcms.htmlnu[ cms

NAME

openssl-cms, cms - CMS utility

SYNOPSIS

openssl cms [-help] [-encrypt] [-decrypt] [-sign] [-verify] [-cmsout] [-resign] [-data_create] [-data_out] [-digest_create] [-digest_verify] [-compress] [-uncompress] [-EncryptedData_encrypt] [-sign_receipt] [-verify_receipt receipt] [-in filename] [-inform SMIME|PEM|DER] [-rctform SMIME|PEM|DER] [-out filename] [-outform SMIME|PEM|DER] [-stream -indef -noindef] [-noindef] [-content filename] [-text] [-noout] [-print] [-CAfile file] [-CApath dir] [-no-CAfile] [-no-CApath] [-attime timestamp] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-no_check_time] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-md digest] [-cipher] [-nointern] [-noverify] [-nocerts] [-noattr] [-nosmimecap] [-binary] [-crlfeol] [-asciicrlf] [-nodetach] [-certfile file] [-certsout file] [-signer file] [-recip file] [-keyid] [-receipt_request_all] [-receipt_request_first] [-receipt_request_from emailaddress] [-receipt_request_to emailaddress] [-receipt_request_print] [-secretkey key] [-secretkeyid id] [-econtent_type type] [-inkey file] [-keyopt name:parameter] [-passin arg] [-rand file...] [-writerand file] [cert.pem...] [-to addr] [-from addr] [-subject subj] [cert.pem]...

DESCRIPTION

The cms command handles S/MIME v3.1 mail. It can encrypt, decrypt, sign and verify, compress and uncompress S/MIME messages.

OPTIONS

There are fourteen operation options that set the type of operation to be performed. The meaning of the other options varies according to the operation type.

-help

Print out a usage message.

-encrypt

Encrypt mail for the given recipient certificates. Input file is the message to be encrypted. The output file is the encrypted mail in MIME format. The actual CMS type is <B>EnvelopedData<B>.

Note that no revocation check is done for the recipient cert, so if that key has been compromised, others may be able to decrypt the text.

-decrypt

Decrypt mail using the supplied certificate and private key. Expects an encrypted mail message in MIME format for the input file. The decrypted mail is written to the output file.

-debug_decrypt

This option sets the CMS_DEBUG_DECRYPT flag. This option should be used with caution: see the notes section below.

-sign

Sign mail using the supplied certificate and private key. Input file is the message to be signed. The signed message in MIME format is written to the output file.

-verify

Verify signed mail. Expects a signed mail message on input and outputs the signed data. Both clear text and opaque signing is supported.

-cmsout

Takes an input message and writes out a PEM encoded CMS structure.

-resign

Resign a message: take an existing message and one or more new signers.

-data_create

Create a CMS Data type.

-data_out

Data type and output the content.

-digest_create

Create a CMS DigestedData type.

-digest_verify

Verify a CMS DigestedData type and output the content.

-compress

Create a CMS CompressedData type. OpenSSL must be compiled with zlib support for this option to work, otherwise it will output an error.

-uncompress

Uncompress a CMS CompressedData type and output the content. OpenSSL must be compiled with zlib support for this option to work, otherwise it will output an error.

-EncryptedData_encrypt

Encrypt content using supplied symmetric key and algorithm using a CMS EncryptedData type and output the content.

-sign_receipt

Generate and output a signed receipt for the supplied message. The input message must contain a signed receipt request. Functionality is otherwise similar to the -sign operation.

-verify_receipt receipt

Verify a signed receipt in filename receipt. The input message must contain the original receipt request. Functionality is otherwise similar to the -verify operation.

-in filename

The input message to be encrypted or signed or the message to be decrypted or verified.

-inform SMIME|PEM|DER

This specifies the input format for the CMS structure. The default is SMIME which reads an S/MIME format message. PEM and DER format change this to expect PEM and DER format CMS structures instead. This currently only affects the input format of the CMS structure, if no CMS structure is being input (for example with -encrypt or -sign) this option has no effect.

-rctform SMIME|PEM|DER

Specify the format for a signed receipt for use with the -receipt_verify operation.

-out filename

The message text that has been decrypted or verified or the output MIME format message that has been signed or verified.

-outform SMIME|PEM|DER

This specifies the output format for the CMS structure. The default is SMIME which writes an S/MIME format message. PEM and DER format change this to write PEM and DER format CMS structures instead. This currently only affects the output format of the CMS structure, if no CMS structure is being output (for example with -verify or -decrypt) this option has no effect.

-stream -indef -noindef

The -stream and -indef options are equivalent and enable streaming I/O for encoding operations. This permits single pass processing of data without the need to hold the entire contents in memory, potentially supporting very large files. Streaming is automatically set for S/MIME signing with detached data if the output format is SMIME it is currently off by default for all other operations.

-noindef

Disable streaming I/O where it would produce and indefinite length constructed encoding. This option currently has no effect. In future streaming will be enabled by default on all relevant operations and this option will disable it.

-content filename

This specifies a file containing the detached content, this is only useful with the -verify command. This is only usable if the CMS structure is using the detached signature form where the content is not included. This option will override any content if the input format is S/MIME and it uses the multipart/signed MIME content type.

-text

This option adds plain text (text/plain) MIME headers to the supplied message if encrypting or signing. If decrypting or verifying it strips off text headers: if the decrypted or verified message is not of MIME type text/plain then an error occurs.

-noout

For the -cmsout operation do not output the parsed CMS structure. This is useful when combined with the -print option or if the syntax of the CMS structure is being checked.

-print

For the -cmsout operation print out all fields of the CMS structure. This is mainly useful for testing purposes.

-CAfile file

A file containing trusted CA certificates, only used with -verify.

-CApath dir

A directory containing trusted CA certificates, only used with -verify. This directory must be a standard certificate directory: that is a hash of each subject name (using x509 -hash) should be linked to each certificate.

-no-CAfile

Do not load the trusted CA certificates from the default file location

-no-CApath

Do not load the trusted CA certificates from the default directory location

-md digest

Digest algorithm to use when signing or resigning. If not present then the default digest algorithm for the signing key will be used (usually SHA1).

-cipher

The encryption algorithm to use. For example triple DES (168 bits) - -des3 or 256 bit AES - -aes256. Any standard algorithm name (as used by the EVP_get_cipherbyname() function) can also be used preceded by a dash, for example -aes-128-cbc. See enc(1) for a list of ciphers supported by your version of OpenSSL.

If not specified triple DES is used. Only used with -encrypt and -EncryptedData_create commands.

-nointern

When verifying a message normally certificates (if any) included in the message are searched for the signing certificate. With this option only the certificates specified in the -certfile option are used. The supplied certificates can still be used as untrusted CAs however.

-noverify

Do not verify the signers certificate of a signed message.

-nocerts

When signing a message the signer's certificate is normally included with this option it is excluded. This will reduce the size of the signed message but the verifier must have a copy of the signers certificate available locally (passed using the -certfile option for example).

-noattr

Normally when a message is signed a set of attributes are included which include the signing time and supported symmetric algorithms. With this option they are not included.

-nosmimecap

Exclude the list of supported algorithms from signed attributes, other options such as signing time and content type are still included.

-binary

Normally the input message is converted to "canonical" format which is effectively using CR and LF as end of line: as required by the S/MIME specification. When this option is present no translation occurs. This is useful when handling binary data which may not be in MIME format.

-crlfeol

Normally the output file uses a single LF as end of line. When this option is present CRLF is used instead.

-asciicrlf

When signing use ASCII CRLF format canonicalisation. This strips trailing whitespace from all lines, deletes trailing blank lines at EOF and sets the encapsulated content type. This option is normally used with detached content and an output signature format of DER. This option is not normally needed when verifying as it is enabled automatically if the encapsulated content format is detected.

-nodetach

When signing a message use opaque signing: this form is more resistant to translation by mail relays but it cannot be read by mail agents that do not support S/MIME. Without this option cleartext signing with the MIME type multipart/signed is used.

-certfile file

Allows additional certificates to be specified. When signing these will be included with the message. When verifying these will be searched for the signers certificates. The certificates should be in PEM format.

-certsout file

Any certificates contained in the message are written to file.

-signer file

A signing certificate when signing or resigning a message, this option can be used multiple times if more than one signer is required. If a message is being verified then the signers certificates will be written to this file if the verification was successful.

-recip file

When decrypting a message this specifies the recipients certificate. The certificate must match one of the recipients of the message or an error occurs.

When encrypting a message this option may be used multiple times to specify each recipient. This form must be used if customised parameters are required (for example to specify RSA-OAEP).

Only certificates carrying RSA, Diffie-Hellman or EC keys are supported by this option.

-keyid

Use subject key identifier to identify certificates instead of issuer name and serial number. The supplied certificate must include a subject key identifier extension. Supported by -sign and -encrypt options.

-receipt_request_all, -receipt_request_first

For -sign option include a signed receipt request. Indicate requests should be provided by all recipient or first tier recipients (those mailed directly and not from a mailing list). Ignored it -receipt_request_from is included.

-receipt_request_from emailaddress

For -sign option include a signed receipt request. Add an explicit email address where receipts should be supplied.

-receipt_request_to emailaddress

Add an explicit email address where signed receipts should be sent to. This option must but supplied if a signed receipt it requested.

-receipt_request_print

For the -verify operation print out the contents of any signed receipt requests.

-secretkey key

Specify symmetric key to use. The key must be supplied in hex format and be consistent with the algorithm used. Supported by the -EncryptedData_encrypt -EncryptedData_decrypt, -encrypt and -decrypt options. When used with -encrypt or -decrypt the supplied key is used to wrap or unwrap the content encryption key using an AES key in the KEKRecipientInfo type.

-secretkeyid id

The key identifier for the supplied symmetric key for KEKRecipientInfo type. This option must be present if the -secretkey option is used with -encrypt. With -decrypt operations the id is used to locate the relevant key if it is not supplied then an attempt is used to decrypt any KEKRecipientInfo structures.

-econtent_type type

Set the encapsulated content type to type if not supplied the Data type is used. The type argument can be any valid OID name in either text or numerical format.

-inkey file

The private key to use when signing or decrypting. This must match the corresponding certificate. If this option is not specified then the private key must be included in the certificate file specified with the -recip or -signer file. When signing this option can be used multiple times to specify successive keys.

-keyopt name:opt

For signing and encryption this option can be used multiple times to set customised parameters for the preceding key or certificate. It can currently be used to set RSA-PSS for signing, RSA-OAEP for encryption or to modify default parameters for ECDH.

-passin arg

The private key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

cert.pem...

One or more certificates of message recipients: used when encrypting a message.

-to, -from, -subject

The relevant mail headers. These are included outside the signed portion of a message so they may be included manually. If signing then many S/MIME mail clients check the signers certificate's email address matches that specified in the From: address.

-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict

Set various certificate chain validation options. See the verify(1) manual page for details.

NOTES

The MIME message must be sent without any blank lines between the headers and the output. Some mail programs will automatically add a blank line. Piping the mail directly to sendmail is one way to achieve the correct format.

The supplied message to be signed or encrypted must include the necessary MIME headers or many S/MIME clients won't display it properly (if at all). You can use the -text option to automatically add plain text headers.

A "signed and encrypted" message is one where a signed message is then encrypted. This can be produced by encrypting an already signed message: see the examples section.

This version of the program only allows one signer per message but it will verify multiple signers on received messages. Some S/MIME clients choke if a message contains multiple signers. It is possible to sign messages "in parallel" by signing an already signed message.

The options -encrypt and -decrypt reflect common usage in S/MIME clients. Strictly speaking these process CMS enveloped data: CMS encrypted data is used for other purposes.

The -resign option uses an existing message digest when adding a new signer. This means that attributes must be present in at least one existing signer using the same message digest or this operation will fail.

The -stream and -indef options enable streaming I/O support. As a result the encoding is BER using indefinite length constructed encoding and no longer DER. Streaming is supported for the -encrypt operation and the -sign operation if the content is not detached.

Streaming is always used for the -sign operation with detached data but since the content is no longer part of the CMS structure the encoding remains DER.

If the -decrypt option is used without a recipient certificate then an attempt is made to locate the recipient by trying each potential recipient in turn using the supplied private key. To thwart the MMA attack (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) all recipients are tried whether they succeed or not and if no recipients match the message is "decrypted" using a random key which will typically output garbage. The -debug_decrypt option can be used to disable the MMA attack protection and return an error if no recipient can be found: this option should be used with caution. For a fuller description see CMS_decrypt(3)).

EXIT CODES

0

The operation was completely successfully.

1

An error occurred parsing the command options.

2

One of the input files could not be read.

3

An error occurred creating the CMS file or when reading the MIME message.

4

An error occurred decrypting or verifying the message.

5

The message was verified correctly but an error occurred writing out the signers certificates.

COMPATIBILITY WITH PKCS#7 format.

The smime utility can only process the older PKCS#7 format. The cms utility supports Cryptographic Message Syntax format. Use of some features will result in messages which cannot be processed by applications which only support the older format. These are detailed below.

The use of the -keyid option with -sign or -encrypt.

The -outform PEM option uses different headers.

The -compress option.

The -secretkey option when used with -encrypt.

The use of PSS with -sign.

The use of OAEP or non-RSA keys with -encrypt.

Additionally the -EncryptedData_create and -data_create type cannot be processed by the older smime command.

EXAMPLES

Create a cleartext signed message:

 openssl cms -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem

Create an opaque signed message

 openssl cms -sign -in message.txt -text -out mail.msg -nodetach \
        -signer mycert.pem

Create a signed message, include some additional certificates and read the private key from another file:

 openssl cms -sign -in in.txt -text -out mail.msg \
        -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem

Create a signed message with two signers, use key identifier:

 openssl cms -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem -signer othercert.pem -keyid

Send a signed message under Unix directly to sendmail, including headers:

 openssl cms -sign -in in.txt -text -signer mycert.pem \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed message" | sendmail someone@somewhere

Verify a message and extract the signer's certificate if successful:

 openssl cms -verify -in mail.msg -signer user.pem -out signedtext.txt

Send encrypted mail using triple DES:

 openssl cms -encrypt -in in.txt -from steve@openssl.org \
        -to someone@somewhere -subject "Encrypted message" \
        -des3 user.pem -out mail.msg

Sign and encrypt mail:

 openssl cms -sign -in ml.txt -signer my.pem -text \
        | openssl cms -encrypt -out mail.msg \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed and Encrypted message" -des3 user.pem

Note: the encryption command does not include the -text option because the message being encrypted already has MIME headers.

Decrypt mail:

 openssl cms -decrypt -in mail.msg -recip mycert.pem -inkey key.pem

The output from Netscape form signing is a PKCS#7 structure with the detached signature format. You can use this program to verify the signature by line wrapping the base64 encoded structure and surrounding it with:

 -----BEGIN PKCS7-----
 -----END PKCS7-----

and using the command,

 openssl cms -verify -inform PEM -in signature.pem -content content.txt

alternatively you can base64 decode the signature and use

 openssl cms -verify -inform DER -in signature.der -content content.txt

Create an encrypted message using 128 bit Camellia:

 openssl cms -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem

Add a signer to an existing message:

 openssl cms -resign -in mail.msg -signer newsign.pem -out mail2.msg

Sign mail using RSA-PSS:

 openssl cms -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem -keyopt rsa_padding_mode:pss

Create encrypted mail using RSA-OAEP:

 openssl cms -encrypt -in plain.txt -out mail.msg \
        -recip cert.pem -keyopt rsa_padding_mode:oaep

Use SHA256 KDF with an ECDH certificate:

 openssl cms -encrypt -in plain.txt -out mail.msg \
        -recip ecdhcert.pem -keyopt ecdh_kdf_md:sha256

BUGS

The MIME parser isn't very clever: it seems to handle most messages that I've thrown at it but it may choke on others.

The code currently will only write out the signer's certificate to a file: if the signer has a separate encryption certificate this must be manually extracted. There should be some heuristic that determines the correct encryption certificate.

Ideally a database should be maintained of a certificates for each email address.

The code doesn't currently take note of the permitted symmetric encryption algorithms as supplied in the SMIMECapabilities signed attribute. this means the user has to manually include the correct encryption algorithm. It should store the list of permitted ciphers in a database and only use those.

No revocation checking is done on the signer's certificate.

The -binary option does not work correctly when processing text input which (contrary to the S/MIME specification) uses LF rather than CRLF line endings.

HISTORY

The use of multiple -signer options and the -resign command were first added in OpenSSL 1.0.0.

The keyopt option was added in OpenSSL 1.0.2.

Support for RSA-OAEP and RSA-PSS was added in OpenSSL 1.0.2.

The use of non-RSA keys with -encrypt and -decrypt was added in OpenSSL 1.0.2.

The -no_alt_chains option was added in OpenSSL 1.0.2b.

COPYRIGHT

Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!,~~ dsaparam.htmlnu[ dsaparam

NAME

openssl-dsaparam, dsaparam - DSA parameter manipulation and generation

SYNOPSIS

openssl dsaparam [-help] [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C] [-rand file...] [-writerand file] [-genkey] [-engine id] [numbits]

DESCRIPTION

This command is used to manipulate or generate DSA parameter files.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN1 DER encoded form compatible with RFC2459 (PKIX) DSS-Parms that is a SEQUENCE consisting of p, q and g respectively. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read parameters from or standard input if this option is not specified. If the numbits parameter is included then this option will be ignored.

-out filename

This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should not be the same as the input filename.

-noout

This option inhibits the output of the encoded version of the parameters.

-text

This option prints out the DSA parameters in human readable form.

-C

This option converts the parameters into C code. The parameters can then be loaded by calling the get_dsaXXX() function.

-genkey

This option will generate a DSA either using the specified or generated parameters.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

numbits

This option specifies that a parameter set should be generated of size numbits. It must be the last option. If this option is included then the input file (if any) is ignored.

-engine id

Specifying an engine (by its unique id string) will cause dsaparam to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

NOTES

PEM format DSA parameters use the header and footer lines:

 -----BEGIN DSA PARAMETERS-----
 -----END DSA PARAMETERS-----

DSA parameter generation is a slow process and as a result the same set of DSA parameters is often used to generate several distinct keys.

SEE ALSO

gendsa(1), dsa(1), genrsa(1), rsa(1)

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!^ nseq.htmlnu[ nseq

NAME

openssl-nseq, nseq - create or examine a Netscape certificate sequence

SYNOPSIS

openssl nseq [-help] [-in filename] [-out filename] [-toseq]

DESCRIPTION

The nseq command takes a file containing a Netscape certificate sequence and prints out the certificates contained in it or takes a file of certificates and converts it into a Netscape certificate sequence.

OPTIONS

-help

Print out a usage message.

-in filename

This specifies the input filename to read or standard input if this option is not specified.

-out filename

Specifies the output filename or standard output by default.

-toseq

Normally a Netscape certificate sequence will be input and the output is the certificates contained in it. With the -toseq option the situation is reversed: a Netscape certificate sequence is created from a file of certificates.

EXAMPLES

Output the certificates in a Netscape certificate sequence

 openssl nseq -in nseq.pem -out certs.pem

Create a Netscape certificate sequence

 openssl nseq -in certs.pem -toseq -out nseq.pem

NOTES

The PEM encoded form uses the same headers and footers as a certificate:

 -----BEGIN CERTIFICATE-----
 -----END CERTIFICATE-----

A Netscape certificate sequence is a Netscape specific format that can be sent to browsers as an alternative to the standard PKCS#7 format when several certificates are sent to the browser: for example during certificate enrollment. It is used by Netscape certificate server for example.

BUGS

This program needs a few more options: like allowing DER or PEM input and output files and allowing multiple certificate files to be used.

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!+Vy gendsa.htmlnu[ gendsa

NAME

openssl-gendsa, gendsa - generate a DSA private key from a set of parameters

SYNOPSIS

openssl gendsa [-help] [-out filename] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-rand file...] [-writerand file] [-engine id] [paramfile]

DESCRIPTION

The gendsa command generates a DSA private key from a DSA parameter file (which will be typically generated by the openssl dsaparam command).

OPTIONS

-help

Print out a usage message.

-out filename

Output the key to the specified file. If this argument is not specified then standard output is used.

-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

These options encrypt the private key with specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified no encryption is used.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-engine id

Specifying an engine (by its unique id string) will cause gendsa to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

paramfile

This option specifies the DSA parameter file to use. The parameters in this file determine the size of the private key. DSA parameters can be generated and examined using the openssl dsaparam command.

NOTES

DSA key generation is little more than random number generation so it is much quicker that RSA key generation for example.

SEE ALSO

dsaparam(1), dsa(1), genrsa(1), rsa(1)

COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!w" sess_id.htmlnu[ sess_id

NAME

openssl-sess_id, sess_id - SSL/TLS session handling utility

SYNOPSIS

openssl sess_id [-help] [-inform PEM|DER] [-outform PEM|DER|NSS] [-in filename] [-out filename] [-text] [-noout] [-context ID]

DESCRIPTION

The sess_id process the encoded version of the SSL session structure and optionally prints out SSL session details (for example the SSL session master key) in human readable format. Since this is a diagnostic tool that needs some knowledge of the SSL protocol to use properly, most users will not need to use it.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN1 DER encoded format containing session details. The precise format can vary from one version to the next. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines.

-outform DER|PEM|NSS

This specifies the output format. The PEM and DER options have the same meaning and default as the -inform option. The NSS option outputs the session id and the master key in NSS keylog format.

-in filename

This specifies the input filename to read session information from or standard input by default.

-out filename

This specifies the output filename to write session information to or standard output if this option is not specified.

-text

Prints out the various public or private key components in plain text in addition to the encoded version.

-cert

If a certificate is present in the session it will be output using this option, if the -text option is also present then it will be printed out in text form.

-noout

This option prevents output of the encoded version of the session.

-context ID

This option can set the session id so the output session information uses the supplied ID. The ID can be any string of characters. This option won't normally be used.

OUTPUT

Typical output:

 SSL-Session:
     Protocol  : TLSv1
     Cipher    : 0016
     Session-ID: 871E62626C554CE95488823752CBD5F3673A3EF3DCE9C67BD916C809914B40ED
     Session-ID-ctx: 01000000
     Master-Key: A7CEFC571974BE02CAC305269DC59F76EA9F0B180CB6642697A68251F2D2BB57E51DBBB4C7885573192AE9AEE220FACD
     Key-Arg   : None
     Start Time: 948459261
     Timeout   : 300 (sec)
     Verify return code 0 (ok)

These are described below in more detail.

Protocol

This is the protocol in use TLSv1.3, TLSv1.2, TLSv1.1, TLSv1 or SSLv3.

Cipher

The cipher used this is the actual raw SSL or TLS cipher code, see the SSL or TLS specifications for more information.

Session-ID

The SSL session ID in hex format.

Session-ID-ctx

The session ID context in hex format.

Master-Key

This is the SSL session master key.

Start Time

This is the session start time represented as an integer in standard Unix format.

Timeout

The timeout in seconds.

Verify return code

This is the return code when an SSL client certificate is verified.

NOTES

The PEM encoded session format uses the header and footer lines:

 -----BEGIN SSL SESSION PARAMETERS-----
 -----END SSL SESSION PARAMETERS-----

Since the SSL session output contains the master key it is possible to read the contents of an encrypted session using this information. Therefore, appropriate security precautions should be taken if the information is being output by a "real" application. This is however strongly discouraged and should only be used for debugging purposes.

BUGS

The cipher and start time should be printed out in human readable form.

SEE ALSO

ciphers(1), s_server(1)

COPYRIGHT

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!us9&IBIBenc.htmlnu[ enc

NAME

openssl-enc, enc - symmetric cipher routines

SYNOPSIS

openssl enc -cipher [-help] [-list] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-iter count] [-pbkdf2] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-rand file...] [-writerand file] [-engine id]

openssl [cipher] [...]

DESCRIPTION

The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.

OPTIONS

-help

Print out a usage message.

-list

List all supported ciphers.

-ciphers

Alias of -list to display all supported ciphers.

-in filename

The input filename, standard input by default.

-out filename

The output filename, standard output by default.

-pass arg

The password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-e

Encrypt the input data: this is the default.

-d

Decrypt the input data.

-a

Base64 process the data. This means that if encryption is taking place the data is base64 encoded after encryption. If decryption is set then the input data is base64 decoded before being decrypted.

-base64

Same as -a

-A

If the -a option is set then base64 process the data on one line.

-k password

The password to derive the key from. This is for compatibility with previous versions of OpenSSL. Superseded by the -pass argument.

-kfile filename

Read the password to derive the key from the first line of filename. This is for compatibility with previous versions of OpenSSL. Superseded by the -pass argument.

-md digest

Use the specified digest to create the key from the passphrase. The default algorithm is sha-256.

-iter count

Use a given number of iterations on the password in deriving the encryption key. High values increase the time required to brute-force the resulting file. This option enables the use of PBKDF2 algorithm to derive the key.

-pbkdf2

Use PBKDF2 algorithm with default iteration count unless otherwise specified.

-nosalt

Don't use a salt in the key derivation routines. This option SHOULD NOT be used except for test purposes or compatibility with ancient versions of OpenSSL.

-salt

Use salt (randomly generated or provide with -S option) when encrypting, this is the default.

-S salt

The actual salt to use: this must be represented as a string of hex digits.

-K key

The actual key to use: this must be represented as a string comprised only of hex digits. If only the key is specified, the IV must additionally specified using the -iv option. When both a key and a password are specified, the key given with the -K option will be used and the IV generated from the password will be taken. It does not make much sense to specify both key and password.

-iv IV

The actual IV to use: this must be represented as a string comprised only of hex digits. When only the key is specified using the -K option, the IV must explicitly be defined. When a password is being specified using one of the other options, the IV is generated from this password.

-p

Print out the key and IV used.

-P

Print out the key and IV used then immediately exit: don't do any encryption or decryption.

-bufsize number

Set the buffer size for I/O.

-nopad

Disable standard block padding.

-debug

Debug the BIOs used for I/O.

-z

Compress or decompress encrypted data using zlib after encryption or before decryption. This option exists only if OpenSSL was compiled with the zlib or zlib-dynamic option.

-none

Use NULL cipher (no encryption or decryption of input).

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

NOTES

The program can be called either as openssl cipher or openssl enc -cipher. The first form doesn't work with engine-provided ciphers, because this form is processed before the configuration file is read and any ENGINEs loaded. Use the list command to get a list of supported ciphers.

Engines which provide entirely new encryption algorithms (such as the ccgost engine which provides gost89 algorithm) should be configured in the configuration file. Engines specified on the command line using -engine options can only be used for hardware-assisted implementations of ciphers which are supported by the OpenSSL core or another engine specified in the configuration file.

When the enc command lists supported ciphers, ciphers provided by engines, specified in the configuration files are listed too.

A password will be prompted for to derive the key and IV if necessary.

The -salt option should ALWAYS be used if the key is being derived from a password unless you want compatibility with previous versions of OpenSSL.

Without the -salt option it is possible to perform efficient dictionary attacks on the password and to attack stream cipher encrypted data. The reason for this is that without the salt the same password always generates the same encryption key. When the salt is being used the first eight bytes of the encrypted data are reserved for the salt: it is generated at random when encrypting a file and read from the encrypted file when it is decrypted.

Some of the ciphers do not have large keys and others have security implications if not used correctly. A beginner is advised to just use a strong block cipher, such as AES, in CBC mode.

All the block ciphers normally use PKCS#5 padding, also known as standard block padding. This allows a rudimentary integrity or password check to be performed. However, since the chance of random data passing the test is better than 1 in 256 it isn't a very good test.

If padding is disabled then the input data must be a multiple of the cipher block length.

All RC2 ciphers have the same key and effective key length.

Blowfish and RC5 algorithms use a 128 bit key.

SUPPORTED CIPHERS

Note that some of these ciphers can be disabled at compile time and some are available only if an appropriate engine is configured in the configuration file. The output of the enc command run with the -ciphers option (that is openssl enc -ciphers) produces a list of ciphers, supported by your version of OpenSSL, including ones provided by configured engines.

The enc program does not support authenticated encryption modes like CCM and GCM, and will not support such modes in the future. The enc interface by necessity must begin streaming output (e.g., to standard output when -out is not used) before the authentication tag could be validated, leading to the usage of enc in pipelines that begin processing untrusted data and are not capable of rolling back upon authentication failure. The AEAD modes currently in common use also suffer from catastrophic failure of confidentiality and/or integrity upon reuse of key/iv/nonce, and since enc places the entire burden of key/iv/nonce management upon the user, the risk of exposing AEAD modes is too great to allow. These key/iv/nonce management issues also affect other modes currently exposed in enc, but the failure modes are less extreme in these cases, and the functionality cannot be removed with a stable release branch. For bulk encryption of data, whether using authenticated encryption modes or other modes, cms(1) is recommended, as it provides a standard data format and performs the needed key/iv/nonce management.

 base64             Base 64

 bf-cbc             Blowfish in CBC mode
 bf                 Alias for bf-cbc
 blowfish           Alias for bf-cbc
 bf-cfb             Blowfish in CFB mode
 bf-ecb             Blowfish in ECB mode
 bf-ofb             Blowfish in OFB mode

 cast-cbc           CAST in CBC mode
 cast               Alias for cast-cbc
 cast5-cbc          CAST5 in CBC mode
 cast5-cfb          CAST5 in CFB mode
 cast5-ecb          CAST5 in ECB mode
 cast5-ofb          CAST5 in OFB mode

 chacha20           ChaCha20 algorithm

 des-cbc            DES in CBC mode
 des                Alias for des-cbc
 des-cfb            DES in CFB mode
 des-ofb            DES in OFB mode
 des-ecb            DES in ECB mode

 des-ede-cbc        Two key triple DES EDE in CBC mode
 des-ede            Two key triple DES EDE in ECB mode
 des-ede-cfb        Two key triple DES EDE in CFB mode
 des-ede-ofb        Two key triple DES EDE in OFB mode

 des-ede3-cbc       Three key triple DES EDE in CBC mode
 des-ede3           Three key triple DES EDE in ECB mode
 des3               Alias for des-ede3-cbc
 des-ede3-cfb       Three key triple DES EDE CFB mode
 des-ede3-ofb       Three key triple DES EDE in OFB mode

 desx               DESX algorithm.

 gost89             GOST 28147-89 in CFB mode (provided by ccgost engine)
 gost89-cnt        `GOST 28147-89 in CNT mode (provided by ccgost engine)

 idea-cbc           IDEA algorithm in CBC mode
 idea               same as idea-cbc
 idea-cfb           IDEA in CFB mode
 idea-ecb           IDEA in ECB mode
 idea-ofb           IDEA in OFB mode

 rc2-cbc            128 bit RC2 in CBC mode
 rc2                Alias for rc2-cbc
 rc2-cfb            128 bit RC2 in CFB mode
 rc2-ecb            128 bit RC2 in ECB mode
 rc2-ofb            128 bit RC2 in OFB mode
 rc2-64-cbc         64 bit RC2 in CBC mode
 rc2-40-cbc         40 bit RC2 in CBC mode

 rc4                128 bit RC4
 rc4-64             64 bit RC4
 rc4-40             40 bit RC4

 rc5-cbc            RC5 cipher in CBC mode
 rc5                Alias for rc5-cbc
 rc5-cfb            RC5 cipher in CFB mode
 rc5-ecb            RC5 cipher in ECB mode
 rc5-ofb            RC5 cipher in OFB mode

 seed-cbc           SEED cipher in CBC mode
 seed               Alias for seed-cbc
 seed-cfb           SEED cipher in CFB mode
 seed-ecb           SEED cipher in ECB mode
 seed-ofb           SEED cipher in OFB mode

 sm4-cbc            SM4 cipher in CBC mode
 sm4                Alias for sm4-cbc
 sm4-cfb            SM4 cipher in CFB mode
 sm4-ctr            SM4 cipher in CTR mode
 sm4-ecb            SM4 cipher in ECB mode
 sm4-ofb            SM4 cipher in OFB mode

 aes-[128|192|256]-cbc  128/192/256 bit AES in CBC mode
 aes[128|192|256]       Alias for aes-[128|192|256]-cbc
 aes-[128|192|256]-cfb  128/192/256 bit AES in 128 bit CFB mode
 aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode
 aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode
 aes-[128|192|256]-ctr  128/192/256 bit AES in CTR mode
 aes-[128|192|256]-ecb  128/192/256 bit AES in ECB mode
 aes-[128|192|256]-ofb  128/192/256 bit AES in OFB mode

 aria-[128|192|256]-cbc  128/192/256 bit ARIA in CBC mode
 aria[128|192|256]       Alias for aria-[128|192|256]-cbc
 aria-[128|192|256]-cfb  128/192/256 bit ARIA in 128 bit CFB mode
 aria-[128|192|256]-cfb1 128/192/256 bit ARIA in 1 bit CFB mode
 aria-[128|192|256]-cfb8 128/192/256 bit ARIA in 8 bit CFB mode
 aria-[128|192|256]-ctr  128/192/256 bit ARIA in CTR mode
 aria-[128|192|256]-ecb  128/192/256 bit ARIA in ECB mode
 aria-[128|192|256]-ofb  128/192/256 bit ARIA in OFB mode

 camellia-[128|192|256]-cbc  128/192/256 bit Camellia in CBC mode
 camellia[128|192|256]       Alias for camellia-[128|192|256]-cbc
 camellia-[128|192|256]-cfb  128/192/256 bit Camellia in 128 bit CFB mode
 camellia-[128|192|256]-cfb1 128/192/256 bit Camellia in 1 bit CFB mode
 camellia-[128|192|256]-cfb8 128/192/256 bit Camellia in 8 bit CFB mode
 camellia-[128|192|256]-ctr  128/192/256 bit Camellia in CTR mode
 camellia-[128|192|256]-ecb  128/192/256 bit Camellia in ECB mode
 camellia-[128|192|256]-ofb  128/192/256 bit Camellia in OFB mode

EXAMPLES

Just base64 encode a binary file:

 openssl base64 -in file.bin -out file.b64

Decode the same file

 openssl base64 -d -in file.b64 -out file.bin

Encrypt a file using AES-128 using a prompted password and PBKDF2 key derivation:

 openssl enc -aes128 -pbkdf2 -in file.txt -out file.aes128

Decrypt a file using a supplied password:

 openssl enc -aes128 -pbkdf2 -d -in file.aes128 -out file.txt \
    -pass pass:<password>

Encrypt a file then base64 encode it (so it can be sent via mail for example) using AES-256 in CTR mode and PBKDF2 key derivation:

 openssl enc -aes-256-ctr -pbkdf2 -a -in file.txt -out file.aes256

Base64 decode a file then decrypt it using a password supplied in a file:

 openssl enc -aes-256-ctr -pbkdf2 -d -a -in file.aes256 -out file.txt \
    -pass file:<passfile>

BUGS

The -A option when used with large files doesn't work properly.

The enc program only supports a fixed number of algorithms with certain parameters. So if, for example, you want to use RC2 with a 76 bit key or RC4 with an 84 bit key you can't use this program.

HISTORY

The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0.

The -list option was added in OpenSSL 1.1.1e.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!QMM ciphers.htmlnu[ ciphers

NAME

openssl-ciphers, ciphers - SSL cipher display and cipher list tool

SYNOPSIS

openssl ciphers [-help] [-s] [-v] [-V] [-ssl3] [-tls1] [-tls1_1] [-tls1_2] [-tls1_3] [-s] [-psk] [-srp] [-stdname] [-convert name] [-ciphersuites val] [cipherlist]

DESCRIPTION

The ciphers command converts textual OpenSSL cipher lists into ordered SSL cipher preference lists. It can be used as a test tool to determine the appropriate cipherlist.

OPTIONS

-help

Print a usage message.

-s

Only list supported ciphers: those consistent with the security level, and minimum and maximum protocol version. This is closer to the actual cipher list an application will support.

PSK and SRP ciphers are not enabled by default: they require -psk or -srp to enable them.

It also does not change the default list of supported signature algorithms.

On a server the list of supported ciphers might also exclude other ciphers depending on the configured certificates and presence of DH parameters.

If this option is not used then all ciphers that match the cipherlist will be listed.

-psk

When combined with -s includes cipher suites which require PSK.

-srp

When combined with -s includes cipher suites which require SRP.

-v

Verbose output: For each cipher suite, list details as provided by SSL_CIPHER_description(3).

-V

Like -v, but include the official cipher suite values in hex.

-tls1_3, -tls1_2, -tls1_1, -tls1, -ssl3

In combination with the -s option, list the ciphers which could be used if the specified protocol were negotiated. Note that not all protocols and flags may be available, depending on how OpenSSL was built.

-stdname

Precede each cipher suite by its standard name.

-convert name

Convert a standard cipher name to its OpenSSL name.

-ciphersuites val

Sets the list of TLSv1.3 ciphersuites. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. The format for this list is a simple colon (":") separated list of TLSv1.3 ciphersuite names. By default this value is:

 TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
cipherlist

A cipher list of TLSv1.2 and below ciphersuites to convert to a cipher preference list. This list will be combined with any TLSv1.3 ciphersuites that have been configured. If it is not included then the default cipher list will be used. The format is described below.

CIPHER LIST FORMAT

The cipher list consists of one or more cipher strings separated by colons. Commas or spaces are also acceptable separators but colons are normally used.

The actual cipher string can take several different forms.

It can consist of a single cipher suite such as RC4-SHA.

It can represent a list of cipher suites containing a certain algorithm, or cipher suites of a certain type. For example SHA1 represents all ciphers suites using the digest algorithm SHA1 and SSLv3 represents all SSL v3 algorithms.

Lists of cipher suites can be combined in a single cipher string using the + character. This is used as a logical and operation. For example SHA1+DES represents all cipher suites containing the SHA1 and the DES algorithms.

Each cipher string can be optionally preceded by the characters !, - or +.

If ! is used then the ciphers are permanently deleted from the list. The ciphers deleted can never reappear in the list even if they are explicitly stated.

If - is used then the ciphers are deleted from the list, but some or all of the ciphers can be added again by later options.

If + is used then the ciphers are moved to the end of the list. This option doesn't add any new ciphers it just moves matching existing ones.

If none of these characters is present then the string is just interpreted as a list of ciphers to be appended to the current preference list. If the list includes any ciphers already present they will be ignored: that is they will not moved to the end of the list.

The cipher string @STRENGTH can be used at any point to sort the current cipher list in order of encryption algorithm key length.

The cipher string @SECLEVEL=n can be used at any point to set the security level to n, which should be a number between zero and five, inclusive. See SSL_CTX_set_security_level for a description of what each level means.

The cipher list can be prefixed with the DEFAULT keyword, which enables the default cipher list as defined below. Unlike cipher strings, this prefix may not be combined with other strings using + character. For example, DEFAULT+DES is not valid.

The content of the default list is determined at compile time and normally corresponds to ALL:!COMPLEMENTOFDEFAULT:!eNULL.

CIPHER STRINGS

The following is a list of all permitted cipher strings and their meanings.

COMPLEMENTOFDEFAULT

The ciphers included in ALL, but not enabled by default. Currently this includes all RC4 and anonymous ciphers. Note that this rule does not cover eNULL, which is not included by ALL (use COMPLEMENTOFALL if necessary). Note that RC4 based cipher suites are not built into OpenSSL by default (see the enable-weak-ssl-ciphers option to Configure).

ALL

All cipher suites except the eNULL ciphers (which must be explicitly enabled if needed). As of OpenSSL 1.0.0, the ALL cipher suites are sensibly ordered by default.

COMPLEMENTOFALL

The cipher suites not enabled by ALL, currently eNULL.

HIGH

"High" encryption cipher suites. This currently means those with key lengths larger than 128 bits, and some cipher suites with 128-bit keys.

MEDIUM

"Medium" encryption cipher suites, currently some of those using 128 bit encryption.

LOW

"Low" encryption cipher suites, currently those using 64 or 56 bit encryption algorithms but excluding export cipher suites. All these cipher suites have been removed as of OpenSSL 1.1.0.

eNULL, NULL

The "NULL" ciphers that is those offering no encryption. Because these offer no encryption at all and are a security risk they are not enabled via either the DEFAULT or ALL cipher strings. Be careful when building cipherlists out of lower-level primitives such as kRSA or aECDSA as these do overlap with the eNULL ciphers. When in doubt, include !eNULL in your cipherlist.

aNULL

The cipher suites offering no authentication. This is currently the anonymous DH algorithms and anonymous ECDH algorithms. These cipher suites are vulnerable to "man in the middle" attacks and so their use is discouraged. These are excluded from the DEFAULT ciphers, but included in the ALL ciphers. Be careful when building cipherlists out of lower-level primitives such as kDHE or AES as these do overlap with the aNULL ciphers. When in doubt, include !aNULL in your cipherlist.

kRSA, aRSA, RSA

Cipher suites using RSA key exchange or authentication. RSA is an alias for kRSA.

kDHr, kDHd, kDH

Cipher suites using static DH key agreement and DH certificates signed by CAs with RSA and DSS keys or either respectively. All these cipher suites have been removed in OpenSSL 1.1.0.

kDHE, kEDH, DH

Cipher suites using ephemeral DH key agreement, including anonymous cipher suites.

DHE, EDH

Cipher suites using authenticated ephemeral DH key agreement.

ADH

Anonymous DH cipher suites, note that this does not include anonymous Elliptic Curve DH (ECDH) cipher suites.

kEECDH, kECDHE, ECDH

Cipher suites using ephemeral ECDH key agreement, including anonymous cipher suites.

ECDHE, EECDH

Cipher suites using authenticated ephemeral ECDH key agreement.

AECDH

Anonymous Elliptic Curve Diffie-Hellman cipher suites.

aDSS, DSS

Cipher suites using DSS authentication, i.e. the certificates carry DSS keys.

aDH

Cipher suites effectively using DH authentication, i.e. the certificates carry DH keys. All these cipher suites have been removed in OpenSSL 1.1.0.

aECDSA, ECDSA

Cipher suites using ECDSA authentication, i.e. the certificates carry ECDSA keys.

TLSv1.2, TLSv1.0, SSLv3

Lists cipher suites which are only supported in at least TLS v1.2, TLS v1.0 or SSL v3.0 respectively. Note: there are no cipher suites specific to TLS v1.1. Since this is only the minimum version, if, for example, TLSv1.0 is negotiated then both TLSv1.0 and SSLv3.0 cipher suites are available.

Note: these cipher strings do not change the negotiated version of SSL or TLS, they only affect the list of available cipher suites.

AES128, AES256, AES

cipher suites using 128 bit AES, 256 bit AES or either 128 or 256 bit AES.

AESGCM

AES in Galois Counter Mode (GCM): these cipher suites are only supported in TLS v1.2.

AESCCM, AESCCM8

AES in Cipher Block Chaining - Message Authentication Mode (CCM): these cipher suites are only supported in TLS v1.2. AESCCM references CCM cipher suites using both 16 and 8 octet Integrity Check Value (ICV) while AESCCM8 only references 8 octet ICV.

ARIA128, ARIA256, ARIA

Cipher suites using 128 bit ARIA, 256 bit ARIA or either 128 or 256 bit ARIA.

CAMELLIA128, CAMELLIA256, CAMELLIA

Cipher suites using 128 bit CAMELLIA, 256 bit CAMELLIA or either 128 or 256 bit CAMELLIA.

CHACHA20

Cipher suites using ChaCha20.

3DES

Cipher suites using triple DES.

DES

Cipher suites using DES (not triple DES). All these cipher suites have been removed in OpenSSL 1.1.0.

RC4

Cipher suites using RC4.

RC2

Cipher suites using RC2.

IDEA

Cipher suites using IDEA.

SEED

Cipher suites using SEED.

MD5

Cipher suites using MD5.

SHA1, SHA

Cipher suites using SHA1.

SHA256, SHA384

Cipher suites using SHA256 or SHA384.

aGOST

Cipher suites using GOST R 34.10 (either 2001 or 94) for authentication (needs an engine supporting GOST algorithms).

aGOST01

Cipher suites using GOST R 34.10-2001 authentication.

kGOST

Cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.

GOST94

Cipher suites, using HMAC based on GOST R 34.11-94.

GOST89MAC

Cipher suites using GOST 28147-89 MAC instead of HMAC.

PSK

All cipher suites using pre-shared keys (PSK).

kPSK, kECDHEPSK, kDHEPSK, kRSAPSK

Cipher suites using PSK key exchange, ECDHE_PSK, DHE_PSK or RSA_PSK.

aPSK

Cipher suites using PSK authentication (currently all PSK modes apart from RSA_PSK).

SUITEB128, SUITEB128ONLY, SUITEB192

Enables suite B mode of operation using 128 (permitting 192 bit mode by peer) 128 bit (not permitting 192 bit by peer) or 192 bit level of security respectively. If used these cipherstrings should appear first in the cipher list and anything after them is ignored. Setting Suite B mode has additional consequences required to comply with RFC6460. In particular the supported signature algorithms is reduced to support only ECDSA and SHA256 or SHA384, only the elliptic curves P-256 and P-384 can be used and only the two suite B compliant cipher suites (ECDHE-ECDSA-AES128-GCM-SHA256 and ECDHE-ECDSA-AES256-GCM-SHA384) are permissible.

CIPHER SUITE NAMES

The following lists give the SSL or TLS cipher suites names from the relevant specification and their OpenSSL equivalents. It should be noted, that several cipher suite names do not include the authentication used, e.g. DES-CBC3-SHA. In these cases, RSA authentication is used.

SSL v3.0 cipher suites

 SSL_RSA_WITH_NULL_MD5                   NULL-MD5
 SSL_RSA_WITH_NULL_SHA                   NULL-SHA
 SSL_RSA_WITH_RC4_128_MD5                RC4-MD5
 SSL_RSA_WITH_RC4_128_SHA                RC4-SHA
 SSL_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHA
 SSL_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA

 SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA        DH-DSS-DES-CBC3-SHA
 SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA        DH-RSA-DES-CBC3-SHA
 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA       DHE-DSS-DES-CBC3-SHA
 SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHA

 SSL_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5
 SSL_DH_anon_WITH_3DES_EDE_CBC_SHA       ADH-DES-CBC3-SHA

 SSL_FORTEZZA_KEA_WITH_NULL_SHA          Not implemented.
 SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA  Not implemented.
 SSL_FORTEZZA_KEA_WITH_RC4_128_SHA       Not implemented.

TLS v1.0 cipher suites

 TLS_RSA_WITH_NULL_MD5                   NULL-MD5
 TLS_RSA_WITH_NULL_SHA                   NULL-SHA
 TLS_RSA_WITH_RC4_128_MD5                RC4-MD5
 TLS_RSA_WITH_RC4_128_SHA                RC4-SHA
 TLS_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHA
 TLS_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA

 TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA        Not implemented.
 TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA        Not implemented.
 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA       DHE-DSS-DES-CBC3-SHA
 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHA

 TLS_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5
 TLS_DH_anon_WITH_3DES_EDE_CBC_SHA       ADH-DES-CBC3-SHA

AES cipher suites from RFC3268, extending TLS v1.0

 TLS_RSA_WITH_AES_128_CBC_SHA            AES128-SHA
 TLS_RSA_WITH_AES_256_CBC_SHA            AES256-SHA

 TLS_DH_DSS_WITH_AES_128_CBC_SHA         DH-DSS-AES128-SHA
 TLS_DH_DSS_WITH_AES_256_CBC_SHA         DH-DSS-AES256-SHA
 TLS_DH_RSA_WITH_AES_128_CBC_SHA         DH-RSA-AES128-SHA
 TLS_DH_RSA_WITH_AES_256_CBC_SHA         DH-RSA-AES256-SHA

 TLS_DHE_DSS_WITH_AES_128_CBC_SHA        DHE-DSS-AES128-SHA
 TLS_DHE_DSS_WITH_AES_256_CBC_SHA        DHE-DSS-AES256-SHA
 TLS_DHE_RSA_WITH_AES_128_CBC_SHA        DHE-RSA-AES128-SHA
 TLS_DHE_RSA_WITH_AES_256_CBC_SHA        DHE-RSA-AES256-SHA

 TLS_DH_anon_WITH_AES_128_CBC_SHA        ADH-AES128-SHA
 TLS_DH_anon_WITH_AES_256_CBC_SHA        ADH-AES256-SHA

Camellia cipher suites from RFC4132, extending TLS v1.0

 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA      CAMELLIA128-SHA
 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA      CAMELLIA256-SHA

 TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA   DH-DSS-CAMELLIA128-SHA
 TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA   DH-DSS-CAMELLIA256-SHA
 TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA   DH-RSA-CAMELLIA128-SHA
 TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA   DH-RSA-CAMELLIA256-SHA

 TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA  DHE-DSS-CAMELLIA128-SHA
 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA  DHE-DSS-CAMELLIA256-SHA
 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA  DHE-RSA-CAMELLIA128-SHA
 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA  DHE-RSA-CAMELLIA256-SHA

 TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA  ADH-CAMELLIA128-SHA
 TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA  ADH-CAMELLIA256-SHA

SEED cipher suites from RFC4162, extending TLS v1.0

 TLS_RSA_WITH_SEED_CBC_SHA              SEED-SHA

 TLS_DH_DSS_WITH_SEED_CBC_SHA           DH-DSS-SEED-SHA
 TLS_DH_RSA_WITH_SEED_CBC_SHA           DH-RSA-SEED-SHA

 TLS_DHE_DSS_WITH_SEED_CBC_SHA          DHE-DSS-SEED-SHA
 TLS_DHE_RSA_WITH_SEED_CBC_SHA          DHE-RSA-SEED-SHA

 TLS_DH_anon_WITH_SEED_CBC_SHA          ADH-SEED-SHA

GOST cipher suites from draft-chudov-cryptopro-cptls, extending TLS v1.0

Note: these ciphers require an engine which including GOST cryptographic algorithms, such as the ccgost engine, included in the OpenSSL distribution.

 TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94-GOST89-GOST89
 TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89
 TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94
 TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001-NULL-GOST94

Additional Export 1024 and other cipher suites

Note: these ciphers can also be used in SSL v3.

 TLS_DHE_DSS_WITH_RC4_128_SHA            DHE-DSS-RC4-SHA

Elliptic curve cipher suites.

 TLS_ECDHE_RSA_WITH_NULL_SHA             ECDHE-RSA-NULL-SHA
 TLS_ECDHE_RSA_WITH_RC4_128_SHA          ECDHE-RSA-RC4-SHA
 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA     ECDHE-RSA-DES-CBC3-SHA
 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      ECDHE-RSA-AES128-SHA
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      ECDHE-RSA-AES256-SHA

 TLS_ECDHE_ECDSA_WITH_NULL_SHA           ECDHE-ECDSA-NULL-SHA
 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA        ECDHE-ECDSA-RC4-SHA
 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA   ECDHE-ECDSA-DES-CBC3-SHA
 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    ECDHE-ECDSA-AES128-SHA
 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    ECDHE-ECDSA-AES256-SHA

 TLS_ECDH_anon_WITH_NULL_SHA             AECDH-NULL-SHA
 TLS_ECDH_anon_WITH_RC4_128_SHA          AECDH-RC4-SHA
 TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA     AECDH-DES-CBC3-SHA
 TLS_ECDH_anon_WITH_AES_128_CBC_SHA      AECDH-AES128-SHA
 TLS_ECDH_anon_WITH_AES_256_CBC_SHA      AECDH-AES256-SHA

TLS v1.2 cipher suites

 TLS_RSA_WITH_NULL_SHA256                  NULL-SHA256

 TLS_RSA_WITH_AES_128_CBC_SHA256           AES128-SHA256
 TLS_RSA_WITH_AES_256_CBC_SHA256           AES256-SHA256
 TLS_RSA_WITH_AES_128_GCM_SHA256           AES128-GCM-SHA256
 TLS_RSA_WITH_AES_256_GCM_SHA384           AES256-GCM-SHA384

 TLS_DH_RSA_WITH_AES_128_CBC_SHA256        DH-RSA-AES128-SHA256
 TLS_DH_RSA_WITH_AES_256_CBC_SHA256        DH-RSA-AES256-SHA256
 TLS_DH_RSA_WITH_AES_128_GCM_SHA256        DH-RSA-AES128-GCM-SHA256
 TLS_DH_RSA_WITH_AES_256_GCM_SHA384        DH-RSA-AES256-GCM-SHA384

 TLS_DH_DSS_WITH_AES_128_CBC_SHA256        DH-DSS-AES128-SHA256
 TLS_DH_DSS_WITH_AES_256_CBC_SHA256        DH-DSS-AES256-SHA256
 TLS_DH_DSS_WITH_AES_128_GCM_SHA256        DH-DSS-AES128-GCM-SHA256
 TLS_DH_DSS_WITH_AES_256_GCM_SHA384        DH-DSS-AES256-GCM-SHA384

 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256       DHE-RSA-AES128-SHA256
 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256       DHE-RSA-AES256-SHA256
 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256       DHE-RSA-AES128-GCM-SHA256
 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384       DHE-RSA-AES256-GCM-SHA384

 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256       DHE-DSS-AES128-SHA256
 TLS_DHE_DSS_WITH_AES_256_CBC_SHA256       DHE-DSS-AES256-SHA256
 TLS_DHE_DSS_WITH_AES_128_GCM_SHA256       DHE-DSS-AES128-GCM-SHA256
 TLS_DHE_DSS_WITH_AES_256_GCM_SHA384       DHE-DSS-AES256-GCM-SHA384

 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256     ECDHE-RSA-AES128-SHA256
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384     ECDHE-RSA-AES256-SHA384
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256     ECDHE-RSA-AES128-GCM-SHA256
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384     ECDHE-RSA-AES256-GCM-SHA384

 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256   ECDHE-ECDSA-AES128-SHA256
 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   ECDHE-ECDSA-AES256-SHA384
 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256   ECDHE-ECDSA-AES128-GCM-SHA256
 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384   ECDHE-ECDSA-AES256-GCM-SHA384

 TLS_DH_anon_WITH_AES_128_CBC_SHA256       ADH-AES128-SHA256
 TLS_DH_anon_WITH_AES_256_CBC_SHA256       ADH-AES256-SHA256
 TLS_DH_anon_WITH_AES_128_GCM_SHA256       ADH-AES128-GCM-SHA256
 TLS_DH_anon_WITH_AES_256_GCM_SHA384       ADH-AES256-GCM-SHA384

 RSA_WITH_AES_128_CCM                      AES128-CCM
 RSA_WITH_AES_256_CCM                      AES256-CCM
 DHE_RSA_WITH_AES_128_CCM                  DHE-RSA-AES128-CCM
 DHE_RSA_WITH_AES_256_CCM                  DHE-RSA-AES256-CCM
 RSA_WITH_AES_128_CCM_8                    AES128-CCM8
 RSA_WITH_AES_256_CCM_8                    AES256-CCM8
 DHE_RSA_WITH_AES_128_CCM_8                DHE-RSA-AES128-CCM8
 DHE_RSA_WITH_AES_256_CCM_8                DHE-RSA-AES256-CCM8
 ECDHE_ECDSA_WITH_AES_128_CCM              ECDHE-ECDSA-AES128-CCM
 ECDHE_ECDSA_WITH_AES_256_CCM              ECDHE-ECDSA-AES256-CCM
 ECDHE_ECDSA_WITH_AES_128_CCM_8            ECDHE-ECDSA-AES128-CCM8
 ECDHE_ECDSA_WITH_AES_256_CCM_8            ECDHE-ECDSA-AES256-CCM8

ARIA cipher suites from RFC6209, extending TLS v1.2

Note: the CBC modes mentioned in this RFC are not supported.

 TLS_RSA_WITH_ARIA_128_GCM_SHA256          ARIA128-GCM-SHA256
 TLS_RSA_WITH_ARIA_256_GCM_SHA384          ARIA256-GCM-SHA384
 TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256      DHE-RSA-ARIA128-GCM-SHA256
 TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384      DHE-RSA-ARIA256-GCM-SHA384
 TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256      DHE-DSS-ARIA128-GCM-SHA256
 TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384      DHE-DSS-ARIA256-GCM-SHA384
 TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256  ECDHE-ECDSA-ARIA128-GCM-SHA256
 TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384  ECDHE-ECDSA-ARIA256-GCM-SHA384
 TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256    ECDHE-ARIA128-GCM-SHA256
 TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384    ECDHE-ARIA256-GCM-SHA384
 TLS_PSK_WITH_ARIA_128_GCM_SHA256          PSK-ARIA128-GCM-SHA256
 TLS_PSK_WITH_ARIA_256_GCM_SHA384          PSK-ARIA256-GCM-SHA384
 TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256      DHE-PSK-ARIA128-GCM-SHA256
 TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384      DHE-PSK-ARIA256-GCM-SHA384
 TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256      RSA-PSK-ARIA128-GCM-SHA256
 TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384      RSA-PSK-ARIA256-GCM-SHA384

Camellia HMAC-Based cipher suites from RFC6367, extending TLS v1.2

 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE-ECDSA-CAMELLIA128-SHA256
 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE-ECDSA-CAMELLIA256-SHA384
 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256   ECDHE-RSA-CAMELLIA128-SHA256
 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384   ECDHE-RSA-CAMELLIA256-SHA384

Pre-shared keying (PSK) cipher suites

 PSK_WITH_NULL_SHA                         PSK-NULL-SHA
 DHE_PSK_WITH_NULL_SHA                     DHE-PSK-NULL-SHA
 RSA_PSK_WITH_NULL_SHA                     RSA-PSK-NULL-SHA

 PSK_WITH_RC4_128_SHA                      PSK-RC4-SHA
 PSK_WITH_3DES_EDE_CBC_SHA                 PSK-3DES-EDE-CBC-SHA
 PSK_WITH_AES_128_CBC_SHA                  PSK-AES128-CBC-SHA
 PSK_WITH_AES_256_CBC_SHA                  PSK-AES256-CBC-SHA

 DHE_PSK_WITH_RC4_128_SHA                  DHE-PSK-RC4-SHA
 DHE_PSK_WITH_3DES_EDE_CBC_SHA             DHE-PSK-3DES-EDE-CBC-SHA
 DHE_PSK_WITH_AES_128_CBC_SHA              DHE-PSK-AES128-CBC-SHA
 DHE_PSK_WITH_AES_256_CBC_SHA              DHE-PSK-AES256-CBC-SHA

 RSA_PSK_WITH_RC4_128_SHA                  RSA-PSK-RC4-SHA
 RSA_PSK_WITH_3DES_EDE_CBC_SHA             RSA-PSK-3DES-EDE-CBC-SHA
 RSA_PSK_WITH_AES_128_CBC_SHA              RSA-PSK-AES128-CBC-SHA
 RSA_PSK_WITH_AES_256_CBC_SHA              RSA-PSK-AES256-CBC-SHA

 PSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256
 PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384
 DHE_PSK_WITH_AES_128_GCM_SHA256           DHE-PSK-AES128-GCM-SHA256
 DHE_PSK_WITH_AES_256_GCM_SHA384           DHE-PSK-AES256-GCM-SHA384
 RSA_PSK_WITH_AES_128_GCM_SHA256           RSA-PSK-AES128-GCM-SHA256
 RSA_PSK_WITH_AES_256_GCM_SHA384           RSA-PSK-AES256-GCM-SHA384

 PSK_WITH_AES_128_CBC_SHA256               PSK-AES128-CBC-SHA256
 PSK_WITH_AES_256_CBC_SHA384               PSK-AES256-CBC-SHA384
 PSK_WITH_NULL_SHA256                      PSK-NULL-SHA256
 PSK_WITH_NULL_SHA384                      PSK-NULL-SHA384
 DHE_PSK_WITH_AES_128_CBC_SHA256           DHE-PSK-AES128-CBC-SHA256
 DHE_PSK_WITH_AES_256_CBC_SHA384           DHE-PSK-AES256-CBC-SHA384
 DHE_PSK_WITH_NULL_SHA256                  DHE-PSK-NULL-SHA256
 DHE_PSK_WITH_NULL_SHA384                  DHE-PSK-NULL-SHA384
 RSA_PSK_WITH_AES_128_CBC_SHA256           RSA-PSK-AES128-CBC-SHA256
 RSA_PSK_WITH_AES_256_CBC_SHA384           RSA-PSK-AES256-CBC-SHA384
 RSA_PSK_WITH_NULL_SHA256                  RSA-PSK-NULL-SHA256
 RSA_PSK_WITH_NULL_SHA384                  RSA-PSK-NULL-SHA384
 PSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256
 PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384

 ECDHE_PSK_WITH_RC4_128_SHA                ECDHE-PSK-RC4-SHA
 ECDHE_PSK_WITH_3DES_EDE_CBC_SHA           ECDHE-PSK-3DES-EDE-CBC-SHA
 ECDHE_PSK_WITH_AES_128_CBC_SHA            ECDHE-PSK-AES128-CBC-SHA
 ECDHE_PSK_WITH_AES_256_CBC_SHA            ECDHE-PSK-AES256-CBC-SHA
 ECDHE_PSK_WITH_AES_128_CBC_SHA256         ECDHE-PSK-AES128-CBC-SHA256
 ECDHE_PSK_WITH_AES_256_CBC_SHA384         ECDHE-PSK-AES256-CBC-SHA384
 ECDHE_PSK_WITH_NULL_SHA                   ECDHE-PSK-NULL-SHA
 ECDHE_PSK_WITH_NULL_SHA256                ECDHE-PSK-NULL-SHA256
 ECDHE_PSK_WITH_NULL_SHA384                ECDHE-PSK-NULL-SHA384

 PSK_WITH_CAMELLIA_128_CBC_SHA256          PSK-CAMELLIA128-SHA256
 PSK_WITH_CAMELLIA_256_CBC_SHA384          PSK-CAMELLIA256-SHA384

 DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256      DHE-PSK-CAMELLIA128-SHA256
 DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384      DHE-PSK-CAMELLIA256-SHA384

 RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256      RSA-PSK-CAMELLIA128-SHA256
 RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384      RSA-PSK-CAMELLIA256-SHA384

 ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256    ECDHE-PSK-CAMELLIA128-SHA256
 ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384    ECDHE-PSK-CAMELLIA256-SHA384

 PSK_WITH_AES_128_CCM                      PSK-AES128-CCM
 PSK_WITH_AES_256_CCM                      PSK-AES256-CCM
 DHE_PSK_WITH_AES_128_CCM                  DHE-PSK-AES128-CCM
 DHE_PSK_WITH_AES_256_CCM                  DHE-PSK-AES256-CCM
 PSK_WITH_AES_128_CCM_8                    PSK-AES128-CCM8
 PSK_WITH_AES_256_CCM_8                    PSK-AES256-CCM8
 DHE_PSK_WITH_AES_128_CCM_8                DHE-PSK-AES128-CCM8
 DHE_PSK_WITH_AES_256_CCM_8                DHE-PSK-AES256-CCM8

ChaCha20-Poly1305 cipher suites, extending TLS v1.2

 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256      ECDHE-RSA-CHACHA20-POLY1305
 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256    ECDHE-ECDSA-CHACHA20-POLY1305
 TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256        DHE-RSA-CHACHA20-POLY1305
 TLS_PSK_WITH_CHACHA20_POLY1305_SHA256            PSK-CHACHA20-POLY1305
 TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256      ECDHE-PSK-CHACHA20-POLY1305
 TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256        DHE-PSK-CHACHA20-POLY1305
 TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256        RSA-PSK-CHACHA20-POLY1305

TLS v1.3 cipher suites

 TLS_AES_128_GCM_SHA256                     TLS_AES_128_GCM_SHA256
 TLS_AES_256_GCM_SHA384                     TLS_AES_256_GCM_SHA384
 TLS_CHACHA20_POLY1305_SHA256               TLS_CHACHA20_POLY1305_SHA256
 TLS_AES_128_CCM_SHA256                     TLS_AES_128_CCM_SHA256
 TLS_AES_128_CCM_8_SHA256                   TLS_AES_128_CCM_8_SHA256

Older names used by OpenSSL

The following names are accepted by older releases:

 SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA    EDH-RSA-DES-CBC3-SHA (DHE-RSA-DES-CBC3-SHA)
 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA    EDH-DSS-DES-CBC3-SHA (DHE-DSS-DES-CBC3-SHA)

NOTES

Some compiled versions of OpenSSL may not include all the ciphers listed here because some ciphers were excluded at compile time.

EXAMPLES

Verbose listing of all OpenSSL ciphers including NULL ciphers:

 openssl ciphers -v 'ALL:eNULL'

Include all ciphers except NULL and anonymous DH then sort by strength:

 openssl ciphers -v 'ALL:!ADH:@STRENGTH'

Include all ciphers except ones with no encryption (eNULL) or no authentication (aNULL):

 openssl ciphers -v 'ALL:!aNULL'

Include only 3DES ciphers and then place RSA ciphers last:

 openssl ciphers -v '3DES:+RSA'

Include all RC4 ciphers but leave out those without authentication:

 openssl ciphers -v 'RC4:!COMPLEMENTOFDEFAULT'

Include all ciphers with RSA authentication but leave out ciphers without encryption.

 openssl ciphers -v 'RSA:!COMPLEMENTOFALL'

Set security level to 2 and display all ciphers consistent with level 2:

 openssl ciphers -s -v 'ALL:@SECLEVEL=2'

SEE ALSO

s_client(1), s_server(1), ssl(7)

HISTORY

The -V option for the ciphers command was added in OpenSSL 1.0.0.

The -stdname is only available if OpenSSL is built with tracing enabled (enable-ssl-trace argument to Configure) before OpenSSL 1.1.1.

The -convert option was added in OpenSSL 1.1.1.

COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!>nC x509.htmlnu[ x509

NAME

openssl-x509, x509 - Certificate display and signing utility

SYNOPSIS

openssl x509 [-help] [-inform DER|PEM] [-outform DER|PEM] [-keyform DER|PEM|ENGINE] [-CAform DER|PEM] [-CAkeyform DER|PEM] [-in filename] [-out filename] [-serial] [-hash] [-subject_hash] [-issuer_hash] [-ocspid] [-subject] [-issuer] [-nameopt option] [-email] [-ocsp_uri] [-startdate] [-enddate] [-purpose] [-dates] [-checkend num] [-modulus] [-pubkey] [-fingerprint] [-alias] [-noout] [-trustout] [-clrtrust] [-clrreject] [-addtrust arg] [-addreject arg] [-setalias arg] [-days arg] [-set_serial n] [-signkey arg] [-passin arg] [-x509toreq] [-req] [-CA filename] [-CAkey filename] [-CAcreateserial] [-CAserial filename] [-force_pubkey key] [-text] [-ext extensions] [-certopt option] [-C] [-digest] [-clrext] [-extfile filename] [-extensions section] [-sigopt nm:v] [-rand file...] [-writerand file] [-engine id] [-preserve_dates]

DESCRIPTION

The x509 command is a multi purpose certificate utility. It can be used to display certificate information, convert certificates to various forms, sign certificate requests like a "mini CA" or edit certificate trust settings.

Since there are a large number of options they will split up into various sections.

OPTIONS

Input, Output, and General Purpose Options

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format normally the command will expect an X509 certificate but this can change if other options such as -req are present. The DER format is the DER encoding of the certificate and PEM is the base64 encoding of the DER encoding with header and footer lines added. The default format is PEM.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a certificate from or standard input if this option is not specified.

-out filename

This specifies the output filename to write to or standard output by default.

-digest

The digest to use. This affects any signing or display option that uses a message digest, such as the -fingerprint, -signkey and -CA options. Any digest supported by the OpenSSL dgst command can be used. If not specified then SHA1 is used with -fingerprint or the default digest for the signing algorithm is used, typically SHA256.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-engine id

Specifying an engine (by its unique id string) will cause x509 to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-preserve_dates

When signing a certificate, preserve the "notBefore" and "notAfter" dates instead of adjusting them to current time and duration. Cannot be used with the -days option.

Display Options

Note: the -alias and -purpose options are also display options but are described in the TRUST SETTINGS section.

-text

Prints out the certificate in text form. Full details are output including the public key, signature algorithms, issuer and subject names, serial number any extensions present and any trust settings.

-ext extensions

Prints out the certificate extensions in text form. Extensions are specified with a comma separated string, e.g., "subjectAltName,subjectKeyIdentifier". See the x509v3_config(5) manual page for the extension names.

-certopt option

Customise the output format used with -text. The option argument can be a single option or multiple options separated by commas. The -certopt switch may be also be used more than once to set multiple options. See the TEXT OPTIONS section for more information.

-noout

This option prevents output of the encoded version of the certificate.

-pubkey

Outputs the certificate's SubjectPublicKeyInfo block in PEM format.

-modulus

This option prints out the value of the modulus of the public key contained in the certificate.

-serial

Outputs the certificate serial number.

-subject_hash

Outputs the "hash" of the certificate subject name. This is used in OpenSSL to form an index to allow certificates in a directory to be looked up by subject name.

-issuer_hash

Outputs the "hash" of the certificate issuer name.

-ocspid

Outputs the OCSP hash values for the subject name and public key.

-hash

Synonym for "-subject_hash" for backward compatibility reasons.

-subject_hash_old

Outputs the "hash" of the certificate subject name using the older algorithm as used by OpenSSL before version 1.0.0.

-issuer_hash_old

Outputs the "hash" of the certificate issuer name using the older algorithm as used by OpenSSL before version 1.0.0.

-subject

Outputs the subject name.

-issuer

Outputs the issuer name.

-nameopt option

Option which determines how the subject or issuer names are displayed. The option argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the NAME OPTIONS section for more information.

-email

Outputs the email address(es) if any.

-ocsp_uri

Outputs the OCSP responder address(es) if any.

-startdate

Prints out the start date of the certificate, that is the notBefore date.

-enddate

Prints out the expiry date of the certificate, that is the notAfter date.

-dates

Prints out the start and expiry dates of a certificate.

-checkend arg

Checks if the certificate expires within the next arg seconds and exits nonzero if yes it will expire or zero if not.

-fingerprint

Calculates and outputs the digest of the DER encoded version of the entire certificate (see digest options). This is commonly called a "fingerprint". Because of the nature of message digests, the fingerprint of a certificate is unique to that certificate and two certificates with the same fingerprint can be considered to be the same.

-C

This outputs the certificate in the form of a C source file.

Trust Settings

A trusted certificate is an ordinary certificate which has several additional pieces of information attached to it such as the permitted and prohibited uses of the certificate and an "alias".

Normally when a certificate is being verified at least one certificate must be "trusted". By default a trusted certificate must be stored locally and must be a root CA: any certificate chain ending in this CA is then usable for any purpose.

Trust settings currently are only used with a root CA. They allow a finer control over the purposes the root CA can be used for. For example a CA may be trusted for SSL client but not SSL server use.

See the description of the verify utility for more information on the meaning of trust settings.

Future versions of OpenSSL will recognize trust settings on any certificate: not just root CAs.

-trustout

This causes x509 to output a trusted certificate. An ordinary or trusted certificate can be input but by default an ordinary certificate is output and any trust settings are discarded. With the -trustout option a trusted certificate is output. A trusted certificate is automatically output if any trust settings are modified.

-setalias arg

Sets the alias of the certificate. This will allow the certificate to be referred to using a nickname for example "Steve's Certificate".

-alias

Outputs the certificate alias, if any.

-clrtrust

Clears all the permitted or trusted uses of the certificate.

-clrreject

Clears all the prohibited or rejected uses of the certificate.

-addtrust arg

Adds a trusted certificate use. Any object name can be used here but currently only clientAuth (SSL client use), serverAuth (SSL server use), emailProtection (S/MIME email) and anyExtendedKeyUsage are used. As of OpenSSL 1.1.0, the last of these blocks all purposes when rejected or enables all purposes when trusted. Other OpenSSL applications may define additional uses.

-addreject arg

Adds a prohibited use. It accepts the same values as the -addtrust option.

-purpose

This option performs tests on the certificate extensions and outputs the results. For a more complete description see the CERTIFICATE EXTENSIONS section.

Signing Options

The x509 utility can be used to sign certificates and requests: it can thus behave like a "mini CA".

-signkey arg

This option causes the input file to be self signed using the supplied private key or engine. The private key's format is specified with the -keyform option.

If the input file is a certificate it sets the issuer name to the subject name (i.e. makes it self signed) changes the public key to the supplied value and changes the start and end dates. The start date is set to the current time and the end date is set to a value determined by the -days option. Any certificate extensions are retained unless the -clrext option is supplied; this includes, for example, any existing key identifier extensions.

If the input is a certificate request then a self signed certificate is created using the supplied private key using the subject name in the request.

-sigopt nm:v

Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific.

-passin arg

The key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-clrext

Delete any extensions from a certificate. This option is used when a certificate is being created from another certificate (for example with the -signkey or the -CA options). Normally all extensions are retained.

-keyform PEM|DER|ENGINE

Specifies the format (DER or PEM) of the private key file used in the -signkey option.

-days arg

Specifies the number of days to make a certificate valid for. The default is 30 days. Cannot be used with the -preserve_dates option.

-x509toreq

Converts a certificate into a certificate request. The -signkey option is used to pass the required private key.

-req

By default a certificate is expected on input. With this option a certificate request is expected instead.

-set_serial n

Specifies the serial number to use. This option can be used with either the -signkey or -CA options. If used in conjunction with the -CA option the serial number file (as specified by the -CAserial or -CAcreateserial options) is not used.

The serial number can be decimal or hex (if preceded by 0x).

-CA filename

Specifies the CA certificate to be used for signing. When this option is present x509 behaves like a "mini CA". The input file is signed by this CA using this option: that is its issuer name is set to the subject name of the CA and it is digitally signed using the CAs private key.

This option is normally combined with the -req option. Without the -req option the input is a certificate which must be self signed.

-CAkey filename

Sets the CA private key to sign a certificate with. If this option is not specified then it is assumed that the CA private key is present in the CA certificate file.

-CAserial filename

Sets the CA serial number file to use.

When creating a certificate with this option, and with the -CA option, the certificate serial number is stored in the given file. This file consists of one line containing an even number of hex digits with the serial number used last time. After reading this number, it is incremented and used, and the file is updated.

The default filename consists of the CA certificate file base name with ".srl" appended. For example if the CA certificate file is called "mycacert.pem" it expects to find a serial number file called "mycacert.srl".

If the -CA option is specified and neither <-CAserial> or <-CAcreateserial> is given and the default serial number file does not exist, a random number is generated; this is the recommended practice.

-CAcreateserial

With this option and the -CA option the CA serial number file is created if it does not exist. A random number is generated, used for the certificate, and saved into the serial number file determined as described above.

-extfile filename

File containing certificate extensions to use. If not specified then no extensions are added to the certificate.

-extensions section

The section to add certificate extensions from. If this option is not specified then the extensions should either be contained in the unnamed (default) section or the default section should contain a variable called "extensions" which contains the section to use. See the x509v3_config(5) manual page for details of the extension section format.

-force_pubkey key

When a certificate is created set its public key to key instead of the key in the certificate or certificate request. This option is useful for creating certificates where the algorithm can't normally sign requests, for example DH.

The format or key can be specified using the -keyform option.

Name Options

The nameopt command line switch determines how the subject and issuer names are displayed. If no nameopt switch is present the default "oneline" format is used which is compatible with previous versions of OpenSSL. Each option is described in detail below, all options can be preceded by a - to turn the option off. Only the first four will normally be used.

compat

Use the old format.

RFC2253

Displays names compatible with RFC2253 equivalent to esc_2253, esc_ctrl, esc_msb, utf8, dump_nostr, dump_unknown, dump_der, sep_comma_plus, dn_rev and sname.

oneline

A oneline format which is more readable than RFC2253. It is equivalent to specifying the esc_2253, esc_ctrl, esc_msb, utf8, dump_nostr, dump_der, use_quote, sep_comma_plus_space, space_eq and sname options. This is the default of no name options are given explicitly.

multiline

A multiline format. It is equivalent esc_ctrl, esc_msb, sep_multiline, space_eq, lname and align.

esc_2253

Escape the "special" characters required by RFC2253 in a field. That is ,+"<>;. Additionally # is escaped at the beginning of a string and a space character at the beginning or end of a string.

esc_2254

Escape the "special" characters required by RFC2254 in a field. That is the NUL character as well as and ()*.

esc_ctrl

Escape control characters. That is those with ASCII values less than 0x20 (space) and the delete (0x7f) character. They are escaped using the RFC2253 \XX notation (where XX are two hex digits representing the character value).

esc_msb

Escape characters with the MSB set, that is with ASCII values larger than 127.

use_quote

Escapes some characters by surrounding the whole string with " characters, without the option all escaping is done with the \ character.

utf8

Convert all strings to UTF8 format first. This is required by RFC2253. If you are lucky enough to have a UTF8 compatible terminal then the use of this option (and not setting esc_msb) may result in the correct display of multibyte (international) characters. Is this option is not present then multibyte characters larger than 0xff will be represented using the format \UXXXX for 16 bits and \WXXXXXXXX for 32 bits. Also if this option is off any UTF8Strings will be converted to their character form first.

ignore_type

This option does not attempt to interpret multibyte characters in any way. That is their content octets are merely dumped as though one octet represents each character. This is useful for diagnostic purposes but will result in rather odd looking output.

show_type

Show the type of the ASN1 character string. The type precedes the field contents. For example "BMPSTRING: Hello World".

dump_der

When this option is set any fields that need to be hexdumped will be dumped using the DER encoding of the field. Otherwise just the content octets will be displayed. Both options use the RFC2253 #XXXX... format.

dump_nostr

Dump non character string types (for example OCTET STRING) if this option is not set then non character string types will be displayed as though each content octet represents a single character.

dump_all

Dump all fields. This option when used with dump_der allows the DER encoding of the structure to be unambiguously determined.

dump_unknown

Dump any field whose OID is not recognised by OpenSSL.

sep_comma_plus, sep_comma_plus_space, sep_semi_plus_space, sep_multiline

These options determine the field separators. The first character is between RDNs and the second between multiple AVAs (multiple AVAs are very rare and their use is discouraged). The options ending in "space" additionally place a space after the separator to make it more readable. The sep_multiline uses a linefeed character for the RDN separator and a spaced + for the AVA separator. It also indents the fields by four characters. If no field separator is specified then sep_comma_plus_space is used by default.

dn_rev

Reverse the fields of the DN. This is required by RFC2253. As a side effect this also reverses the order of multiple AVAs but this is permissible.

nofname, sname, lname, oid

These options alter how the field name is displayed. nofname does not display the field at all. sname uses the "short name" form (CN for commonName for example). lname uses the long form. oid represents the OID in numerical form and is useful for diagnostic purpose.

align

Align field values for a more readable output. Only usable with sep_multiline.

space_eq

Places spaces round the = character which follows the field name.

Text Options

As well as customising the name output format, it is also possible to customise the actual fields printed using the certopt options when the text option is present. The default behaviour is to print all fields.

compatible

Use the old format. This is equivalent to specifying no output options at all.

no_header

Don't print header information: that is the lines saying "Certificate" and "Data".

no_version

Don't print out the version number.

no_serial

Don't print out the serial number.

no_signame

Don't print out the signature algorithm used.

no_validity

Don't print the validity, that is the notBefore and notAfter fields.

no_subject

Don't print out the subject name.

no_issuer

Don't print out the issuer name.

no_pubkey

Don't print out the public key.

no_sigdump

Don't give a hexadecimal dump of the certificate signature.

no_aux

Don't print out certificate trust information.

no_extensions

Don't print out any X509V3 extensions.

ext_default

Retain default extension behaviour: attempt to print out unsupported certificate extensions.

ext_error

Print an error message for unsupported certificate extensions.

ext_parse

ASN1 parse unsupported extensions.

ext_dump

Hex dump unsupported extensions.

ca_default

The value used by the ca utility, equivalent to no_issuer, no_pubkey, no_header, and no_version.

EXAMPLES

Note: in these examples the '\' means the example should be all on one line.

Display the contents of a certificate:

 openssl x509 -in cert.pem -noout -text

Display the "Subject Alternative Name" extension of a certificate:

 openssl x509 -in cert.pem -noout -ext subjectAltName

Display more extensions of a certificate:

 openssl x509 -in cert.pem -noout -ext subjectAltName,nsCertType

Display the certificate serial number:

 openssl x509 -in cert.pem -noout -serial

Display the certificate subject name:

 openssl x509 -in cert.pem -noout -subject

Display the certificate subject name in RFC2253 form:

 openssl x509 -in cert.pem -noout -subject -nameopt RFC2253

Display the certificate subject name in oneline form on a terminal supporting UTF8:

 openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb

Display the certificate SHA1 fingerprint:

 openssl x509 -sha1 -in cert.pem -noout -fingerprint

Convert a certificate from PEM to DER format:

 openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER

Convert a certificate to a certificate request:

 openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem

Convert a certificate request into a self signed certificate using extensions for a CA:

 openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca \
        -signkey key.pem -out cacert.pem

Sign a certificate request using the CA certificate above and add user certificate extensions:

 openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr \
        -CA cacert.pem -CAkey key.pem -CAcreateserial

Set a certificate to be trusted for SSL client use and change set its alias to "Steve's Class 1 CA"

 openssl x509 -in cert.pem -addtrust clientAuth \
        -setalias "Steve's Class 1 CA" -out trust.pem

NOTES

The PEM format uses the header and footer lines:

 -----BEGIN CERTIFICATE-----
 -----END CERTIFICATE-----

it will also handle files containing:

 -----BEGIN X509 CERTIFICATE-----
 -----END X509 CERTIFICATE-----

Trusted certificates have the lines

 -----BEGIN TRUSTED CERTIFICATE-----
 -----END TRUSTED CERTIFICATE-----

The conversion to UTF8 format used with the name options assumes that T61Strings use the ISO8859-1 character set. This is wrong but Netscape and MSIE do this as do many certificates. So although this is incorrect it is more likely to display the majority of certificates correctly.

The -email option searches the subject name and the subject alternative name extension. Only unique email addresses will be printed out: it will not print the same address more than once.

CERTIFICATE EXTENSIONS

The -purpose option checks the certificate extensions and determines what the certificate can be used for. The actual checks done are rather complex and include various hacks and workarounds to handle broken certificates and software.

The same code is used when verifying untrusted certificates in chains so this section is useful if a chain is rejected by the verify code.

The basicConstraints extension CA flag is used to determine whether the certificate can be used as a CA. If the CA flag is true then it is a CA, if the CA flag is false then it is not a CA. All CAs should have the CA flag set to true.

If the basicConstraints extension is absent then the certificate is considered to be a "possible CA" other extensions are checked according to the intended use of the certificate. A warning is given in this case because the certificate should really not be regarded as a CA: however it is allowed to be a CA to work around some broken software.

If the certificate is a V1 certificate (and thus has no extensions) and it is self signed it is also assumed to be a CA but a warning is again given: this is to work around the problem of Verisign roots which are V1 self signed certificates.

If the keyUsage extension is present then additional restraints are made on the uses of the certificate. A CA certificate must have the keyCertSign bit set if the keyUsage extension is present.

The extended key usage extension places additional restrictions on the certificate uses. If this extension is present (whether critical or not) the key can only be used for the purposes specified.

A complete description of each test is given below. The comments about basicConstraints and keyUsage and V1 certificates above apply to all CA certificates.

SSL Client

The extended key usage extension must be absent or include the "web client authentication" OID. keyUsage must be absent or it must have the digitalSignature bit set. Netscape certificate type must be absent or it must have the SSL client bit set.

SSL Client CA

The extended key usage extension must be absent or include the "web client authentication" OID. Netscape certificate type must be absent or it must have the SSL CA bit set: this is used as a work around if the basicConstraints extension is absent.

SSL Server

The extended key usage extension must be absent or include the "web server authentication" and/or one of the SGC OIDs. keyUsage must be absent or it must have the digitalSignature, the keyEncipherment set or both bits set. Netscape certificate type must be absent or have the SSL server bit set.

SSL Server CA

The extended key usage extension must be absent or include the "web server authentication" and/or one of the SGC OIDs. Netscape certificate type must be absent or the SSL CA bit must be set: this is used as a work around if the basicConstraints extension is absent.

Netscape SSL Server

For Netscape SSL clients to connect to an SSL server it must have the keyEncipherment bit set if the keyUsage extension is present. This isn't always valid because some cipher suites use the key for digital signing. Otherwise it is the same as a normal SSL server.

Common S/MIME Client Tests

The extended key usage extension must be absent or include the "email protection" OID. Netscape certificate type must be absent or should have the S/MIME bit set. If the S/MIME bit is not set in Netscape certificate type then the SSL client bit is tolerated as an alternative but a warning is shown: this is because some Verisign certificates don't set the S/MIME bit.

S/MIME Signing

In addition to the common S/MIME client tests the digitalSignature bit or the nonRepudiation bit must be set if the keyUsage extension is present.

S/MIME Encryption

In addition to the common S/MIME tests the keyEncipherment bit must be set if the keyUsage extension is present.

S/MIME CA

The extended key usage extension must be absent or include the "email protection" OID. Netscape certificate type must be absent or must have the S/MIME CA bit set: this is used as a work around if the basicConstraints extension is absent.

CRL Signing

The keyUsage extension must be absent or it must have the CRL signing bit set.

CRL Signing CA

The normal CA tests apply. Except in this case the basicConstraints extension must be present.

BUGS

Extensions in certificates are not transferred to certificate requests and vice versa.

It is possible to produce invalid certificates or requests by specifying the wrong private key or using inconsistent options in some cases: these should be checked.

There should be options to explicitly set such things as start and end dates rather than an offset from the current time.

SEE ALSO

req(1), ca(1), genrsa(1), gendsa(1), verify(1), x509v3_config(5)

HISTORY

The hash algorithm used in the -subject_hash and -issuer_hash options before OpenSSL 1.0.0 was based on the deprecated MD5 algorithm and the encoding of the distinguished name. In OpenSSL 1.0.0 and later it is based on a canonical version of the DN using SHA1. This means that any directories using the old form must have their links rebuilt using c_rehash or similar.

COPYRIGHT

Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!/{@dsa.htmlnu[ dsa

NAME

openssl-dsa, dsa - DSA key processing

SYNOPSIS

openssl dsa [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-pubin] [-pubout] [-engine id]

DESCRIPTION

The dsa command processes DSA keys. They can be converted between various forms and their components printed out. Note This command uses the traditional SSLeay compatible format for private key encryption: newer applications should use the more secure PKCS#8 format using the pkcs8

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option with a private key uses an ASN1 DER encoded form of an ASN.1 SEQUENCE consisting of the values of version (currently zero), p, q, g, the public and private key components respectively as ASN.1 INTEGERs. When used with a public key it uses a SubjectPublicKeyInfo structure: it is an error if the key is not DSA.

The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines. In the case of a private key PKCS#8 format is also accepted.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write a key to or standard output by is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.

-passout arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the dsa utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with PEM format output files.

-text

Prints out the public, private key components and parameters.

-noout

This option prevents output of the encoded version of the key.

-modulus

This option prints out the value of the public key component of the key.

-pubin

By default, a private key is read from the input file. With this option a public key is read instead.

-pubout

By default, a private key is output. With this option a public key will be output instead. This option is automatically set if the input is a public key.

-engine id

Specifying an engine (by its unique id string) will cause dsa to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

NOTES

The PEM private key format uses the header and footer lines:

 -----BEGIN DSA PRIVATE KEY-----
 -----END DSA PRIVATE KEY-----

The PEM public key format uses the header and footer lines:

 -----BEGIN PUBLIC KEY-----
 -----END PUBLIC KEY-----

EXAMPLES

To remove the pass phrase on a DSA private key:

 openssl dsa -in key.pem -out keyout.pem

To encrypt a private key using triple DES:

 openssl dsa -in key.pem -des3 -out keyout.pem

To convert a private key from PEM to DER format:

 openssl dsa -in key.pem -outform DER -out keyout.der

To print out the components of a private key to standard output:

 openssl dsa -in key.pem -text -noout

To just output the public part of a private key:

 openssl dsa -in key.pem -pubout -out pubkey.pem

SEE ALSO

dsaparam(1), gendsa(1), rsa(1), genrsa(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!{EpRR smime.htmlnu[ smime

NAME

openssl-smime, smime - S/MIME utility

SYNOPSIS

openssl smime [-help] [-encrypt] [-decrypt] [-sign] [-resign] [-verify] [-pk7out] [-binary] [-crlfeol] [-cipher] [-in file] [-CAfile file] [-CApath dir] [-no-CAfile] [-no-CApath] [-attime timestamp] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-certfile file] [-signer file] [-recip file] [-inform SMIME|PEM|DER] [-passin arg] [-inkey file_or_id] [-out file] [-outform SMIME|PEM|DER] [-content file] [-to addr] [-from ad] [-subject s] [-text] [-indef] [-noindef] [-stream] [-rand file...] [-writerand file] [-md digest] [cert.pem]...

DESCRIPTION

The smime command handles S/MIME mail. It can encrypt, decrypt, sign and verify S/MIME messages.

OPTIONS

There are six operation options that set the type of operation to be performed. The meaning of the other options varies according to the operation type.

-help

Print out a usage message.

-encrypt

Encrypt mail for the given recipient certificates. Input file is the message to be encrypted. The output file is the encrypted mail in MIME format.

Note that no revocation check is done for the recipient cert, so if that key has been compromised, others may be able to decrypt the text.

-decrypt

Decrypt mail using the supplied certificate and private key. Expects an encrypted mail message in MIME format for the input file. The decrypted mail is written to the output file.

-sign

Sign mail using the supplied certificate and private key. Input file is the message to be signed. The signed message in MIME format is written to the output file.

-verify

Verify signed mail. Expects a signed mail message on input and outputs the signed data. Both clear text and opaque signing is supported.

-pk7out

Takes an input message and writes out a PEM encoded PKCS#7 structure.

-resign

Resign a message: take an existing message and one or more new signers.

-in filename

The input message to be encrypted or signed or the MIME message to be decrypted or verified.

-inform SMIME|PEM|DER

This specifies the input format for the PKCS#7 structure. The default is SMIME which reads an S/MIME format message. PEM and DER format change this to expect PEM and DER format PKCS#7 structures instead. This currently only affects the input format of the PKCS#7 structure, if no PKCS#7 structure is being input (for example with -encrypt or -sign) this option has no effect.

-out filename

The message text that has been decrypted or verified or the output MIME format message that has been signed or verified.

-outform SMIME|PEM|DER

This specifies the output format for the PKCS#7 structure. The default is SMIME which write an S/MIME format message. PEM and DER format change this to write PEM and DER format PKCS#7 structures instead. This currently only affects the output format of the PKCS#7 structure, if no PKCS#7 structure is being output (for example with -verify or -decrypt) this option has no effect.

-stream -indef -noindef

The -stream and -indef options are equivalent and enable streaming I/O for encoding operations. This permits single pass processing of data without the need to hold the entire contents in memory, potentially supporting very large files. Streaming is automatically set for S/MIME signing with detached data if the output format is SMIME it is currently off by default for all other operations.

-noindef

Disable streaming I/O where it would produce and indefinite length constructed encoding. This option currently has no effect. In future streaming will be enabled by default on all relevant operations and this option will disable it.

-content filename

This specifies a file containing the detached content, this is only useful with the -verify command. This is only usable if the PKCS#7 structure is using the detached signature form where the content is not included. This option will override any content if the input format is S/MIME and it uses the multipart/signed MIME content type.

-text

This option adds plain text (text/plain) MIME headers to the supplied message if encrypting or signing. If decrypting or verifying it strips off text headers: if the decrypted or verified message is not of MIME type text/plain then an error occurs.

-CAfile file

A file containing trusted CA certificates, only used with -verify.

-CApath dir

A directory containing trusted CA certificates, only used with -verify. This directory must be a standard certificate directory: that is a hash of each subject name (using x509 -hash) should be linked to each certificate.

-no-CAfile

Do not load the trusted CA certificates from the default file location.

-no-CApath

Do not load the trusted CA certificates from the default directory location.

-md digest

Digest algorithm to use when signing or resigning. If not present then the default digest algorithm for the signing key will be used (usually SHA1).

-cipher

The encryption algorithm to use. For example DES (56 bits) - -des, triple DES (168 bits) - -des3, EVP_get_cipherbyname() function) can also be used preceded by a dash, for example -aes-128-cbc. See enc for list of ciphers supported by your version of OpenSSL.

If not specified triple DES is used. Only used with -encrypt.

-nointern

When verifying a message normally certificates (if any) included in the message are searched for the signing certificate. With this option only the certificates specified in the -certfile option are used. The supplied certificates can still be used as untrusted CAs however.

-noverify

Do not verify the signers certificate of a signed message.

-nochain

Do not do chain verification of signers certificates: that is don't use the certificates in the signed message as untrusted CAs.

-nosigs

Don't try to verify the signatures on the message.

-nocerts

When signing a message the signer's certificate is normally included with this option it is excluded. This will reduce the size of the signed message but the verifier must have a copy of the signers certificate available locally (passed using the -certfile option for example).

-noattr

Normally when a message is signed a set of attributes are included which include the signing time and supported symmetric algorithms. With this option they are not included.

-binary

Normally the input message is converted to "canonical" format which is effectively using CR and LF as end of line: as required by the S/MIME specification. When this option is present no translation occurs. This is useful when handling binary data which may not be in MIME format.

-crlfeol

Normally the output file uses a single LF as end of line. When this option is present CRLF is used instead.

-nodetach

When signing a message use opaque signing: this form is more resistant to translation by mail relays but it cannot be read by mail agents that do not support S/MIME. Without this option cleartext signing with the MIME type multipart/signed is used.

-certfile file

Allows additional certificates to be specified. When signing these will be included with the message. When verifying these will be searched for the signers certificates. The certificates should be in PEM format.

-signer file

A signing certificate when signing or resigning a message, this option can be used multiple times if more than one signer is required. If a message is being verified then the signers certificates will be written to this file if the verification was successful.

-recip file

The recipients certificate when decrypting a message. This certificate must match one of the recipients of the message or an error occurs.

-inkey file_or_id

The private key to use when signing or decrypting. This must match the corresponding certificate. If this option is not specified then the private key must be included in the certificate file specified with the -recip or -signer file. When signing this option can be used multiple times to specify successive keys. If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier.

-passin arg

The private key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

cert.pem...

One or more certificates of message recipients: used when encrypting a message.

-to, -from, -subject

The relevant mail headers. These are included outside the signed portion of a message so they may be included manually. If signing then many S/MIME mail clients check the signers certificate's email address matches that specified in the From: address.

-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict

Set various options of certificate chain verification. See verify(1) manual page for details.

NOTES

The MIME message must be sent without any blank lines between the headers and the output. Some mail programs will automatically add a blank line. Piping the mail directly to sendmail is one way to achieve the correct format.

The supplied message to be signed or encrypted must include the necessary MIME headers or many S/MIME clients won't display it properly (if at all). You can use the -text option to automatically add plain text headers.

A "signed and encrypted" message is one where a signed message is then encrypted. This can be produced by encrypting an already signed message: see the examples section.

This version of the program only allows one signer per message but it will verify multiple signers on received messages. Some S/MIME clients choke if a message contains multiple signers. It is possible to sign messages "in parallel" by signing an already signed message.

The options -encrypt and -decrypt reflect common usage in S/MIME clients. Strictly speaking these process PKCS#7 enveloped data: PKCS#7 encrypted data is used for other purposes.

The -resign option uses an existing message digest when adding a new signer. This means that attributes must be present in at least one existing signer using the same message digest or this operation will fail.

The -stream and -indef options enable streaming I/O support. As a result the encoding is BER using indefinite length constructed encoding and no longer DER. Streaming is supported for the -encrypt operation and the -sign operation if the content is not detached.

Streaming is always used for the -sign operation with detached data but since the content is no longer part of the PKCS#7 structure the encoding remains DER.

EXIT CODES

0

The operation was completely successfully.

1

An error occurred parsing the command options.

2

One of the input files could not be read.

3

An error occurred creating the PKCS#7 file or when reading the MIME message.

4

An error occurred decrypting or verifying the message.

5

The message was verified correctly but an error occurred writing out the signers certificates.

EXAMPLES

Create a cleartext signed message:

 openssl smime -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem

Create an opaque signed message:

 openssl smime -sign -in message.txt -text -out mail.msg -nodetach \
        -signer mycert.pem

Create a signed message, include some additional certificates and read the private key from another file:

 openssl smime -sign -in in.txt -text -out mail.msg \
        -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem

Create a signed message with two signers:

 openssl smime -sign -in message.txt -text -out mail.msg \
        -signer mycert.pem -signer othercert.pem

Send a signed message under Unix directly to sendmail, including headers:

 openssl smime -sign -in in.txt -text -signer mycert.pem \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed message" | sendmail someone@somewhere

Verify a message and extract the signer's certificate if successful:

 openssl smime -verify -in mail.msg -signer user.pem -out signedtext.txt

Send encrypted mail using triple DES:

 openssl smime -encrypt -in in.txt -from steve@openssl.org \
        -to someone@somewhere -subject "Encrypted message" \
        -des3 user.pem -out mail.msg

Sign and encrypt mail:

 openssl smime -sign -in ml.txt -signer my.pem -text \
        | openssl smime -encrypt -out mail.msg \
        -from steve@openssl.org -to someone@somewhere \
        -subject "Signed and Encrypted message" -des3 user.pem

Note: the encryption command does not include the -text option because the message being encrypted already has MIME headers.

Decrypt mail:

 openssl smime -decrypt -in mail.msg -recip mycert.pem -inkey key.pem

The output from Netscape form signing is a PKCS#7 structure with the detached signature format. You can use this program to verify the signature by line wrapping the base64 encoded structure and surrounding it with:

 -----BEGIN PKCS7-----
 -----END PKCS7-----

and using the command:

 openssl smime -verify -inform PEM -in signature.pem -content content.txt

Alternatively you can base64 decode the signature and use:

 openssl smime -verify -inform DER -in signature.der -content content.txt

Create an encrypted message using 128 bit Camellia:

 openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem

Add a signer to an existing message:

 openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.msg

BUGS

The MIME parser isn't very clever: it seems to handle most messages that I've thrown at it but it may choke on others.

The code currently will only write out the signer's certificate to a file: if the signer has a separate encryption certificate this must be manually extracted. There should be some heuristic that determines the correct encryption certificate.

Ideally a database should be maintained of a certificates for each email address.

The code doesn't currently take note of the permitted symmetric encryption algorithms as supplied in the SMIMECapabilities signed attribute. This means the user has to manually include the correct encryption algorithm. It should store the list of permitted ciphers in a database and only use those.

No revocation checking is done on the signer's certificate.

The current code can only handle S/MIME v2 messages, the more complex S/MIME v3 structures may cause parsing errors.

HISTORY

The use of multiple -signer options and the -resign command were first added in OpenSSL 1.0.0

The -no_alt_chains option was added in OpenSSL 1.1.0.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!`  prime.htmlnu[ prime

NAME

openssl-prime, prime - compute prime numbers

SYNOPSIS

openssl prime [-help] [-hex] [-generate] [-bits] [-safe] [-checks] [number...]

DESCRIPTION

The prime command checks if the specified numbers are prime.

If no numbers are given on the command line, the -generate flag should be used to generate primes according to the requirements specified by the rest of the flags.

OPTIONS

[-help]

Display an option summary.

[-hex]

Generate hex output.

[-generate]

Generate a prime number.

[-bits num]

Generate a prime with num bits.

[-safe]

When used with -generate, generates a "safe" prime. If the number generated is n, then check that (n-1)/2 is also prime.

[-checks num]

Perform the checks num times to see that the generated number is prime. The default is 20.

COPYRIGHT

Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!wM asn1parse.htmlnu[ asn1parse

NAME

openssl-asn1parse, asn1parse - ASN.1 parsing tool

SYNOPSIS

openssl asn1parse [-help] [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [-oid filename] [-dump] [-dlimit num] [-strparse offset] [-genstr string] [-genconf file] [-strictpem] [-item name]

DESCRIPTION

The asn1parse command is a diagnostic utility that can parse ASN.1 structures. It can also be used to extract data from ASN.1 formatted data.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

The input format. DER is binary format and PEM (the default) is base64 encoded.

-in filename

The input file, default is standard input.

-out filename

Output file to place the DER encoded data into. If this option is not present then no data will be output. This is most useful when combined with the -strparse option.

-noout

Don't output the parsed version of the input file.

-offset number

Starting offset to begin parsing, default is start of file.

-length number

Number of bytes to parse, default is until end of file.

-i

Indents the output according to the "depth" of the structures.

-oid filename

A file containing additional OBJECT IDENTIFIERs (OIDs). The format of this file is described in the NOTES section below.

-dump

Dump unknown data in hex format.

-dlimit num

Like -dump, but only the first num bytes are output.

-strparse offset

Parse the contents octets of the ASN.1 object starting at offset. This option can be used multiple times to "drill down" into a nested structure.

-genstr string, -genconf file

Generate encoded data based on string, file or both using ASN1_generate_nconf(3) format. If file only is present then the string is obtained from the default section using the name asn1. The encoded data is passed through the ASN1 parser and printed out as though it came from a file, the contents can thus be examined and written to a file using the out option.

-strictpem

If this option is used then -inform will be ignored. Without this option any data in a PEM format input file will be treated as being base64 encoded and processed whether it has the normal PEM BEGIN and END markers or not. This option will ignore any data prior to the start of the BEGIN marker, or after an END marker in a PEM file.

-item name

Attempt to decode and print the data as ASN1_ITEM name. This can be used to print out the fields of any supported ASN.1 structure if the type is known.

Output

The output will typically contain lines like this:

  0:d=0  hl=4 l= 681 cons: SEQUENCE

.....

  229:d=3  hl=3 l= 141 prim: BIT STRING
  373:d=2  hl=3 l= 162 cons: cont [ 3 ]
  376:d=3  hl=3 l= 159 cons: SEQUENCE
  379:d=4  hl=2 l=  29 cons: SEQUENCE
  381:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Subject Key Identifier
  386:d=5  hl=2 l=  22 prim: OCTET STRING
  410:d=4  hl=2 l= 112 cons: SEQUENCE
  412:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Authority Key Identifier
  417:d=5  hl=2 l= 105 prim: OCTET STRING
  524:d=4  hl=2 l=  12 cons: SEQUENCE

.....

This example is part of a self-signed certificate. Each line starts with the offset in decimal. d=XX specifies the current depth. The depth is increased within the scope of any SET or SEQUENCE. hl=XX gives the header length (tag and length octets) of the current type. l=XX gives the length of the contents octets.

The -i option can be used to make the output more readable.

Some knowledge of the ASN.1 structure is needed to interpret the output.

In this example the BIT STRING at offset 229 is the certificate public key. The contents octets of this will contain the public key information. This can be examined using the option -strparse 229 to yield:

    0:d=0  hl=3 l= 137 cons: SEQUENCE
    3:d=1  hl=3 l= 129 prim: INTEGER           :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
  135:d=1  hl=2 l=   3 prim: INTEGER           :010001

NOTES

If an OID is not part of OpenSSL's internal table it will be represented in numerical form (for example 1.2.3.4). The file passed to the -oid option allows additional OIDs to be included. Each line consists of three columns, the first column is the OID in numerical format and should be followed by white space. The second column is the "short name" which is a single word followed by white space. The final column is the rest of the line and is the "long name". asn1parse displays the long name. Example:

1.2.3.4 shortName A long name

EXAMPLES

Parse a file:

 openssl asn1parse -in file.pem

Parse a DER file:

 openssl asn1parse -inform DER -in file.der

Generate a simple UTF8String:

 openssl asn1parse -genstr 'UTF8:Hello World'

Generate and write out a UTF8String, don't print parsed output:

 openssl asn1parse -genstr 'UTF8:Hello World' -noout -out utf8.der

Generate using a config file:

 openssl asn1parse -genconf asn1.cnf -noout -out asn1.der

Example config file:

 asn1=SEQUENCE:seq_sect

 [seq_sect]

 field1=BOOL:TRUE
 field2=EXP:0, UTF8:some random string

BUGS

There should be options to change the format of output lines. The output of some ASN.1 types is not well handled (if at all).

SEE ALSO

ASN1_generate_nconf(3)

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!K@ 7 7 pkeyutl.htmlnu[ pkeyutl

NAME

openssl-pkeyutl, pkeyutl - public key algorithm utility

SYNOPSIS

openssl pkeyutl [-help] [-in file] [-out file] [-sigfile file] [-inkey file] [-keyform PEM|DER|ENGINE] [-passin arg] [-peerkey file] [-peerform PEM|DER|ENGINE] [-pubin] [-certin] [-rev] [-sign] [-verify] [-verifyrecover] [-encrypt] [-decrypt] [-derive] [-kdf algorithm] [-kdflen length] [-pkeyopt opt:value] [-hexdump] [-asn1parse] [-rand file...] [-writerand file] [-engine id] [-engine_impl]

DESCRIPTION

The pkeyutl command can be used to perform low-level public key operations using any supported algorithm.

OPTIONS

-help

Print out a usage message.

-in filename

This specifies the input filename to read data from or standard input if this option is not specified.

-out filename

Specifies the output filename to write to or standard output by default.

-sigfile file

Signature file, required for verify operations only

-inkey file

The input key file, by default it should be a private key.

-keyform PEM|DER|ENGINE

The key format PEM, DER or ENGINE. Default is PEM.

-passin arg

The input key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-peerkey file

The peer key file, used by key derivation (agreement) operations.

-peerform PEM|DER|ENGINE

The peer key format PEM, DER or ENGINE. Default is PEM.

-pubin

The input file is a public key.

-certin

The input is a certificate containing a public key.

-rev

Reverse the order of the input buffer. This is useful for some libraries (such as CryptoAPI) which represent the buffer in little endian format.

-sign

Sign the input data (which must be a hash) and output the signed result. This requires a private key.

-verify

Verify the input data (which must be a hash) against the signature file and indicate if the verification succeeded or failed.

-verifyrecover

Verify the input data (which must be a hash) and output the recovered data.

-encrypt

Encrypt the input data using a public key.

-decrypt

Decrypt the input data using a private key.

-derive

Derive a shared secret using the peer key.

-kdf algorithm

Use key derivation function algorithm. The supported algorithms are at present TLS1-PRF and HKDF. Note: additional parameters and the KDF output length will normally have to be set for this to work. See EVP_PKEY_CTX_set_hkdf_md(3) and EVP_PKEY_CTX_set_tls1_prf_md(3) for the supported string parameters of each algorithm.

-kdflen length

Set the output length for KDF.

-pkeyopt opt:value

Public key options specified as opt:value. See NOTES below for more details.

-hexdump

hex dump the output data.

-asn1parse

Parse the ASN.1 output data, this is useful when combined with the -verifyrecover option when an ASN1 structure is signed.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-engine id

Specifying an engine (by its unique id string) will cause pkeyutl to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-engine_impl

When used with the -engine option, it specifies to also use engine id for crypto operations.

NOTES

The operations and options supported vary according to the key algorithm and its implementation. The OpenSSL operations and options are indicated below.

Unless otherwise mentioned all algorithms support the digest:alg option which specifies the digest in use for sign, verify and verifyrecover operations. The value alg should represent a digest name as used in the EVP_get_digestbyname() function for example sha1. This value is not used to hash the input data. It is used (by some algorithms) for sanity-checking the lengths of data passed in to the pkeyutl and for creating the structures that make up the signature (e.g. DigestInfo in RSASSA PKCS#1 v1.5 signatures).

This utility does not hash the input data but rather it will use the data directly as input to the signature algorithm. Depending on the key type, signature type, and mode of padding, the maximum acceptable lengths of input data differ. The signed data can't be longer than the key modulus with RSA. In case of ECDSA and DSA the data shouldn't be longer than the field size, otherwise it will be silently truncated to the field size. In any event the input size must not be larger than the largest supported digest size.

In other words, if the value of digest is sha1 the input should be the 20 bytes long binary encoding of the SHA-1 hash function output.

The Ed25519 and Ed448 signature algorithms are not supported by this utility. They accept non-hashed input, but this utility can only be used to sign hashed input.

RSA ALGORITHM

The RSA algorithm generally supports the encrypt, decrypt, sign, verify and verifyrecover operations. However, some padding modes support only a subset of these operations. The following additional pkeyopt values are supported:

rsa_padding_mode:mode

This sets the RSA padding mode. Acceptable values for mode are pkcs1 for PKCS#1 padding, sslv23 for SSLv23 padding, none for no padding, oaep for OAEP mode, x931 for X9.31 mode and pss for PSS.

In PKCS#1 padding if the message digest is not set then the supplied data is signed or verified directly instead of using a DigestInfo structure. If a digest is set then the a DigestInfo structure is used and its the length must correspond to the digest type.

For oaep mode only encryption and decryption is supported.

For x931 if the digest type is set it is used to format the block data otherwise the first byte is used to specify the X9.31 digest ID. Sign, verify and verifyrecover are can be performed in this mode.

For pss mode only sign and verify are supported and the digest type must be specified.

rsa_pss_saltlen:len

For pss mode only this option specifies the salt length. Three special values are supported: "digest" sets the salt length to the digest length, "max" sets the salt length to the maximum permissible value. When verifying "auto" causes the salt length to be automatically determined based on the PSS block structure.

rsa_mgf1_md:digest

For PSS and OAEP padding sets the MGF1 digest. If the MGF1 digest is not explicitly set in PSS mode then the signing digest is used.

rsa_oaep_md:digest

Sets the digest used for the OAEP hash function. If not explicitly set then SHA1 is used.

RSA-PSS ALGORITHM

The RSA-PSS algorithm is a restricted version of the RSA algorithm which only supports the sign and verify operations with PSS padding. The following additional pkeyopt values are supported:

rsa_padding_mode:mode, rsa_pss_saltlen:len, rsa_mgf1_md:digest

These have the same meaning as the RSA algorithm with some additional restrictions. The padding mode can only be set to pss which is the default value.

If the key has parameter restrictions than the digest, MGF1 digest and salt length are set to the values specified in the parameters. The digest and MG cannot be changed and the salt length cannot be set to a value less than the minimum restriction.

DSA ALGORITHM

The DSA algorithm supports signing and verification operations only. Currently there are no additional -pkeyopt options other than digest. The SHA1 digest is assumed by default.

DH ALGORITHM

The DH algorithm only supports the derivation operation and no additional -pkeyopt options.

EC ALGORITHM

The EC algorithm supports sign, verify and derive operations. The sign and verify operations use ECDSA and derive uses ECDH. SHA1 is assumed by default for the -pkeyopt digest option.

X25519 and X448 ALGORITHMS

The X25519 and X448 algorithms support key derivation only. Currently there are no additional options.

EXAMPLES

Sign some data using a private key:

 openssl pkeyutl -sign -in file -inkey key.pem -out sig

Recover the signed data (e.g. if an RSA key is used):

 openssl pkeyutl -verifyrecover -in sig -inkey key.pem

Verify the signature (e.g. a DSA key):

 openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem

Sign data using a message digest value (this is currently only valid for RSA):

 openssl pkeyutl -sign -in file -inkey key.pem -out sig -pkeyopt digest:sha256

Derive a shared secret value:

 openssl pkeyutl -derive -inkey key.pem -peerkey pubkey.pem -out secret

Hexdump 48 bytes of TLS1 PRF using digest SHA256 and shared secret and seed consisting of the single byte 0xFF:

 openssl pkeyutl -kdf TLS1-PRF -kdflen 48 -pkeyopt md:SHA256 \
    -pkeyopt hexsecret:ff -pkeyopt hexseed:ff -hexdump

Decrypt some data using a private key with OAEP padding using SHA256:

 openssl pkeyutl -decrypt -in file -inkey key.pem -out secret \
    -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256

SEE ALSO

genpkey(1), pkey(1), rsautl(1) dgst(1), rsa(1), genrsa(1), EVP_PKEY_CTX_set_hkdf_md(3), EVP_PKEY_CTX_set_tls1_prf_md(3)

COPYRIGHT

Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!w srp.htmlnu[ srp

NAME

openssl-srp, srp - maintain SRP password file

SYNOPSIS

openssl srp [-help] [-verbose] [-add] [-modify] [-delete] [-list] [-name section] [-config file] [-srpvfile file] [-gn identifier] [-userinfo text...] [-passin arg] [-passout arg] [user...]

DESCRIPTION

The srp command is user to maintain an SRP (secure remote password) file. At most one of the -add, -modify, -delete, and -list options can be specified. These options take zero or more usernames as parameters and perform the appropriate operation on the SRP file. For -list, if no user is given then all users are displayed.

The configuration file to use, and the section within the file, can be specified with the -config and -name flags, respectively. If the config file is not specified, the -srpvfile can be used to just specify the file to operate on.

The -userinfo option specifies additional information to add when adding or modifying a user.

The -gn flag specifies the g and N values, using one of the strengths defined in IETF RFC 5054.

The -passin and -passout arguments are parsed as described in the openssl(1) command.

OPTIONS

[-help]

Display an option summary.

[-verbose]

Generate verbose output while processing.

COPYRIGHT

Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!{ dhparam.htmlnu[ dhparam

NAME

openssl-dhparam, dhparam - DH parameter manipulation and generation

SYNOPSIS

openssl dhparam [-help] [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-dsaparam] [-check] [-noout] [-text] [-C] [-2] [-5] [-rand file...] [-writerand file] [-engine id] [numbits]

DESCRIPTION

This command is used to manipulate DH parameter files.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN1 DER encoded form compatible with the PKCS#3 DHparameter structure. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read parameters from or standard input if this option is not specified.

-out filename

This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should not be the same as the input filename.

-dsaparam

If this option is used, DSA rather than DH parameters are read or created; they are converted to DH format. Otherwise, "strong" primes (such that (p-1)/2 is also prime) will be used for DH parameter generation.

DH parameter generation with the -dsaparam option is much faster, and the recommended exponent length is shorter, which makes DH key exchange more efficient. Beware that with such DSA-style DH parameters, a fresh DH key should be created for each use to avoid small-subgroup attacks that may be possible otherwise.

-check

Performs numerous checks to see if the supplied parameters are valid and displays a warning if not.

-2, -5

The generator to use, either 2 or 5. If present then the input file is ignored and parameters are generated instead. If not present but numbits is present, parameters are generated with the default generator 2.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

numbits

This option specifies that a parameter set should be generated of size numbits. It must be the last option. If this option is present then the input file is ignored and parameters are generated instead. If this option is not present but a generator (-2 or -5) is present, parameters are generated with a default length of 2048 bits.

-noout

This option inhibits the output of the encoded version of the parameters.

-text

This option prints out the DH parameters in human readable form.

-C

This option converts the parameters into C code. The parameters can then be loaded by calling the get_dhNNNN() function.

-engine id

Specifying an engine (by its unique id string) will cause dhparam to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

WARNINGS

The program dhparam combines the functionality of the programs dh and gendh in previous versions of OpenSSL. The dh and gendh programs are retained for now but may have different purposes in future versions of OpenSSL.

NOTES

PEM format DH parameters use the header and footer lines:

 -----BEGIN DH PARAMETERS-----
 -----END DH PARAMETERS-----

OpenSSL currently only supports the older PKCS#3 DH, not the newer X9.42 DH.

This program manipulates DH parameters not keys.

BUGS

There should be a way to generate and manipulate DH keys.

SEE ALSO

dsaparam(1)

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!Brsa.htmlnu[ rsa

NAME

openssl-rsa, rsa - RSA key processing tool

SYNOPSIS

openssl rsa [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]

DESCRIPTION

The rsa command processes RSA keys. They can be converted between various forms and their components printed out. Note this command uses the traditional SSLeay compatible format for private key encryption: newer applications should use the more secure PKCS#8 format using the pkcs8 utility.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN1 DER encoded form compatible with the PKCS#1 RSAPrivateKey or SubjectPublicKeyInfo format. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines. On input PKCS#8 format private keys are also accepted.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write a key to or standard output if this option is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.

-passout password

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the rsa utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with PEM format output files.

-text

Prints out the various public or private key components in plain text in addition to the encoded version.

-noout

This option prevents output of the encoded version of the key.

-modulus

This option prints out the value of the modulus of the key.

-check

This option checks the consistency of an RSA private key.

-pubin

By default a private key is read from the input file: with this option a public key is read instead.

-pubout

By default a private key is output: with this option a public key will be output instead. This option is automatically set if the input is a public key.

-RSAPublicKey_in, -RSAPublicKey_out

Like -pubin and -pubout except RSAPublicKey format is used instead.

-engine id

Specifying an engine (by its unique id string) will cause rsa to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

NOTES

The PEM private key format uses the header and footer lines:

 -----BEGIN RSA PRIVATE KEY-----
 -----END RSA PRIVATE KEY-----

The PEM public key format uses the header and footer lines:

 -----BEGIN PUBLIC KEY-----
 -----END PUBLIC KEY-----

The PEM RSAPublicKey format uses the header and footer lines:

 -----BEGIN RSA PUBLIC KEY-----
 -----END RSA PUBLIC KEY-----

EXAMPLES

To remove the pass phrase on an RSA private key:

 openssl rsa -in key.pem -out keyout.pem

To encrypt a private key using triple DES:

 openssl rsa -in key.pem -des3 -out keyout.pem

To convert a private key from PEM to DER format:

 openssl rsa -in key.pem -outform DER -out keyout.der

To print out the components of a private key to standard output:

 openssl rsa -in key.pem -text -noout

To just output the public part of a private key:

 openssl rsa -in key.pem -pubout -out pubkey.pem

Output the public part of a private key in RSAPublicKey format:

 openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem

BUGS

There should be an option that automatically handles .key files, without having to manually edit them.

SEE ALSO

pkcs8(1), dsa(1), genrsa(1), gendsa(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!O4cc storeutl.htmlnu[ storeutl

NAME

openssl-storeutl, storeutl - STORE utility

SYNOPSIS

openssl storeutl [-help] [-out file] [-noout] [-passin arg] [-text arg] [-engine id] [-r] [-certs] [-keys] [-crls] [-subject arg] [-issuer arg] [-serial arg] [-alias arg] [-fingerprint arg] [-digest] uri ...

DESCRIPTION

The storeutl command can be used to display the contents (after decryption as the case may be) fetched from the given URIs.

OPTIONS

-help

Print out a usage message.

-out filename

specifies the output filename to write to or standard output by default.

-noout

this option prevents output of the PEM data.

-passin arg

the key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-text

Prints out the objects in text form, similarly to the -text output from openssl x509, openssl pkey, etc.

-engine id

specifying an engine (by its unique id string) will cause storeutl to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-r

Fetch objects recursively when possible.

-certs
-keys
-crls

Only select the certificates, keys or CRLs from the given URI. However, if this URI would return a set of names (URIs), those are always returned.

-subject arg

Search for an object having the subject name arg. The arg must be formatted as /type0=value0/type1=value1/type2=.... Keyword characters may be escaped by \ (backslash), and whitespace is retained. Empty values are permitted but are ignored for the search. That is, a search with an empty value will have the same effect as not specifying the type at all.

-issuer arg
-serial arg

Search for an object having the given issuer name and serial number. These two options must be used together. The issuer arg must be formatted as /type0=value0/type1=value1/type2=..., characters may be escaped by \ (backslash), no spaces are skipped. The serial arg may be specified as a decimal value or a hex value if preceded by 0x.

-alias arg

Search for an object having the given alias.

-fingerprint arg

Search for an object having the given fingerprint.

-digest

The digest that was used to compute the fingerprint given with -fingerprint.

SEE ALSO

openssl(1)

HISTORY

The openssl storeutl app was added in OpenSSL 1.1.1.

COPYRIGHT

Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!KI{{ca.htmlnu[ ca

NAME

openssl-ca, ca - sample minimal CA application

SYNOPSIS

openssl ca [-help] [-verbose] [-config filename] [-name section] [-gencrl] [-revoke file] [-valid file] [-status serial] [-updatedb] [-crl_reason reason] [-crl_hold instruction] [-crl_compromise time] [-crl_CA_compromise time] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [-enddate date] [-days arg] [-md arg] [-policy arg] [-keyfile arg] [-keyform PEM|DER] [-key arg] [-passin arg] [-cert file] [-selfsign] [-in file] [-out file] [-notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] [-preserveDN] [-noemailDN] [-batch] [-msie_hack] [-extensions section] [-extfile section] [-engine id] [-subj arg] [-utf8] [-sigopt nm:v] [-create_serial] [-rand_serial] [-multivalue-rdn] [-rand file...] [-writerand file]

DESCRIPTION

The ca command is a minimal CA application. It can be used to sign certificate requests in a variety of forms and generate CRLs it also maintains a text database of issued certificates and their status.

The options descriptions will be divided into each purpose.

OPTIONS

-help

Print out a usage message.

-verbose

This prints extra details about the operations being performed.

-config filename

Specifies the configuration file to use. Optional; for a description of the default value, see "COMMAND SUMMARY" in openssl(1).

-name section

Specifies the configuration file section to use (overrides default_ca in the ca section).

-in filename

An input filename containing a single certificate request to be signed by the CA.

-ss_cert filename

A single self-signed certificate to be signed by the CA.

-spkac filename

A file containing a single Netscape signed public key and challenge and additional field values to be signed by the CA. See the SPKAC FORMAT section for information on the required input and output format.

-infiles

If present this should be the last option, all subsequent arguments are taken as the names of files containing certificate requests.

-out filename

The output file to output certificates to. The default is standard output. The certificate details will also be printed out to this file in PEM format (except that -spkac outputs DER format).

-outdir directory

The directory to output certificates to. The certificate will be written to a filename consisting of the serial number in hex with ".pem" appended.

-cert

The CA certificate file.

-keyfile filename

The private key to sign requests with.

-keyform PEM|DER

The format of the data in the private key file. The default is PEM.

-sigopt nm:v

Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific.

-key password

The password used to encrypt the private key. Since on some systems the command line arguments are visible (e.g. Unix with the 'ps' utility) this option should be used with caution.

-selfsign

Indicates the issued certificates are to be signed with the key the certificate requests were signed with (given with -keyfile). Certificate requests signed with a different key are ignored. If -spkac, -ss_cert or -gencrl are given, -selfsign is ignored.

A consequence of using -selfsign is that the self-signed certificate appears among the entries in the certificate database (see the configuration option database), and uses the same serial number counter as all other certificates sign with the self-signed certificate.

-passin arg

The key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-notext

Don't output the text form of a certificate to the output file.

-startdate date

This allows the start date to be explicitly set. The format of the date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or YYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In both formats, seconds SS and timezone Z must be present.

-enddate date

This allows the expiry date to be explicitly set. The format of the date is YYMMDDHHMMSSZ (the same as an ASN1 UTCTime structure), or YYYYMMDDHHMMSSZ (the same as an ASN1 GeneralizedTime structure). In both formats, seconds SS and timezone Z must be present.

-days arg

The number of days to certify the certificate for.

-md alg

The message digest to use. Any digest supported by the OpenSSL dgst command can be used. For signing algorithms that do not support a digest (i.e. Ed25519 and Ed448) any message digest that is set is ignored. This option also applies to CRLs.

-policy arg

This option defines the CA "policy" to use. This is a section in the configuration file which decides which fields should be mandatory or match the CA certificate. Check out the POLICY FORMAT section for more information.

-msie_hack

This is a deprecated option to make ca work with very old versions of the IE certificate enrollment control "certenr3". It used UniversalStrings for almost everything. Since the old control has various security bugs its use is strongly discouraged.

-preserveDN

Normally the DN order of a certificate is the same as the order of the fields in the relevant policy section. When this option is set the order is the same as the request. This is largely for compatibility with the older IE enrollment control which would only accept certificates if their DNs match the order of the request. This is not needed for Xenroll.

-noemailDN

The DN of a certificate can contain the EMAIL field if present in the request DN, however, it is good policy just having the e-mail set into the altName extension of the certificate. When this option is set the EMAIL field is removed from the certificate' subject and set only in the, eventually present, extensions. The email_in_dn keyword can be used in the configuration file to enable this behaviour.

-batch

This sets the batch mode. In this mode no questions will be asked and all certificates will be certified automatically.

-extensions section

The section of the configuration file containing certificate extensions to be added when a certificate is issued (defaults to x509_extensions unless the -extfile option is used). If no extension section is present then, a V1 certificate is created. If the extension section is present (even if it is empty), then a V3 certificate is created. See the x509v3_config(5) manual page for details of the extension section format.

-extfile file

An additional configuration file to read certificate extensions from (using the default section unless the -extensions option is also used).

-engine id

Specifying an engine (by its unique id string) will cause ca to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-subj arg

Supersedes subject name given in the request. The arg must be formatted as /type0=value0/type1=value1/type2=.... Keyword characters may be escaped by \ (backslash), and whitespace is retained. Empty values are permitted, but the corresponding type will not be included in the resulting certificate.

-utf8

This option causes field values to be interpreted as UTF8 strings, by default they are interpreted as ASCII. This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid UTF8 strings.

-create_serial

If reading serial from the text file as specified in the configuration fails, specifying this option creates a new random serial to be used as next serial number. To get random serial numbers, use the -rand_serial flag instead; this should only be used for simple error-recovery.

-rand_serial

Generate a large random number to use as the serial number. This overrides any option or configuration to use a serial number file.

-multivalue-rdn

This option causes the -subj argument to be interpreted with full support for multivalued RDNs. Example:

/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe

If -multi-rdn is not used then the UID value is 123456+CN=John Doe.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

CRL OPTIONS

-gencrl

This option generates a CRL based on information in the index file.

-crldays num

The number of days before the next CRL is due. That is the days from now to place in the CRL nextUpdate field.

-crlhours num

The number of hours before the next CRL is due.

-revoke filename

A filename containing a certificate to revoke.

-valid filename

A filename containing a certificate to add a Valid certificate entry.

-status serial

Displays the revocation status of the certificate with the specified serial number and exits.

-updatedb

Updates the database index to purge expired certificates.

-crl_reason reason

Revocation reason, where reason is one of: unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold or removeFromCRL. The matching of reason is case insensitive. Setting any revocation reason will make the CRL v2.

In practice removeFromCRL is not particularly useful because it is only used in delta CRLs which are not currently implemented.

-crl_hold instruction

This sets the CRL revocation reason code to certificateHold and the hold instruction to instruction which must be an OID. Although any OID can be used only holdInstructionNone (the use of which is discouraged by RFC2459) holdInstructionCallIssuer or holdInstructionReject will normally be used.

-crl_compromise time

This sets the revocation reason to keyCompromise and the compromise time to time. time should be in GeneralizedTime format that is YYYYMMDDHHMMSSZ.

-crl_CA_compromise time

This is the same as crl_compromise except the revocation reason is set to CACompromise.

-crlexts section

The section of the configuration file containing CRL extensions to include. If no CRL extension section is present then a V1 CRL is created, if the CRL extension section is present (even if it is empty) then a V2 CRL is created. The CRL extensions specified are CRL extensions and not CRL entry extensions. It should be noted that some software (for example Netscape) can't handle V2 CRLs. See x509v3_config(5) manual page for details of the extension section format.

CONFIGURATION FILE OPTIONS

The section of the configuration file containing options for ca is found as follows: If the -name command line option is used, then it names the section to be used. Otherwise the section to be used must be named in the default_ca option of the ca section of the configuration file (or in the default section of the configuration file). Besides default_ca, the following options are read directly from the ca section: RANDFILE preserve msie_hack With the exception of RANDFILE, this is probably a bug and may change in future releases.

Many of the configuration file options are identical to command line options. Where the option is present in the configuration file and the command line the command line value is used. Where an option is described as mandatory then it must be present in the configuration file or the command line equivalent (if any) used.

oid_file

This specifies a file containing additional OBJECT IDENTIFIERS. Each line of the file should consist of the numerical form of the object identifier followed by white space then the short name followed by white space and finally the long name.

oid_section

This specifies a section in the configuration file containing extra object identifiers. Each line should consist of the short name of the object identifier followed by = and the numerical form. The short and long names are the same when this option is used.

new_certs_dir

The same as the -outdir command line option. It specifies the directory where new certificates will be placed. Mandatory.

certificate

The same as -cert. It gives the file containing the CA certificate. Mandatory.

private_key

Same as the -keyfile option. The file containing the CA private key. Mandatory.

RANDFILE

At startup the specified file is loaded into the random number generator, and at exit 256 bytes will be written to it.

default_days

The same as the -days option. The number of days to certify a certificate for.

default_startdate

The same as the -startdate option. The start date to certify a certificate for. If not set the current time is used.

default_enddate

The same as the -enddate option. Either this option or default_days (or the command line equivalents) must be present.

default_crl_hours default_crl_days

The same as the -crlhours and the -crldays options. These will only be used if neither command line option is present. At least one of these must be present to generate a CRL.

default_md

The same as the -md option. Mandatory except where the signing algorithm does not require a digest (i.e. Ed25519 and Ed448).

database

The text database file to use. Mandatory. This file must be present though initially it will be empty.

unique_subject

If the value yes is given, the valid certificate entries in the database must have unique subjects. if the value no is given, several valid certificate entries may have the exact same subject. The default value is yes, to be compatible with older (pre 0.9.8) versions of OpenSSL. However, to make CA certificate roll-over easier, it's recommended to use the value no, especially if combined with the -selfsign command line option.

Note that it is valid in some circumstances for certificates to be created without any subject. In the case where there are multiple certificates without subjects this does not count as a duplicate.

serial

A text file containing the next serial number to use in hex. Mandatory. This file must be present and contain a valid serial number.

crlnumber

A text file containing the next CRL number to use in hex. The crl number will be inserted in the CRLs only if this file exists. If this file is present, it must contain a valid CRL number.

x509_extensions

The same as -extensions.

crl_extensions

The same as -crlexts.

preserve

The same as -preserveDN

email_in_dn

The same as -noemailDN. If you want the EMAIL field to be removed from the DN of the certificate simply set this to 'no'. If not present the default is to allow for the EMAIL filed in the certificate's DN.

msie_hack

The same as -msie_hack

policy

The same as -policy. Mandatory. See the POLICY FORMAT section for more information.

name_opt, cert_opt

These options allow the format used to display the certificate details when asking the user to confirm signing. All the options supported by the x509 utilities -nameopt and -certopt switches can be used here, except the no_signame and no_sigdump are permanently set and cannot be disabled (this is because the certificate signature cannot be displayed because the certificate has not been signed at this point).

For convenience the values ca_default are accepted by both to produce a reasonable output.

If neither option is present the format used in earlier versions of OpenSSL is used. Use of the old format is strongly discouraged because it only displays fields mentioned in the policy section, mishandles multicharacter string types and does not display extensions.

copy_extensions

Determines how extensions in certificate requests should be handled. If set to none or this option is not present then extensions are ignored and not copied to the certificate. If set to copy then any extensions present in the request that are not already present are copied to the certificate. If set to copyall then all extensions in the request are copied to the certificate: if the extension is already present in the certificate it is deleted first. See the WARNINGS section before using this option.

The main use of this option is to allow a certificate request to supply values for certain extensions such as subjectAltName.

POLICY FORMAT

The policy section consists of a set of variables corresponding to certificate DN fields. If the value is "match" then the field value must match the same field in the CA certificate. If the value is "supplied" then it must be present. If the value is "optional" then it may be present. Any fields not mentioned in the policy section are silently deleted, unless the -preserveDN option is set but this can be regarded more of a quirk than intended behaviour.

SPKAC FORMAT

The input to the -spkac command line option is a Netscape signed public key and challenge. This will usually come from the KEYGEN tag in an HTML form to create a new private key. It is however possible to create SPKACs using the spkac utility.

The file should contain the variable SPKAC set to the value of the SPKAC and also the required DN components as name value pairs. If you need to include the same component twice then it can be preceded by a number and a '.'.

When processing SPKAC format, the output is DER if the -out flag is used, but PEM format if sending to stdout or the -outdir flag is used.

EXAMPLES

Note: these examples assume that the ca directory structure is already set up and the relevant files already exist. This usually involves creating a CA certificate and private key with req, a serial number file and an empty index file and placing them in the relevant directories.

To use the sample configuration file below the directories demoCA, demoCA/private and demoCA/newcerts would be created. The CA certificate would be copied to demoCA/cacert.pem and its private key to demoCA/private/cakey.pem. A file demoCA/serial would be created containing for example "01" and the empty index file demoCA/index.txt.

Sign a certificate request:

 openssl ca -in req.pem -out newcert.pem

Sign a certificate request, using CA extensions:

 openssl ca -in req.pem -extensions v3_ca -out newcert.pem

Generate a CRL

 openssl ca -gencrl -out crl.pem

Sign several requests:

 openssl ca -infiles req1.pem req2.pem req3.pem

Certify a Netscape SPKAC:

 openssl ca -spkac spkac.txt

A sample SPKAC file (the SPKAC line has been truncated for clarity):

 SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5
 CN=Steve Test
 emailAddress=steve@openssl.org
 0.OU=OpenSSL Group
 1.OU=Another Group

A sample configuration file with the relevant sections for ca:

 [ ca ]
 default_ca      = CA_default            # The default ca section

 [ CA_default ]

 dir            = ./demoCA              # top dir
 database       = $dir/index.txt        # index file.
 new_certs_dir  = $dir/newcerts         # new certs dir

 certificate    = $dir/cacert.pem       # The CA cert
 serial         = $dir/serial           # serial no file
 #rand_serial    = yes                  # for random serial#'s
 private_key    = $dir/private/cakey.pem# CA private key
 RANDFILE       = $dir/private/.rand    # random number file

 default_days   = 365                   # how long to certify for
 default_crl_days= 30                   # how long before next CRL
 default_md     = md5                   # md to use

 policy         = policy_any            # default policy
 email_in_dn    = no                    # Don't add the email into cert DN

 name_opt       = ca_default            # Subject name display option
 cert_opt       = ca_default            # Certificate display option
 copy_extensions = none                 # Don't copy extensions from request

 [ policy_any ]
 countryName            = supplied
 stateOrProvinceName    = optional
 organizationName       = optional
 organizationalUnitName = optional
 commonName             = supplied
 emailAddress           = optional

FILES

Note: the location of all files can change either by compile time options, configuration file entries, environment variables or command line options. The values below reflect the default values.

 /usr/local/ssl/lib/openssl.cnf - master configuration file
 ./demoCA                       - main CA directory
 ./demoCA/cacert.pem            - CA certificate
 ./demoCA/private/cakey.pem     - CA private key
 ./demoCA/serial                - CA serial number file
 ./demoCA/serial.old            - CA serial number backup file
 ./demoCA/index.txt             - CA text database file
 ./demoCA/index.txt.old         - CA text database backup file
 ./demoCA/certs                 - certificate output file
 ./demoCA/.rnd                  - CA random seed information

RESTRICTIONS

The text database index file is a critical part of the process and if corrupted it can be difficult to fix. It is theoretically possible to rebuild the index file from all the issued certificates and a current CRL: however there is no option to do this.

V2 CRL features like delta CRLs are not currently supported.

Although several requests can be input and handled at once it is only possible to include one SPKAC or self-signed certificate.

BUGS

The use of an in-memory text database can cause problems when large numbers of certificates are present because, as the name implies the database has to be kept in memory.

The ca command really needs rewriting or the required functionality exposed at either a command or interface level so a more friendly utility (perl script or GUI) can handle things properly. The script CA.pl helps a little but not very much.

Any fields in a request that are not present in a policy are silently deleted. This does not happen if the -preserveDN option is used. To enforce the absence of the EMAIL field within the DN, as suggested by RFCs, regardless the contents of the request' subject the -noemailDN option can be used. The behaviour should be more friendly and configurable.

Canceling some commands by refusing to certify a certificate can create an empty file.

WARNINGS

The ca command is quirky and at times downright unfriendly.

The ca utility was originally meant as an example of how to do things in a CA. It was not supposed to be used as a full blown CA itself: nevertheless some people are using it for this purpose.

The ca command is effectively a single user command: no locking is done on the various files and attempts to run more than one ca command on the same database can have unpredictable results.

The copy_extensions option should be used with caution. If care is not taken then it can be a security risk. For example if a certificate request contains a basicConstraints extension with CA:TRUE and the copy_extensions value is set to copyall and the user does not spot this when the certificate is displayed then this will hand the requester a valid CA certificate.

This situation can be avoided by setting copy_extensions to copy and including basicConstraints with CA:FALSE in the configuration file. Then if the request contains a basicConstraints extension it will be ignored.

It is advisable to also include values for other extensions such as keyUsage to prevent a request supplying its own values.

Additional restrictions can be placed on the CA certificate itself. For example if the CA certificate has:

 basicConstraints = CA:TRUE, pathlen:0

then even if a certificate is issued with CA:TRUE it will not be valid.

HISTORY

Since OpenSSL 1.1.1, the program follows RFC5280. Specifically, certificate validity period (specified by any of -startdate, -enddate and -days) will be encoded as UTCTime if the dates are earlier than year 2049 (included), and as GeneralizedTime if the dates are in year 2050 or later.

SEE ALSO

req(1), spkac(1), x509(1), CA.pl(1), config(5), x509v3_config(5)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!;j;jts.htmlnu[ ts

NAME

openssl-ts, ts - Time Stamping Authority tool (client/server)

SYNOPSIS

openssl ts -query [-rand file...] [-writerand file] [-config configfile] [-data file_to_hash] [-digest digest_bytes] [-digest] [-tspolicy object_id] [-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text]

openssl ts -reply [-config configfile] [-section tsa_section] [-queryfile request.tsq] [-passin password_src] [-signer tsa_cert.pem] [-inkey file_or_id] [-digest] [-chain certs_file.pem] [-tspolicy object_id] [-in response.tsr] [-token_in] [-out response.tsr] [-token_out] [-text] [-engine id]

openssl ts -verify [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq] [-in response.tsr] [-token_in] [-CApath trusted_cert_path] [-CAfile trusted_certs.pem] [-untrusted cert_file.pem] [verify options]

verify options: [-attime timestamp] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-issuer_checks] [-no_alt_chains] [-no_check_time] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict]

DESCRIPTION

The ts command is a basic Time Stamping Authority (TSA) client and server application as specified in RFC 3161 (Time-Stamp Protocol, TSP). A TSA can be part of a PKI deployment and its role is to provide long term proof of the existence of a certain datum before a particular time. Here is a brief description of the protocol:

  1. The TSA client computes a one-way hash value for a data file and sends the hash to the TSA.

  2. The TSA attaches the current date and time to the received hash value, signs them and sends the timestamp token back to the client. By creating this token the TSA certifies the existence of the original data file at the time of response generation.

  3. The TSA client receives the timestamp token and verifies the signature on it. It also checks if the token contains the same hash value that it had sent to the TSA.

There is one DER encoded protocol data unit defined for transporting a timestamp request to the TSA and one for sending the timestamp response back to the client. The ts command has three main functions: creating a timestamp request based on a data file, creating a timestamp response based on a request, verifying if a response corresponds to a particular request or a data file.

There is no support for sending the requests/responses automatically over HTTP or TCP yet as suggested in RFC 3161. The users must send the requests either by ftp or e-mail.

OPTIONS

Time Stamp Request generation

The -query switch can be used for creating and printing a timestamp request with the following options:

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-config configfile

The configuration file to use. Optional; for a description of the default value, see "COMMAND SUMMARY" in openssl(1).

-data file_to_hash

The data file for which the timestamp request needs to be created. stdin is the default if neither the -data nor the -digest parameter is specified. (Optional)

-digest digest_bytes

It is possible to specify the message imprint explicitly without the data file. The imprint must be specified in a hexadecimal format, two characters per byte, the bytes optionally separated by colons (e.g. 1A:F6:01:... or 1AF601...). The number of bytes must match the message digest algorithm in use. (Optional)

-digest

The message digest to apply to the data file. Any digest supported by the OpenSSL dgst command can be used. The default is SHA-1. (Optional)

-tspolicy object_id

The policy that the client expects the TSA to use for creating the timestamp token. Either the dotted OID notation or OID names defined in the config file can be used. If no policy is requested the TSA will use its own default policy. (Optional)

-no_nonce

No nonce is specified in the request if this option is given. Otherwise a 64 bit long pseudo-random none is included in the request. It is recommended to use nonce to protect against replay-attacks. (Optional)

-cert

The TSA is expected to include its signing certificate in the response. (Optional)

-in request.tsq

This option specifies a previously created timestamp request in DER format that will be printed into the output file. Useful when you need to examine the content of a request in human-readable format. (Optional)

-out request.tsq

Name of the output file to which the request will be written. Default is stdout. (Optional)

-text

If this option is specified the output is human-readable text format instead of DER. (Optional)

Time Stamp Response generation

A timestamp response (TimeStampResp) consists of a response status and the timestamp token itself (ContentInfo), if the token generation was successful. The -reply command is for creating a timestamp response or timestamp token based on a request and printing the response/token in human-readable format. If -token_out is not specified the output is always a timestamp response (TimeStampResp), otherwise it is a timestamp token (ContentInfo).

-config configfile

The configuration file to use. Optional; for a description of the default value, see "COMMAND SUMMARY" in openssl(1). See CONFIGURATION FILE OPTIONS for configurable variables.

-section tsa_section

The name of the config file section containing the settings for the response generation. If not specified the default TSA section is used, see CONFIGURATION FILE OPTIONS for details. (Optional)

-queryfile request.tsq

The name of the file containing a DER encoded timestamp request. (Optional)

-passin password_src

Specifies the password source for the private key of the TSA. See "Pass Phrase Options" in openssl(1). (Optional)

-signer tsa_cert.pem

The signer certificate of the TSA in PEM format. The TSA signing certificate must have exactly one extended key usage assigned to it: timeStamping. The extended key usage must also be critical, otherwise the certificate is going to be refused. Overrides the signer_cert variable of the config file. (Optional)

-inkey file_or_id

The signer private key of the TSA in PEM format. Overrides the signer_key config file option. (Optional) If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier.

-digest

Signing digest to use. Overrides the signer_digest config file option. (Mandatory unless specified in the config file)

-chain certs_file.pem

The collection of certificates in PEM format that will all be included in the response in addition to the signer certificate if the -cert option was used for the request. This file is supposed to contain the certificate chain for the signer certificate from its issuer upwards. The -reply command does not build a certificate chain automatically. (Optional)

-tspolicy object_id

The default policy to use for the response unless the client explicitly requires a particular TSA policy. The OID can be specified either in dotted notation or with its name. Overrides the default_policy config file option. (Optional)

-in response.tsr

Specifies a previously created timestamp response or timestamp token (if -token_in is also specified) in DER format that will be written to the output file. This option does not require a request, it is useful e.g. when you need to examine the content of a response or token or you want to extract the timestamp token from a response. If the input is a token and the output is a timestamp response a default 'granted' status info is added to the token. (Optional)

-token_in

This flag can be used together with the -in option and indicates that the input is a DER encoded timestamp token (ContentInfo) instead of a timestamp response (TimeStampResp). (Optional)

-out response.tsr

The response is written to this file. The format and content of the file depends on other options (see -text, -token_out). The default is stdout. (Optional)

-token_out

The output is a timestamp token (ContentInfo) instead of timestamp response (TimeStampResp). (Optional)

-text

If this option is specified the output is human-readable text format instead of DER. (Optional)

-engine id

Specifying an engine (by its unique id string) will cause ts to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. Default is builtin. (Optional)

Time Stamp Response verification

The -verify command is for verifying if a timestamp response or timestamp token is valid and matches a particular timestamp request or data file. The -verify command does not use the configuration file.

-data file_to_hash

The response or token must be verified against file_to_hash. The file is hashed with the message digest algorithm specified in the token. The -digest and -queryfile options must not be specified with this one. (Optional)

-digest digest_bytes

The response or token must be verified against the message digest specified with this option. The number of bytes must match the message digest algorithm specified in the token. The -data and -queryfile options must not be specified with this one. (Optional)

-queryfile request.tsq

The original timestamp request in DER format. The -data and -digest options must not be specified with this one. (Optional)

-in response.tsr

The timestamp response that needs to be verified in DER format. (Mandatory)

-token_in

This flag can be used together with the -in option and indicates that the input is a DER encoded timestamp token (ContentInfo) instead of a timestamp response (TimeStampResp). (Optional)

-CApath trusted_cert_path

The name of the directory containing the trusted CA certificates of the client. See the similar option of verify(1) for additional details. Either this option or -CAfile must be specified. (Optional)

-CAfile trusted_certs.pem

The name of the file containing a set of trusted self-signed CA certificates in PEM format. See the similar option of verify(1) for additional details. Either this option or -CApath must be specified. (Optional)

-untrusted cert_file.pem

Set of additional untrusted certificates in PEM format which may be needed when building the certificate chain for the TSA's signing certificate. This file must contain the TSA signing certificate and all intermediate CA certificates unless the response includes them. (Optional)

verify options

The options -attime timestamp, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -issuer_checks, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, and -x509_strict can be used to control timestamp verification. See verify(1).

CONFIGURATION FILE OPTIONS

The -query and -reply commands make use of a configuration file. See config(5) for a general description of the syntax of the config file. The -query command uses only the symbolic OID names section and it can work without it. However, the -reply command needs the config file for its operation.

When there is a command line switch equivalent of a variable the switch always overrides the settings in the config file.

tsa section, default_tsa

This is the main section and it specifies the name of another section that contains all the options for the -reply command. This default section can be overridden with the -section command line switch. (Optional)

oid_file

See ca(1) for description. (Optional)

oid_section

See ca(1) for description. (Optional)

RANDFILE

See ca(1) for description. (Optional)

serial

The name of the file containing the hexadecimal serial number of the last timestamp response created. This number is incremented by 1 for each response. If the file does not exist at the time of response generation a new file is created with serial number 1. (Mandatory)

crypto_device

Specifies the OpenSSL engine that will be set as the default for all available algorithms. The default value is builtin, you can specify any other engines supported by OpenSSL (e.g. use chil for the NCipher HSM). (Optional)

signer_cert

TSA signing certificate in PEM format. The same as the -signer command line option. (Optional)

certs

A file containing a set of PEM encoded certificates that need to be included in the response. The same as the -chain command line option. (Optional)

signer_key

The private key of the TSA in PEM format. The same as the -inkey command line option. (Optional)

signer_digest

Signing digest to use. The same as the -digest command line option. (Mandatory unless specified on the command line)

default_policy

The default policy to use when the request does not mandate any policy. The same as the -tspolicy command line option. (Optional)

other_policies

Comma separated list of policies that are also acceptable by the TSA and used only if the request explicitly specifies one of them. (Optional)

digests

The list of message digest algorithms that the TSA accepts. At least one algorithm must be specified. (Mandatory)

accuracy

The accuracy of the time source of the TSA in seconds, milliseconds and microseconds. E.g. secs:1, millisecs:500, microsecs:100. If any of the components is missing zero is assumed for that field. (Optional)

clock_precision_digits

Specifies the maximum number of digits, which represent the fraction of seconds, that need to be included in the time field. The trailing zeros must be removed from the time, so there might actually be fewer digits, or no fraction of seconds at all. Supported only on UNIX platforms. The maximum value is 6, default is 0. (Optional)

ordering

If this option is yes the responses generated by this TSA can always be ordered, even if the time difference between two responses is less than the sum of their accuracies. Default is no. (Optional)

tsa_name

Set this option to yes if the subject name of the TSA must be included in the TSA name field of the response. Default is no. (Optional)

ess_cert_id_chain

The SignedData objects created by the TSA always contain the certificate identifier of the signing certificate in a signed attribute (see RFC 2634, Enhanced Security Services). If this option is set to yes and either the certs variable or the -chain option is specified then the certificate identifiers of the chain will also be included in the SigningCertificate signed attribute. If this variable is set to no, only the signing certificate identifier is included. Default is no. (Optional)

ess_cert_id_alg

This option specifies the hash function to be used to calculate the TSA's public key certificate identifier. Default is sha1. (Optional)

EXAMPLES

All the examples below presume that OPENSSL_CONF is set to a proper configuration file, e.g. the example configuration file openssl/apps/openssl.cnf will do.

Time Stamp Request

To create a timestamp request for design1.txt with SHA-1 without nonce and policy and no certificate is required in the response:

  openssl ts -query -data design1.txt -no_nonce \
        -out design1.tsq

To create a similar timestamp request with specifying the message imprint explicitly:

  openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
         -no_nonce -out design1.tsq

To print the content of the previous request in human readable format:

  openssl ts -query -in design1.tsq -text

To create a timestamp request which includes the MD-5 digest of design2.txt, requests the signer certificate and nonce, specifies a policy id (assuming the tsa_policy1 name is defined in the OID section of the config file):

  openssl ts -query -data design2.txt -md5 \
        -tspolicy tsa_policy1 -cert -out design2.tsq

Time Stamp Response

Before generating a response a signing certificate must be created for the TSA that contains the timeStamping critical extended key usage extension without any other key usage extensions. You can add this line to the user certificate section of the config file to generate a proper certificate;

   extendedKeyUsage = critical,timeStamping

See req(1), ca(1), and x509(1) for instructions. The examples below assume that cacert.pem contains the certificate of the CA, tsacert.pem is the signing certificate issued by cacert.pem and tsakey.pem is the private key of the TSA.

To create a timestamp response for a request:

  openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem \
        -signer tsacert.pem -out design1.tsr

If you want to use the settings in the config file you could just write:

  openssl ts -reply -queryfile design1.tsq -out design1.tsr

To print a timestamp reply to stdout in human readable format:

  openssl ts -reply -in design1.tsr -text

To create a timestamp token instead of timestamp response:

  openssl ts -reply -queryfile design1.tsq -out design1_token.der -token_out

To print a timestamp token to stdout in human readable format:

  openssl ts -reply -in design1_token.der -token_in -text -token_out

To extract the timestamp token from a response:

  openssl ts -reply -in design1.tsr -out design1_token.der -token_out

To add 'granted' status info to a timestamp token thereby creating a valid response:

  openssl ts -reply -in design1_token.der -token_in -out design1.tsr

Time Stamp Verification

To verify a timestamp reply against a request:

  openssl ts -verify -queryfile design1.tsq -in design1.tsr \
        -CAfile cacert.pem -untrusted tsacert.pem

To verify a timestamp reply that includes the certificate chain:

  openssl ts -verify -queryfile design2.tsq -in design2.tsr \
        -CAfile cacert.pem

To verify a timestamp token against the original data file: openssl ts -verify -data design2.txt -in design2.tsr \ -CAfile cacert.pem

To verify a timestamp token against a message imprint: openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \ -in design2.tsr -CAfile cacert.pem

You could also look at the 'test' directory for more examples.

BUGS

  • No support for timestamps over SMTP, though it is quite easy to implement an automatic e-mail based TSA with procmail(1) and perl(1). HTTP server support is provided in the form of a separate apache module. HTTP client support is provided by tsget(1). Pure TCP/IP protocol is not supported.

  • The file containing the last serial number of the TSA is not locked when being read or written. This is a problem if more than one instance of openssl(1) is trying to create a timestamp response at the same time. This is not an issue when using the apache server module, it does proper locking.

  • Look for the FIXME word in the source files.

  • The source code should really be reviewed by somebody else, too.

  • More testing is needed, I have done only some basic tests (see test/testtsa).

SEE ALSO

tsget(1), openssl(1), req(1), x509(1), ca(1), genrsa(1), config(5)

COPYRIGHT

Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!J$#$# dgst.htmlnu[ dgst

NAME

openssl-dgst, dgst - perform digest operations

SYNOPSIS

openssl dgst [-digest] [-help] [-c] [-d] [-list] [-hex] [-binary] [-r] [-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [-sigopt nm:v] [-hmac key] [-fips-fingerprint] [-rand file...] [-engine id] [-engine_impl] [file...]

openssl digest [...]

DESCRIPTION

The digest functions output the message digest of a supplied file or files in hexadecimal. The digest functions also generate and verify digital signatures using message digests.

The generic name, dgst, may be used with an option specifying the algorithm to be used. The default digest is sha256. A supported digest name may also be used as the command name. To see the list of supported algorithms, use the list --digest-commands command.

OPTIONS

-help

Print out a usage message.

-digest

Specifies name of a supported digest to be used. To see the list of supported digests, use the command list --digest-commands.

-c

Print out the digest in two digit groups separated by colons, only relevant if hex format output is used.

-d

Print out BIO debugging information.

-list

Prints out a list of supported message digests.

-hex

Digest is to be output as a hex dump. This is the default case for a "normal" digest as opposed to a digital signature. See NOTES below for digital signatures using -hex.

-binary

Output the digest or signature in binary form.

-r

Output the digest in the "coreutils" format, including newlines. Used by programs like sha1sum.

-out filename

Filename to output to, or standard output by default.

-sign filename

Digitally sign the digest using the private key in "filename". Note this option does not support Ed25519 or Ed448 private keys.

-keyform arg

Specifies the key format to sign digest with. The DER, PEM, P12, and ENGINE formats are supported.

-sigopt nm:v

Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific.

-passin arg

The private key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-verify filename

Verify the signature using the public key in "filename". The output is either "Verification OK" or "Verification Failure".

-prverify filename

Verify the signature using the private key in "filename".

-signature filename

The actual signature to verify.

-hmac key

Create a hashed MAC using "key".

-mac alg

Create MAC (keyed Message Authentication Code). The most popular MAC algorithm is HMAC (hash-based MAC), but there are other MAC algorithms which are not based on hash, for instance gost-mac algorithm, supported by ccgost engine. MAC keys and other options should be set via -macopt parameter.

-macopt nm:v

Passes options to MAC algorithm, specified by -mac key. Following options are supported by both by HMAC and gost-mac:

key:string

Specifies MAC key as alphanumeric string (use if key contain printable characters only). String length must conform to any restrictions of the MAC algorithm for example exactly 32 chars for gost-mac.

hexkey:string

Specifies MAC key in hexadecimal form (two hex digits per byte). Key length must conform to any restrictions of the MAC algorithm for example exactly 32 chars for gost-mac.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-fips-fingerprint

Compute HMAC using a specific key for certain OpenSSL-FIPS operations.

-engine id

Use engine id for operations (including private key storage). This engine is not used as source for digest algorithms, unless it is also specified in the configuration file or -engine_impl is also specified.

-engine_impl

When used with the -engine option, it specifies to also use engine id for digest operations.

file...

File or files to digest. If no files are specified then standard input is used.

EXAMPLES

To create a hex-encoded message digest of a file: openssl dgst -md5 -hex file.txt

To sign a file using SHA-256 with binary file output: openssl dgst -sha256 -sign privatekey.pem -out signature.sign file.txt

To verify a signature: openssl dgst -sha256 -verify publickey.pem \ -signature signature.sign \ file.txt

NOTES

The digest mechanisms that are available will depend on the options used when building OpenSSL. The list digest-commands command can be used to list them.

New or agile applications should use probably use SHA-256. Other digests, particularly SHA-1 and MD5, are still widely used for interoperating with existing formats and protocols.

When signing a file, dgst will automatically determine the algorithm (RSA, ECC, etc) to use for signing based on the private key's ASN.1 info. When verifying signatures, it only handles the RSA, DSA, or ECDSA signature itself, not the related data to identify the signer and algorithm used in formats such as x.509, CMS, and S/MIME.

A source of random numbers is required for certain signing algorithms, in particular ECDSA and DSA.

The signing and verify options should only be used if a single file is being signed or verified.

Hex signatures cannot be verified using openssl. Instead, use "xxd -r" or similar program to transform the hex signature into a binary signature prior to verification.

HISTORY

The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0. The FIPS-related options were removed in OpenSSL 1.1.0.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!]`2p2preq.htmlnu[ req

NAME

openssl-req, req - PKCS#10 certificate request and certificate generating utility

SYNOPSIS

openssl req [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file...] [-writerand file] [-newkey rsa:bits] [-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-digest] [-config filename] [-multivalue-rdn] [-x509] [-days n] [-set_serial n] [-newhdr] [-addext ext] [-extensions section] [-reqexts section] [-precert] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-sigopt nm:v] [-batch] [-verbose] [-engine id]

DESCRIPTION

The req command primarily creates and processes certificate requests in PKCS#10 format. It can additionally create self signed certificates for use as root CAs for example.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN1 DER encoded form compatible with the PKCS#10. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a request from or standard input if this option is not specified. A request is only read if the creation options (-new and -newkey) are not specified.

-sigopt nm:v

Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write to or standard output by default.

-passout arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-text

Prints out the certificate request in text form.

-subject

Prints out the request subject (or certificate subject if -x509 is specified)

-pubkey

Outputs the public key.

-noout

This option prevents output of the encoded version of the request.

-modulus

This option prints out the value of the modulus of the public key contained in the request.

-verify

Verifies the signature on the request.

-new

This option generates a new certificate request. It will prompt the user for the relevant field values. The actual fields prompted for and their maximum and minimum sizes are specified in the configuration file and any requested extensions.

If the -key option is not used it will generate a new RSA private key using information specified in the configuration file.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-newkey arg

This option creates a new certificate request and a new private key. The argument takes one of several forms. rsa:nbits, where nbits is the number of bits, generates an RSA key nbits in size. If nbits is omitted, i.e. -newkey rsa specified, the default key size, specified in the configuration file is used.

All other algorithms support the -newkey alg:file form, where file may be an algorithm parameter file, created by the genpkey -genparam command or and X.509 certificate for a key with appropriate algorithm.

param:file generates a key using the parameter file or certificate file, the algorithm is determined by the parameters. algname:file use algorithm algname and parameter file file: the two algorithms must match or an error occurs. algname just uses algorithm algname, and parameters, if necessary should be specified via -pkeyopt parameter.

dsa:filename generates a DSA key using the parameters in the file filename. ec:filename generates EC key (usable both with ECDSA or ECDH algorithms), gost2001:filename generates GOST R 34.10-2001 key (requires ccgost engine configured in the configuration file). If just gost2001 is specified a parameter set should be specified by -pkeyopt paramset:X

-pkeyopt opt:value

Set the public key algorithm option opt to value. The precise set of options supported depends on the public key algorithm used and its implementation. See KEY GENERATION OPTIONS in the genpkey manual page for more details.

-key filename

This specifies the file to read the private key from. It also accepts PKCS#8 format private keys for PEM format files.

-keyform PEM|DER

The format of the private key file specified in the -key argument. PEM is the default.

-keyout filename

This gives the filename to write the newly created private key to. If this option is not specified then the filename present in the configuration file is used.

-nodes

If this option is specified then if a private key is created it will not be encrypted.

-digest

This specifies the message digest to sign the request. Any digest supported by the OpenSSL dgst command can be used. This overrides the digest algorithm specified in the configuration file.

Some public key algorithms may override this choice. For instance, DSA signatures always use SHA1, GOST R 34.10 signatures always use GOST R 34.11-94 (-md_gost94), Ed25519 and Ed448 never use any digest.

-config filename

This allows an alternative configuration file to be specified. Optional; for a description of the default value, see "COMMAND SUMMARY" in openssl(1).

-subj arg

Sets subject name for new request or supersedes the subject name when processing a request. The arg must be formatted as /type0=value0/type1=value1/type2=.... Keyword characters may be escaped by \ (backslash), and whitespace is retained. Empty values are permitted, but the corresponding type will not be included in the request.

-multivalue-rdn

This option causes the -subj argument to be interpreted with full support for multivalued RDNs. Example:

/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe

If -multi-rdn is not used then the UID value is 123456+CN=John Doe.

-x509

This option outputs a self signed certificate instead of a certificate request. This is typically used to generate a test certificate or a self signed root CA. The extensions added to the certificate (if any) are specified in the configuration file. Unless specified using the set_serial option, a large random number will be used for the serial number.

If existing request is specified with the -in option, it is converted to the self signed certificate otherwise new request is created.

-days n

When the -x509 option is being used this specifies the number of days to certify the certificate for, otherwise it is ignored. n should be a positive integer. The default is 30 days.

-set_serial n

Serial number to use when outputting a self signed certificate. This may be specified as a decimal value or a hex value if preceded by 0x.

-addext ext

Add a specific extension to the certificate (if the -x509 option is present) or certificate request. The argument must have the form of a key=value pair as it would appear in a config file.

This option can be given multiple times.

-extensions section
-reqexts section

These options specify alternative sections to include certificate extensions (if the -x509 option is present) or certificate request extensions. This allows several different sections to be used in the same configuration file to specify requests for a variety of purposes.

-precert

A poison extension will be added to the certificate, making it a "pre-certificate" (see RFC6962). This can be submitted to Certificate Transparency logs in order to obtain signed certificate timestamps (SCTs). These SCTs can then be embedded into the pre-certificate as an extension, before removing the poison and signing the certificate.

This implies the -new flag.

-utf8

This option causes field values to be interpreted as UTF8 strings, by default they are interpreted as ASCII. This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid UTF8 strings.

-nameopt option

Option which determines how the subject or issuer names are displayed. The option argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the x509(1) manual page for details.

-reqopt

Customise the output format used with -text. The option argument can be a single option or multiple options separated by commas.

See discussion of the -certopt parameter in the x509(1) command.

-newhdr

Adds the word NEW to the PEM file header and footer lines on the outputted request. Some software (Netscape certificate server) and some CAs need this.

-batch

Non-interactive mode.

-verbose

Print extra details about the operations being performed.

-engine id

Specifying an engine (by its unique id string) will cause req to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-keygen_engine id

Specifies an engine (by its unique id string) which would be used for key generation operations.

CONFIGURATION FILE FORMAT

The configuration options are specified in the req section of the configuration file. As with all configuration files if no value is specified in the specific section (i.e. req) then the initial unnamed or default section is searched too.

The options available are described in detail below.

input_password output_password

The passwords for the input private key file (if present) and the output private key file (if one will be created). The command line options passin and passout override the configuration file values.

default_bits

Specifies the default key size in bits.

This option is used in conjunction with the -new option to generate a new key. It can be overridden by specifying an explicit key size in the -newkey option. The smallest accepted key size is 512 bits. If no key size is specified then 2048 bits is used.

default_keyfile

This is the default filename to write a private key to. If not specified the key is written to standard output. This can be overridden by the -keyout option.

oid_file

This specifies a file containing additional OBJECT IDENTIFIERS. Each line of the file should consist of the numerical form of the object identifier followed by white space then the short name followed by white space and finally the long name.

oid_section

This specifies a section in the configuration file containing extra object identifiers. Each line should consist of the short name of the object identifier followed by = and the numerical form. The short and long names are the same when this option is used.

RANDFILE

At startup the specified file is loaded into the random number generator, and at exit 256 bytes will be written to it. It is used for private key generation.

encrypt_key

If this is set to no then if a private key is generated it is not encrypted. This is equivalent to the -nodes command line option. For compatibility encrypt_rsa_key is an equivalent option.

default_md

This option specifies the digest algorithm to use. Any digest supported by the OpenSSL dgst command can be used. This option can be overridden on the command line. Certain signing algorithms (i.e. Ed25519 and Ed448) will ignore any digest that has been set.

string_mask

This option masks out the use of certain string types in certain fields. Most users will not need to change this option.

It can be set to several values default which is also the default option uses PrintableStrings, T61Strings and BMPStrings if the pkix value is used then only PrintableStrings and BMPStrings will be used. This follows the PKIX recommendation in RFC2459. If the utf8only option is used then only UTF8Strings will be used: this is the PKIX recommendation in RFC2459 after 2003. Finally the nombstr option just uses PrintableStrings and T61Strings: certain software has problems with BMPStrings and UTF8Strings: in particular Netscape.

req_extensions

This specifies the configuration file section containing a list of extensions to add to the certificate request. It can be overridden by the -reqexts command line switch. See the x509v3_config(5) manual page for details of the extension section format.

x509_extensions

This specifies the configuration file section containing a list of extensions to add to certificate generated when the -x509 switch is used. It can be overridden by the -extensions command line switch.

prompt

If set to the value no this disables prompting of certificate fields and just takes values from the config file directly. It also changes the expected format of the distinguished_name and attributes sections.

utf8

If set to the value yes then field values to be interpreted as UTF8 strings, by default they are interpreted as ASCII. This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid UTF8 strings.

attributes

This specifies the section containing any request attributes: its format is the same as distinguished_name. Typically these may contain the challengePassword or unstructuredName types. They are currently ignored by OpenSSL's request signing utilities but some CAs might want them.

distinguished_name

This specifies the section containing the distinguished name fields to prompt for when generating a certificate or certificate request. The format is described in the next section.

DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT

There are two separate formats for the distinguished name and attribute sections. If the prompt option is set to no then these sections just consist of field names and values: for example,

 CN=My Name
 OU=My Organization
 emailAddress=someone@somewhere.org

This allows external programs (e.g. GUI based) to generate a template file with all the field names and values and just pass it to req. An example of this kind of configuration file is contained in the EXAMPLES section.

Alternatively if the prompt option is absent or not set to no then the file contains field prompting information. It consists of lines of the form:

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4

"fieldName" is the field name being used, for example commonName (or CN). The "prompt" string is used to ask the user to enter the relevant details. If the user enters nothing then the default value is used if no default value is present then the field is omitted. A field can still be omitted if a default value is present if the user just enters the '.' character.

The number of characters entered must be between the fieldName_min and fieldName_max limits: there may be additional restrictions based on the field being used (for example countryName can only ever be two characters long and must fit in a PrintableString).

Some fields (such as organizationName) can be used more than once in a DN. This presents a problem because configuration files will not recognize the same name occurring twice. To avoid this problem if the fieldName contains some characters followed by a full stop they will be ignored. So for example a second organizationName can be input by calling it "1.organizationName".

The actual permitted field names are any object identifier short or long names. These are compiled into OpenSSL and include the usual values such as commonName, countryName, localityName, organizationName, organizationalUnitName, stateOrProvinceName. Additionally emailAddress is included as well as name, surname, givenName, initials, and dnQualifier.

Additional object identifiers can be defined with the oid_file or oid_section options in the configuration file. Any additional fields will be treated as though they were a DirectoryString.

EXAMPLES

Examine and verify certificate request:

 openssl req -in req.pem -text -verify -noout

Create a private key and then generate a certificate request from it:

 openssl genrsa -out key.pem 2048
 openssl req -new -key key.pem -out req.pem

The same but just using req:

 openssl req -newkey rsa:2048 -keyout key.pem -out req.pem

Generate a self signed root certificate:

 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out req.pem

Example of a file pointed to by the oid_file option:

 1.2.3.4        shortName       A longer Name
 1.2.3.6        otherName       Other longer Name

Example of a section pointed to by oid_section making use of variable expansion:

 testoid1=1.2.3.5
 testoid2=${testoid1}.6

Sample configuration file prompting for field values:

 [ req ]
 default_bits           = 2048
 default_keyfile        = privkey.pem
 distinguished_name     = req_distinguished_name
 attributes             = req_attributes
 req_extensions         = v3_ca

 dirstring_type = nobmp

 [ req_distinguished_name ]
 countryName                    = Country Name (2 letter code)
 countryName_default            = AU
 countryName_min                = 2
 countryName_max                = 2

 localityName                   = Locality Name (eg, city)

 organizationalUnitName         = Organizational Unit Name (eg, section)

 commonName                     = Common Name (eg, YOUR name)
 commonName_max                 = 64

 emailAddress                   = Email Address
 emailAddress_max               = 40

 [ req_attributes ]
 challengePassword              = A challenge password
 challengePassword_min          = 4
 challengePassword_max          = 20

 [ v3_ca ]

 subjectKeyIdentifier=hash
 authorityKeyIdentifier=keyid:always,issuer:always
 basicConstraints = critical, CA:true

Sample configuration containing all field values:

 RANDFILE               = $ENV::HOME/.rnd

 [ req ]
 default_bits           = 2048
 default_keyfile        = keyfile.pem
 distinguished_name     = req_distinguished_name
 attributes             = req_attributes
 prompt                 = no
 output_password        = mypass

 [ req_distinguished_name ]
 C                      = GB
 ST                     = Test State or Province
 L                      = Test Locality
 O                      = Organization Name
 OU                     = Organizational Unit Name
 CN                     = Common Name
 emailAddress           = test@email.address

 [ req_attributes ]
 challengePassword              = A challenge password

Example of giving the most common attributes (subject and extensions) on the command line:

 openssl req -new -subj "/C=GB/CN=foo" \
                  -addext "subjectAltName = DNS:foo.co.uk" \
                  -addext "certificatePolicies = 1.2.3.4" \
                  -newkey rsa:2048 -keyout key.pem -out req.pem

NOTES

The header and footer lines in the PEM format are normally:

 -----BEGIN CERTIFICATE REQUEST-----
 -----END CERTIFICATE REQUEST-----

some software (some versions of Netscape certificate server) instead needs:

 -----BEGIN NEW CERTIFICATE REQUEST-----
 -----END NEW CERTIFICATE REQUEST-----

which is produced with the -newhdr option but is otherwise compatible. Either form is accepted transparently on input.

The certificate requests generated by Xenroll with MSIE have extensions added. It includes the keyUsage extension which determines the type of key (signature only or general purpose) and any additional OIDs entered by the script in an extendedKeyUsage extension.

DIAGNOSTICS

The following messages are frequently asked about:

        Using configuration from /some/path/openssl.cnf
        Unable to load config info

This is followed some time later by...

        unable to find 'distinguished_name' in config
        problems making Certificate Request

The first error message is the clue: it can't find the configuration file! Certain operations (like examining a certificate request) don't need a configuration file so its use isn't enforced. Generation of certificates or requests however does need a configuration file. This could be regarded as a bug.

Another puzzling message is this:

        Attributes:
            a0:00

this is displayed when no attributes are present and the request includes the correct empty SET OF structure (the DER encoding of which is 0xa0 0x00). If you just see:

        Attributes:

then the SET OF is missing and the encoding is technically invalid (but it is tolerated). See the description of the command line option -asn1-kludge for more information.

BUGS

OpenSSL's handling of T61Strings (aka TeletexStrings) is broken: it effectively treats them as ISO-8859-1 (Latin 1), Netscape and MSIE have similar behaviour. This can cause problems if you need characters that aren't available in PrintableStrings and you don't want to or can't use BMPStrings.

As a consequence of the T61String handling the only correct way to represent accented characters in OpenSSL is to use a BMPString: unfortunately Netscape currently chokes on these. If you have to use accented characters with Netscape and MSIE then you currently need to use the invalid T61String form.

The current prompting is not very friendly. It doesn't allow you to confirm what you've just entered. Other things like extensions in certificate requests are statically defined in the configuration file. Some of these: like an email address in subjectAltName should be input by the user.

SEE ALSO

x509(1), ca(1), genrsa(1), gendsa(1), config(5), x509v3_config(5)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!qA%A% CA.pl.htmlnu[ CA.pl

NAME

CA.pl - friendlier interface for OpenSSL certificate programs

SYNOPSIS

CA.pl -? | -h | -help

CA.pl -newcert | -newreq | -newreq-nodes | -xsign | -sign | -signCA | -signcert | -crl | -newca [-extra-cmd extra-params]

CA.pl -pkcs12 [-extra-pkcs12 extra-params] [certname]

CA.pl -verify [-extra-verify extra-params] certfile...

CA.pl -revoke [-extra-ca extra-params] certfile [reason]

DESCRIPTION

The CA.pl script is a perl script that supplies the relevant command line arguments to the openssl command for some common certificate operations. It is intended to simplify the process of certificate creation and management by the use of some simple options.

OPTIONS

?, -h, -help

Prints a usage message.

-newcert

Creates a new self signed certificate. The private key is written to the file "newkey.pem" and the request written to the file "newreq.pem". This argument invokes openssl req command.

-newreq

Creates a new certificate request. The private key is written to the file "newkey.pem" and the request written to the file "newreq.pem". Executes openssl req command below the hood.

-newreq-nodes

Is like -newreq except that the private key will not be encrypted. Uses openssl req command.

-newca

Creates a new CA hierarchy for use with the ca program (or the -signcert and -xsign options). The user is prompted to enter the filename of the CA certificates (which should also contain the private key) or by hitting ENTER details of the CA will be prompted for. The relevant files and directories are created in a directory called "demoCA" in the current directory. openssl req and openssl ca commands are get invoked.

-pkcs12

Create a PKCS#12 file containing the user certificate, private key and CA certificate. It expects the user certificate and private key to be in the file "newcert.pem" and the CA certificate to be in the file demoCA/cacert.pem, it creates a file "newcert.p12". This command can thus be called after the -sign option. The PKCS#12 file can be imported directly into a browser. If there is an additional argument on the command line it will be used as the "friendly name" for the certificate (which is typically displayed in the browser list box), otherwise the name "My Certificate" is used. Delegates work to openssl pkcs12 command.

-sign, -signcert, -xsign

Calls the ca program to sign a certificate request. It expects the request to be in the file "newreq.pem". The new certificate is written to the file "newcert.pem" except in the case of the -xsign option when it is written to standard output. Leverages openssl ca command.

-signCA

This option is the same as the -sign option except it uses the configuration file section v3_ca and so makes the signed request a valid CA certificate. This is useful when creating intermediate CA from a root CA. Extra params are passed on to openssl ca command.

-signcert

This option is the same as -sign except it expects a self signed certificate to be present in the file "newreq.pem". Extra params are passed on to openssl x509 and openssl ca commands.

-crl

Generate a CRL. Executes openssl ca command.

-revoke certfile [reason]

Revoke the certificate contained in the specified certfile. An optional reason may be specified, and must be one of: unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold, or removeFromCRL. Leverages openssl ca command.

-verify

Verifies certificates against the CA certificate for "demoCA". If no certificates are specified on the command line it tries to verify the file "newcert.pem". Invokes openssl verify command.

-extra-req | -extra-ca | -extra-pkcs12 | -extra-x509 | -extra-verify <extra-params>

The purpose of these parameters is to allow optional parameters to be supplied to openssl that this command executes. The -extra-cmd are specific to the option being used and the openssl command getting invoked. For example when this command invokes openssl req extra parameters can be passed on with the -extra-req parameter. The openssl commands being invoked per option are documented below. Users should consult openssl command documentation for more information.

EXAMPLES

Create a CA hierarchy:

 CA.pl -newca

Complete certificate creation example: create a CA, create a request, sign the request and finally create a PKCS#12 file containing it.

 CA.pl -newca
 CA.pl -newreq
 CA.pl -sign
 CA.pl -pkcs12 "My Test Certificate"

DSA CERTIFICATES

Although the CA.pl creates RSA CAs and requests it is still possible to use it with DSA certificates and requests using the req(1) command directly. The following example shows the steps that would typically be taken.

Create some DSA parameters:

 openssl dsaparam -out dsap.pem 1024

Create a DSA CA certificate and private key:

 openssl req -x509 -newkey dsa:dsap.pem -keyout cacert.pem -out cacert.pem

Create the CA directories and files:

 CA.pl -newca

enter cacert.pem when prompted for the CA filename.

Create a DSA certificate request and private key (a different set of parameters can optionally be created first):

 openssl req -out newreq.pem -newkey dsa:dsap.pem

Sign the request:

 CA.pl -sign

NOTES

Most of the filenames mentioned can be modified by editing the CA.pl script.

If the demoCA directory already exists then the -newca command will not overwrite it and will do nothing. This can happen if a previous call using the -newca option terminated abnormally. To get the correct behaviour delete the demoCA directory if it already exists.

Under some environments it may not be possible to run the CA.pl script directly (for example Win32) and the default configuration file location may be wrong. In this case the command:

 perl -S CA.pl

can be used and the OPENSSL_CONF environment variable changed to point to the correct path of the configuration file.

The script is intended as a simple front end for the openssl program for use by a beginner. Its behaviour isn't always what is wanted. For more control over the behaviour of the certificate commands call the openssl command directly.

SEE ALSO

x509(1), ca(1), req(1), pkcs12(1), config(5)

COPYRIGHT

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!JƤ pkey.htmlnu[ pkey

NAME

openssl-pkey, pkey - public or private key processing tool

SYNOPSIS

openssl pkey [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-traditional] [-cipher] [-text] [-text_pub] [-noout] [-pubin] [-pubout] [-engine id] [-check] [-pubcheck]

DESCRIPTION

The pkey command processes public or private keys. They can be converted between various forms and their components printed out.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format DER or PEM. The default format is PEM.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write a key to or standard output if this option is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.

-passout password

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-traditional

Normally a private key is written using standard format: this is PKCS#8 form with the appropriate encryption algorithm (if any). If the -traditional option is specified then the older "traditional" format is used instead.

-cipher

These options encrypt the private key with the supplied cipher. Any algorithm name accepted by EVP_get_cipherbyname() is acceptable such as des3.

-text

Prints out the various public or private key components in plain text in addition to the encoded version.

-text_pub

Print out only public key components even if a private key is being processed.

-noout

Do not output the encoded version of the key.

-pubin

By default a private key is read from the input file: with this option a public key is read instead.

-pubout

By default a private key is output: with this option a public key will be output instead. This option is automatically set if the input is a public key.

-engine id

Specifying an engine (by its unique id string) will cause pkey to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-check

This option checks the consistency of a key pair for both public and private components.

-pubcheck

This option checks the correctness of either a public key or the public component of a key pair.

EXAMPLES

To remove the pass phrase on an RSA private key:

 openssl pkey -in key.pem -out keyout.pem

To encrypt a private key using triple DES:

 openssl pkey -in key.pem -des3 -out keyout.pem

To convert a private key from PEM to DER format:

 openssl pkey -in key.pem -outform DER -out keyout.der

To print out the components of a private key to standard output:

 openssl pkey -in key.pem -text -noout

To print out the public components of a private key to standard output:

 openssl pkey -in key.pem -text_pub -noout

To just output the public part of a private key:

 openssl pkey -in key.pem -pubout -out pubkey.pem

SEE ALSO

genpkey(1), rsa(1), pkcs8(1), dsa(1), genrsa(1), gendsa(1)

COPYRIGHT

Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!MM rsautl.htmlnu[ rsautl

NAME

openssl-rsautl, rsautl - RSA utility

SYNOPSIS

openssl rsautl [-help] [-in file] [-out file] [-inkey file] [-keyform PEM|DER|ENGINE] [-pubin] [-certin] [-sign] [-verify] [-encrypt] [-decrypt] [-rand file...] [-writerand file] [-pkcs] [-ssl] [-raw] [-hexdump] [-asn1parse]

DESCRIPTION

The rsautl command can be used to sign, verify, encrypt and decrypt data using the RSA algorithm.

OPTIONS

-help

Print out a usage message.

-in filename

This specifies the input filename to read data from or standard input if this option is not specified.

-out filename

Specifies the output filename to write to or standard output by default.

-inkey file

The input key file, by default it should be an RSA private key.

-keyform PEM|DER|ENGINE

The key format PEM, DER or ENGINE.

-pubin

The input file is an RSA public key.

-certin

The input is a certificate containing an RSA public key.

-sign

Sign the input data and output the signed result. This requires an RSA private key.

-verify

Verify the input data and output the recovered data.

-encrypt

Encrypt the input data using an RSA public key.

-decrypt

Decrypt the input data using an RSA private key.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-pkcs, -oaep, -ssl, -raw

The padding to use: PKCS#1 v1.5 (the default), PKCS#1 OAEP, special padding used in SSL v2 backwards compatible handshakes, or no padding, respectively. For signatures, only -pkcs and -raw can be used.

-hexdump

Hex dump the output data.

-asn1parse

Parse the ASN.1 output data, this is useful when combined with the -verify option.

NOTES

rsautl because it uses the RSA algorithm directly can only be used to sign or verify small pieces of data.

EXAMPLES

Sign some data using a private key:

 openssl rsautl -sign -in file -inkey key.pem -out sig

Recover the signed data

 openssl rsautl -verify -in sig -inkey key.pem

Examine the raw signed data:

 openssl rsautl -verify -in sig -inkey key.pem -raw -hexdump

 0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff   ................
 0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64   .....hello world

The PKCS#1 block formatting is evident from this. If this was done using encrypt and decrypt the block would have been of type 2 (the second byte) and random padding data visible instead of the 0xff bytes.

It is possible to analyse the signature of certificates using this utility in conjunction with asn1parse. Consider the self signed example in certs/pca-cert.pem . Running asn1parse as follows yields:

 openssl asn1parse -in pca-cert.pem

    0:d=0  hl=4 l= 742 cons: SEQUENCE
    4:d=1  hl=4 l= 591 cons:  SEQUENCE
    8:d=2  hl=2 l=   3 cons:   cont [ 0 ]
   10:d=3  hl=2 l=   1 prim:    INTEGER           :02
   13:d=2  hl=2 l=   1 prim:   INTEGER           :00
   16:d=2  hl=2 l=  13 cons:   SEQUENCE
   18:d=3  hl=2 l=   9 prim:    OBJECT            :md5WithRSAEncryption
   29:d=3  hl=2 l=   0 prim:    NULL
   31:d=2  hl=2 l=  92 cons:   SEQUENCE
   33:d=3  hl=2 l=  11 cons:    SET
   35:d=4  hl=2 l=   9 cons:     SEQUENCE
   37:d=5  hl=2 l=   3 prim:      OBJECT            :countryName
   42:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :AU
  ....
  599:d=1  hl=2 l=  13 cons:  SEQUENCE
  601:d=2  hl=2 l=   9 prim:   OBJECT            :md5WithRSAEncryption
  612:d=2  hl=2 l=   0 prim:   NULL
  614:d=1  hl=3 l= 129 prim:  BIT STRING

The final BIT STRING contains the actual signature. It can be extracted with:

 openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614

The certificate public key can be extracted with:

 openssl x509 -in test/testx509.pem -pubkey -noout >pubkey.pem

The signature can be analysed with:

 openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin

    0:d=0  hl=2 l=  32 cons: SEQUENCE
    2:d=1  hl=2 l=  12 cons:  SEQUENCE
    4:d=2  hl=2 l=   8 prim:   OBJECT            :md5
   14:d=2  hl=2 l=   0 prim:   NULL
   16:d=1  hl=2 l=  16 prim:  OCTET STRING
      0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5   .F...Js.7...H%..

This is the parsed version of an ASN1 DigestInfo structure. It can be seen that the digest used was md5. The actual part of the certificate that was signed can be extracted with:

 openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4

and its digest computed with:

 openssl md5 -c tbs
 MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5

which it can be seen agrees with the recovered value above.

SEE ALSO

dgst(1), rsa(1), genrsa(1)

COPYRIGHT

Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!u5 rehash.htmlnu[ rehash

NAME

openssl-c_rehash, openssl-rehash, c_rehash, rehash - Create symbolic links to files named by the hash values

SYNOPSIS

openssl rehash [-h] [-help] [-old] [-n] [-v] [ directory...]

c_rehash flags...

DESCRIPTION

On some platforms, the OpenSSL rehash command is available as an external script called c_rehash. They are functionally equivalent, except for minor differences noted below.

rehash scans directories and calculates a hash value of each .pem, .crt, .cer, or .crl file in the specified directory list and creates symbolic links for each file, where the name of the link is the hash value. (If the platform does not support symbolic links, a copy is made.) This utility is useful as many programs that use OpenSSL require directories to be set up like this in order to find certificates.

If any directories are named on the command line, then those are processed in turn. If not, then the SSL_CERT_DIR environment variable is consulted; this should be a colon-separated list of directories, like the Unix PATH variable. If that is not set then the default directory (installation-specific but often /usr/local/ssl/certs) is processed.

In order for a directory to be processed, the user must have write permissions on that directory, otherwise an error will be generated.

The links created are of the form HHHHHHHH.D, where each H is a hexadecimal character and D is a single decimal digit. When processing a directory, rehash will first remove all links that have a name in that syntax, even if they are being used for some other purpose. To skip the removal step, use the -n flag. Hashes for CRL's look similar except the letter r appears after the period, like this: HHHHHHHH.rD.

Multiple objects may have the same hash; they will be indicated by incrementing the D value. Duplicates are found by comparing the full SHA-1 fingerprint. A warning will be displayed if a duplicate is found.

A warning will also be displayed if there are files that cannot be parsed as either a certificate or a CRL or if more than one such object appears in the file.

Script Configuration

The c_rehash script uses the openssl program to compute the hashes and fingerprints. If not found in the user's PATH, then set the OPENSSL environment variable to the full pathname. Any program can be used, it will be invoked as follows for either a certificate or CRL:

  $OPENSSL x509 -hash -fingerprint -noout -in FILENAME
  $OPENSSL crl -hash -fingerprint -noout -in FILENAME

where FILENAME is the filename. It must output the hash of the file on the first line, and the fingerprint on the second, optionally prefixed with some text and an equals sign.

OPTIONS

-help -h

Display a brief usage message.

-old

Use old-style hashing (MD5, as opposed to SHA-1) for generating links to be used for releases before 1.0.0. Note that current versions will not use the old style.

-n

Do not remove existing links. This is needed when keeping new and old-style links in the same directory.

-compat

Generate links for both old-style (MD5) and new-style (SHA1) hashing. This allows releases before 1.0.0 to use these links along-side newer releases.

-v

Print messages about old links removed and new links created. By default, rehash only lists each directory as it is processed.

ENVIRONMENT

OPENSSL

The path to an executable to use to generate hashes and fingerprints (see above).

SSL_CERT_DIR

Colon separated list of directories to operate on. Ignored if directories are listed on the command line.

SEE ALSO

openssl(1), crl(1). x509(1).

COPYRIGHT

Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!(ff ecparam.htmlnu[ ecparam

NAME

openssl-ecparam, ecparam - EC parameter manipulation and generation

SYNOPSIS

openssl ecparam [-help] [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C] [-check] [-name arg] [-list_curves] [-conv_form arg] [-param_enc arg] [-no_seed] [-rand file...] [-writerand file] [-genkey] [-engine id]

DESCRIPTION

This command is used to manipulate or generate EC parameter files.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. The DER option uses an ASN.1 DER encoded form compatible with RFC 3279 EcpkParameters. The PEM form is the default format: it consists of the DER format base64 encoded with additional header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read parameters from or standard input if this option is not specified.

-out filename

This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should not be the same as the input filename.

-noout

This option inhibits the output of the encoded version of the parameters.

-text

This option prints out the EC parameters in human readable form.

-C

This option converts the EC parameters into C code. The parameters can then be loaded by calling the get_ec_group_XXX() function.

-check

Validate the elliptic curve parameters.

-name arg

Use the EC parameters with the specified 'short' name. Use -list_curves to get a list of all currently implemented EC parameters.

-list_curves

If this options is specified ecparam will print out a list of all currently implemented EC parameters names and exit.

-conv_form

This specifies how the points on the elliptic curve are converted into octet strings. Possible values are: compressed, uncompressed (the default value) and hybrid. For more information regarding the point conversion forms please read the X9.62 standard. Note Due to patent issues the compressed option is disabled by default for binary curves and can be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at compile time.

-param_enc arg

This specifies how the elliptic curve parameters are encoded. Possible value are: named_curve, i.e. the ec parameters are specified by an OID, or explicit where the ec parameters are explicitly given (see RFC 3279 for the definition of the EC parameters structures). The default value is named_curve. Note the implicitlyCA alternative, as specified in RFC 3279, is currently not implemented in OpenSSL.

-no_seed

This option inhibits that the 'seed' for the parameter generation is included in the ECParameters structure (see RFC 3279).

-genkey

This option will generate an EC private key using the specified parameters.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-engine id

Specifying an engine (by its unique id string) will cause ecparam to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

NOTES

PEM format EC parameters use the header and footer lines:

 -----BEGIN EC PARAMETERS-----
 -----END EC PARAMETERS-----

OpenSSL is currently not able to generate new groups and therefore ecparam can only create EC parameters from known (named) curves.

EXAMPLES

To create EC parameters with the group 'prime192v1':

  openssl ecparam -out ec_param.pem -name prime192v1

To create EC parameters with explicit parameters:

  openssl ecparam -out ec_param.pem -name prime192v1 -param_enc explicit

To validate given EC parameters:

  openssl ecparam -in ec_param.pem -check

To create EC parameters and a private key:

  openssl ecparam -out ec_key.pem -name prime192v1 -genkey

To change the point encoding to 'compressed':

  openssl ecparam -in ec_in.pem -out ec_out.pem -conv_form compressed

To print out the EC parameters to standard output:

  openssl ecparam -in ec_param.pem -noout -text

SEE ALSO

ec(1), dsaparam(1)

COPYRIGHT

Copyright 2003-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!gA77 genpkey.htmlnu[ genpkey

NAME

openssl-genpkey, genpkey - generate a private key

SYNOPSIS

openssl genpkey [-help] [-out filename] [-outform PEM|DER] [-pass arg] [-cipher] [-engine id] [-paramfile file] [-algorithm alg] [-pkeyopt opt:value] [-genparam] [-text]

DESCRIPTION

The genpkey command generates a private key.

OPTIONS

-help

Print out a usage message.

-out filename

Output the key to the specified file. If this argument is not specified then standard output is used.

-outform DER|PEM

This specifies the output format DER or PEM. The default format is PEM.

-pass arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-cipher

This option encrypts the private key with the supplied cipher. Any algorithm name accepted by EVP_get_cipherbyname() is acceptable such as des3.

-engine id

Specifying an engine (by its unique id string) will cause genpkey to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. If used this option should precede all other options.

-algorithm alg

Public key algorithm to use such as RSA, DSA or DH. If used this option must precede any -pkeyopt options. The options -paramfile and -algorithm are mutually exclusive. Engines may add algorithms in addition to the standard built-in ones.

Valid built-in algorithm names for private key generation are RSA, RSA-PSS, EC, X25519, X448, ED25519 and ED448.

Valid built-in algorithm names for parameter generation (see the -genparam option) are DH, DSA and EC.

Note that the algorithm name X9.42 DH may be used as a synonym for the DH algorithm. These are identical and do not indicate the type of parameters that will be generated. Use the dh_paramgen_type option to indicate whether PKCS#3 or X9.42 DH parameters are required. See "DH Parameter Generation Options" below for more details.

-pkeyopt opt:value

Set the public key algorithm option opt to value. The precise set of options supported depends on the public key algorithm used and its implementation. See "KEY GENERATION OPTIONS" and "PARAMETER GENERATION OPTIONS" below for more details.

-genparam

Generate a set of parameters instead of a private key. If used this option must precede any -algorithm, -paramfile or -pkeyopt options.

-paramfile filename

Some public key algorithms generate a private key based on a set of parameters. They can be supplied using this option. If this option is used the public key algorithm used is determined by the parameters. If used this option must precede any -pkeyopt options. The options -paramfile and -algorithm are mutually exclusive.

-text

Print an (unencrypted) text representation of private and public keys and parameters along with the PEM or DER structure.

KEY GENERATION OPTIONS

The options supported by each algorithm and indeed each implementation of an algorithm can vary. The options for the OpenSSL implementations are detailed below. There are no key generation options defined for the X25519, X448, ED25519 or ED448 algorithms.

RSA Key Generation Options

rsa_keygen_bits:numbits

The number of bits in the generated key. If not specified 2048 is used.

rsa_keygen_primes:numprimes

The number of primes in the generated key. If not specified 2 is used.

rsa_keygen_pubexp:value

The RSA public exponent value. This can be a large decimal or hexadecimal value if preceded by 0x. Default value is 65537.

RSA-PSS Key Generation Options

Note: by default an RSA-PSS key has no parameter restrictions.

rsa_keygen_bits:numbits, rsa_keygen_primes:numprimes, rsa_keygen_pubexp:value

These options have the same meaning as the RSA algorithm.

rsa_pss_keygen_md:digest

If set the key is restricted and can only use digest for signing.

rsa_pss_keygen_mgf1_md:digest

If set the key is restricted and can only use digest as it's MGF1 parameter.

rsa_pss_keygen_saltlen:len

If set the key is restricted and len specifies the minimum salt length.

EC Key Generation Options

The EC key generation options can also be used for parameter generation.

ec_paramgen_curve:curve

The EC curve to use. OpenSSL supports NIST curve names such as "P-256".

ec_param_enc:encoding

The encoding to use for parameters. The "encoding" parameter must be either "named_curve" or "explicit". The default value is "named_curve".

PARAMETER GENERATION OPTIONS

The options supported by each algorithm and indeed each implementation of an algorithm can vary. The options for the OpenSSL implementations are detailed below.

DSA Parameter Generation Options

dsa_paramgen_bits:numbits

The number of bits in the generated prime. If not specified 2048 is used.

dsa_paramgen_q_bits:numbits

The number of bits in the q parameter. Must be one of 160, 224 or 256. If not specified 224 is used.

dsa_paramgen_md:digest

The digest to use during parameter generation. Must be one of sha1, sha224 or sha256. If set, then the number of bits in q will match the output size of the specified digest and the dsa_paramgen_q_bits parameter will be ignored. If not set, then a digest will be used that gives an output matching the number of bits in q, i.e. sha1 if q length is 160, sha224 if it 224 or sha256 if it is 256.

DH Parameter Generation Options

dh_paramgen_prime_len:numbits

The number of bits in the prime parameter p. The default is 2048.

dh_paramgen_subprime_len:numbits

The number of bits in the sub prime parameter q. The default is 256 if the prime is at least 2048 bits long or 160 otherwise. Only relevant if used in conjunction with the dh_paramgen_type option to generate X9.42 DH parameters.

dh_paramgen_generator:value

The value to use for the generator g. The default is 2.

dh_paramgen_type:value

The type of DH parameters to generate. Use 0 for PKCS#3 DH and 1 for X9.42 DH. The default is 0.

dh_rfc5114:num

If this option is set, then the appropriate RFC5114 parameters are used instead of generating new parameters. The value num can take the values 1, 2 or 3 corresponding to RFC5114 DH parameters consisting of 1024 bit group with 160 bit subgroup, 2048 bit group with 224 bit subgroup and 2048 bit group with 256 bit subgroup as mentioned in RFC5114 sections 2.1, 2.2 and 2.3 respectively. If present this overrides all other DH parameter options.

EC Parameter Generation Options

The EC parameter generation options are the same as for key generation. See "EC Key Generation Options" above.

NOTES

The use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.

EXAMPLES

Generate an RSA private key using default parameters:

 openssl genpkey -algorithm RSA -out key.pem

Encrypt output private key using 128 bit AES and the passphrase "hello":

 openssl genpkey -algorithm RSA -out key.pem -aes-128-cbc -pass pass:hello

Generate a 2048 bit RSA key using 3 as the public exponent:

 openssl genpkey -algorithm RSA -out key.pem \
     -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3

Generate 2048 bit DSA parameters:

 openssl genpkey -genparam -algorithm DSA -out dsap.pem \
     -pkeyopt dsa_paramgen_bits:2048

Generate DSA key from parameters:

 openssl genpkey -paramfile dsap.pem -out dsakey.pem

Generate 2048 bit DH parameters:

 openssl genpkey -genparam -algorithm DH -out dhp.pem \
     -pkeyopt dh_paramgen_prime_len:2048

Generate 2048 bit X9.42 DH parameters:

 openssl genpkey -genparam -algorithm DH -out dhpx.pem \
     -pkeyopt dh_paramgen_prime_len:2048 \
     -pkeyopt dh_paramgen_type:1

Output RFC5114 2048 bit DH parameters with 224 bit subgroup:

 openssl genpkey -genparam -algorithm DH -out dhp.pem -pkeyopt dh_rfc5114:2

Generate DH key from parameters:

 openssl genpkey -paramfile dhp.pem -out dhkey.pem

Generate EC parameters:

 openssl genpkey -genparam -algorithm EC -out ecp.pem \
        -pkeyopt ec_paramgen_curve:secp384r1 \
        -pkeyopt ec_param_enc:named_curve

Generate EC key from parameters:

 openssl genpkey -paramfile ecp.pem -out eckey.pem

Generate EC key directly:

 openssl genpkey -algorithm EC -out eckey.pem \
        -pkeyopt ec_paramgen_curve:P-384 \
        -pkeyopt ec_param_enc:named_curve

Generate an X25519 private key:

 openssl genpkey -algorithm X25519 -out xkey.pem

Generate an ED448 private key:

 openssl genpkey -algorithm ED448 -out xkey.pem

HISTORY

The ability to use NIST curve names, and to generate an EC key directly, were added in OpenSSL 1.0.2. The ability to generate X25519 keys was added in OpenSSL 1.1.0. The ability to generate X448, ED25519 and ED448 keys was added in OpenSSL 1.1.1.

COPYRIGHT

Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!x== pkcs12.htmlnu[ pkcs12

NAME

openssl-pkcs12, pkcs12 - PKCS#12 file utility

SYNOPSIS

openssl pkcs12 [-help] [-export] [-chain] [-inkey file_or_id] [-certfile filename] [-name name] [-caname name] [-in filename] [-out filename] [-noout] [-nomacver] [-nocerts] [-clcerts] [-cacerts] [-nokeys] [-info] [-des | -des3 | -idea | -aes128 | -aes192 | -aes256 | -aria128 | -aria192 | -aria256 | -camellia128 | -camellia192 | -camellia256 | -nodes] [-noiter] [-maciter | -nomaciter | -nomac] [-twopass] [-descert] [-certpbe cipher] [-keypbe cipher] [-macalg digest] [-keyex] [-keysig] [-password arg] [-passin arg] [-passout arg] [-rand file...] [-writerand file] [-CAfile file] [-CApath dir] [-no-CAfile] [-no-CApath] [-CSP name]

DESCRIPTION

The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook.

OPTIONS

There are a lot of options the meaning of some depends of whether a PKCS#12 file is being created or parsed. By default a PKCS#12 file is parsed. A PKCS#12 file can be created by using the -export option (see below).

PARSING OPTIONS

-help

Print out a usage message.

-in filename

This specifies filename of the PKCS#12 file to be parsed. Standard input is used by default.

-out filename

The filename to write certificates and private keys to, standard output by default. They are all written in PEM format.

-passin arg

The PKCS#12 file (i.e. input file) password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-passout arg

Pass phrase source to encrypt any outputted private keys with. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-password arg

With -export, -password is equivalent to -passout. Otherwise, -password is equivalent to -passin.

-noout

This option inhibits output of the keys and certificates to the output file version of the PKCS#12 file.

-clcerts

Only output client certificates (not CA certificates).

-cacerts

Only output CA certificates (not client certificates).

-nocerts

No certificates at all will be output.

-nokeys

No private keys will be output.

-info

Output additional information about the PKCS#12 file structure, algorithms used and iteration counts.

-des

Use DES to encrypt private keys before outputting.

-des3

Use triple DES to encrypt private keys before outputting, this is the default.

-idea

Use IDEA to encrypt private keys before outputting.

-aes128, -aes192, -aes256

Use AES to encrypt private keys before outputting.

-aria128, -aria192, -aria256

Use ARIA to encrypt private keys before outputting.

-camellia128, -camellia192, -camellia256

Use Camellia to encrypt private keys before outputting.

-nodes

Don't encrypt the private keys at all.

-nomacver

Don't attempt to verify the integrity MAC before reading the file.

-twopass

Prompt for separate integrity and encryption passwords: most software always assumes these are the same so this option will render such PKCS#12 files unreadable. Cannot be used in combination with the options -password, -passin (if importing) or -passout (if exporting).

FILE CREATION OPTIONS

-export

This option specifies that a PKCS#12 file will be created rather than parsed.

-out filename

This specifies filename to write the PKCS#12 file to. Standard output is used by default.

-in filename

The filename to read certificates and private keys from, standard input by default. They must all be in PEM format. The order doesn't matter but one private key and its corresponding certificate should be present. If additional certificates are present they will also be included in the PKCS#12 file.

-inkey file_or_id

File to read private key from. If not present then a private key must be present in the input file. If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier.

-name friendlyname

This specifies the "friendly name" for the certificate and private key. This name is typically displayed in list boxes by software importing the file.

-certfile filename

A filename to read additional certificates from.

-caname friendlyname

This specifies the "friendly name" for other certificates. This option may be used multiple times to specify names for all certificates in the order they appear. Netscape ignores friendly names on other certificates whereas MSIE displays them.

-pass arg, -passout arg

The PKCS#12 file (i.e. output file) password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-passin password

Pass phrase source to decrypt any input private keys with. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-chain

If this option is present then an attempt is made to include the entire certificate chain of the user certificate. The standard CA store is used for this search. If the search fails it is considered a fatal error.

-descert

Encrypt the certificate using triple DES, this may render the PKCS#12 file unreadable by some "export grade" software. By default the private key is encrypted using triple DES and the certificate using 40 bit RC2 unless RC2 is disabled in which case triple DES is used.

-keypbe alg, -certpbe alg

These options allow the algorithm used to encrypt the private key and certificates to be selected. Any PKCS#5 v1.5 or PKCS#12 PBE algorithm name can be used (see NOTES section for more information). If a cipher name (as output by the list-cipher-algorithms command is specified then it is used with PKCS#5 v2.0. For interoperability reasons it is advisable to only use PKCS#12 algorithms.

-keyex|-keysig

Specifies that the private key is to be used for key exchange or just signing. This option is only interpreted by MSIE and similar MS software. Normally "export grade" software will only allow 512 bit RSA keys to be used for encryption purposes but arbitrary length keys for signing. The -keysig option marks the key for signing only. Signing only keys can be used for S/MIME signing, authenticode (ActiveX control signing) and SSL client authentication, however, due to a bug only MSIE 5.0 and later support the use of signing only keys for SSL client authentication.

-macalg digest

Specify the MAC digest algorithm. If not included them SHA1 will be used.

-nomaciter, -noiter

These options affect the iteration counts on the MAC and key algorithms. Unless you wish to produce files compatible with MSIE 4.0 you should leave these options alone.

To discourage attacks by using large dictionaries of common passwords the algorithm that derives keys from passwords can have an iteration count applied to it: this causes a certain part of the algorithm to be repeated and slows it down. The MAC is used to check the file integrity but since it will normally have the same password as the keys and certificates it could also be attacked. By default both MAC and encryption iteration counts are set to 2048, using these options the MAC and encryption iteration counts can be set to 1, since this reduces the file security you should not use these options unless you really have to. Most software supports both MAC and key iteration counts. MSIE 4.0 doesn't support MAC iteration counts so it needs the -nomaciter option.

-maciter

This option is included for compatibility with previous versions, it used to be needed to use MAC iterations counts but they are now used by default.

-nomac

Don't attempt to provide the MAC integrity.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-CAfile file

CA storage as a file.

-CApath dir

CA storage as a directory. This directory must be a standard certificate directory: that is a hash of each subject name (using x509 -hash) should be linked to each certificate.

-no-CAfile

Do not load the trusted CA certificates from the default file location.

-no-CApath

Do not load the trusted CA certificates from the default directory location.

-CSP name

Write name as a Microsoft CSP name.

NOTES

Although there are a large number of options most of them are very rarely used. For PKCS#12 file parsing only -in and -out need to be used for PKCS#12 file creation -export and -name are also used.

If none of the -clcerts, -cacerts or -nocerts options are present then all certificates will be output in the order they appear in the input PKCS#12 files. There is no guarantee that the first certificate present is the one corresponding to the private key. Certain software which requires a private key and certificate and assumes the first certificate in the file is the one corresponding to the private key: this may not always be the case. Using the -clcerts option will solve this problem by only outputting the certificate corresponding to the private key. If the CA certificates are required then they can be output to a separate file using the -nokeys -cacerts options to just output CA certificates.

The -keypbe and -certpbe algorithms allow the precise encryption algorithms for private keys and certificates to be specified. Normally the defaults are fine but occasionally software can't handle triple DES encrypted private keys, then the option -keypbe PBE-SHA1-RC2-40 can be used to reduce the private key encryption to 40 bit RC2. A complete description of all algorithms is contained in the pkcs8 manual page.

Prior 1.1 release passwords containing non-ASCII characters were encoded in non-compliant manner, which limited interoperability, in first hand with Windows. But switching to standard-compliant password encoding poses problem accessing old data protected with broken encoding. For this reason even legacy encodings is attempted when reading the data. If you use PKCS#12 files in production application you are advised to convert the data, because implemented heuristic approach is not MT-safe, its sole goal is to facilitate the data upgrade with this utility.

EXAMPLES

Parse a PKCS#12 file and output it to a file:

 openssl pkcs12 -in file.p12 -out file.pem

Output only client certificates to a file:

 openssl pkcs12 -in file.p12 -clcerts -out file.pem

Don't encrypt the private key:

 openssl pkcs12 -in file.p12 -out file.pem -nodes

Print some info about a PKCS#12 file:

 openssl pkcs12 -in file.p12 -info -noout

Create a PKCS#12 file:

 openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate"

Include some extra certificates:

 openssl pkcs12 -export -in file.pem -out file.p12 -name "My Certificate" \
  -certfile othercerts.pem

SEE ALSO

pkcs8(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!SS rand.htmlnu[ rand

NAME

openssl-rand, rand - generate pseudo-random bytes

SYNOPSIS

openssl rand [-help] [-out file] [-rand file...] [-writerand file] [-base64] [-hex] num

DESCRIPTION

This command generates num random bytes using a cryptographically secure pseudo random number generator (CSPRNG).

The random bytes are generated using the RAND_bytes(3) function, which provides a security level of 256 bits, provided it managed to seed itself successfully from a trusted operating system entropy source. Otherwise, the command will fail with a nonzero error code. For more details, see RAND_bytes(3), RAND(7), and RAND_DRBG(7).

OPTIONS

-help

Print out a usage message.

-out file

Write to file instead of standard output.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others. Explicitly specifying a seed file is in general not necessary, see the "NOTES" section for more information.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-base64

Perform base64 encoding on the output.

-hex

Show the output as a hex string.

NOTES

Prior to OpenSSL 1.1.1, it was common for applications to store information about the state of the random-number generator in a file that was loaded at startup and rewritten upon exit. On modern operating systems, this is generally no longer necessary as OpenSSL will seed itself from a trusted entropy source provided by the operating system. The -rand and -writerand flags are still supported for special platforms or circumstances that might require them.

It is generally an error to use the same seed file more than once and every use of -rand should be paired with -writerand.

SEE ALSO

RAND_bytes(3), RAND(7), RAND_DRBG(7)

COPYRIGHT

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!?t۬crl.htmlnu[ crl

NAME

openssl-crl, crl - CRL utility

SYNOPSIS

openssl crl [-help] [-inform PEM|DER] [-outform PEM|DER] [-text] [-in filename] [-out filename] [-nameopt option] [-noout] [-hash] [-issuer] [-lastupdate] [-nextupdate] [-CAfile file] [-CApath dir]

DESCRIPTION

The crl command processes CRL files in DER or PEM format.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the input format. DER format is DER encoded CRL structure. PEM (the default) is a base64 encoded version of the DER form with header and footer lines.

-outform DER|PEM

This specifies the output format, the options have the same meaning and default as the -inform option.

-in filename

This specifies the input filename to read from or standard input if this option is not specified.

-out filename

Specifies the output filename to write to or standard output by default.

-text

Print out the CRL in text form.

-nameopt option

Option which determines how the subject or issuer names are displayed. See the description of -nameopt in x509(1).

-noout

Don't output the encoded version of the CRL.

-hash

Output a hash of the issuer name. This can be use to lookup CRLs in a directory by issuer name.

-hash_old

Outputs the "hash" of the CRL issuer name using the older algorithm as used by OpenSSL before version 1.0.0.

-issuer

Output the issuer name.

-lastupdate

Output the lastUpdate field.

-nextupdate

Output the nextUpdate field.

-CAfile file

Verify the signature on a CRL by looking up the issuing certificate in file.

-CApath dir

Verify the signature on a CRL by looking up the issuing certificate in dir. This directory must be a standard certificate directory: that is a hash of each subject name (using x509 -hash) should be linked to each certificate.

NOTES

The PEM CRL format uses the header and footer lines:

 -----BEGIN X509 CRL-----
 -----END X509 CRL-----

EXAMPLES

Convert a CRL file from PEM to DER:

 openssl crl -in crl.pem -outform DER -out crl.der

Output the text form of a DER encoded certificate:

 openssl crl -in crl.der -inform DER -text -noout

BUGS

Ideally it should be possible to create a CRL using appropriate options and files too.

SEE ALSO

crl2pkcs7(1), ca(1), x509(1)

COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!%W. passwd.htmlnu[ passwd

NAME

openssl-passwd, passwd - compute password hashes

SYNOPSIS

openssl passwd [-help] [-crypt] [-1] [-apr1] [-aixmd5] [-5] [-6] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] [-rand file...] [-writerand file] {password}

DESCRIPTION

The passwd command computes the hash of a password typed at run-time or the hash of each password in a list. The password list is taken from the named file for option -in file, from stdin for option -stdin, or from the command line, or from the terminal otherwise.

OPTIONS

-help

Print out a usage message.

-crypt

Use the crypt algorithm (default).

-1

Use the MD5 based BSD password algorithm 1.

-apr1

Use the apr1 algorithm (Apache variant of the BSD algorithm).

-aixmd5

Use the AIX MD5 algorithm (AIX variant of the BSD algorithm).

-5
-6

Use the SHA256 / SHA512 based algorithms defined by Ulrich Drepper. See https://www.akkadia.org/drepper/SHA-crypt.txt.

-salt string

Use the specified salt. When reading a password from the terminal, this implies -noverify.

-in file

Read passwords from file.

-stdin

Read passwords from stdin.

-noverify

Don't verify when reading a password from the terminal.

-quiet

Don't output warnings when passwords given at the command line are truncated.

-table

In the output list, prepend the cleartext password and a TAB character to each password hash.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

EXAMPLES

  % openssl passwd -crypt -salt xx password
  xxj31ZMTZzkVA

  % openssl passwd -1 -salt xxxxxxxx password
  $1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.

  % openssl passwd -apr1 -salt xxxxxxxx password
  $apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0

  % openssl passwd -aixmd5 -salt xxxxxxxx password
  xxxxxxxx$8Oaipk/GPKhC64w/YVeFD/

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!H;; verify.htmlnu[ verify

NAME

openssl-verify, verify - Utility to verify certificates

SYNOPSIS

openssl verify [-help] [-CAfile file] [-CApath directory] [-no-CAfile] [-no-CApath] [-allow_proxy_certs] [-attime timestamp] [-check_ss_sig] [-CRLfile file] [-crl_download] [-crl_check] [-crl_check_all] [-engine id] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-nameopt option] [-no_check_time] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-untrusted file] [-trusted file] [-use_deltas] [-verbose] [-auth_level level] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-show_chain] [-] [certificates]

DESCRIPTION

The verify command verifies certificate chains.

OPTIONS

-help

Print out a usage message.

-CAfile file

A file of trusted certificates. The file should contain one or more certificates in PEM format.

-CApath directory

A directory of trusted certificates. The certificates should have names of the form: hash.0 or have symbolic links to them of this form ("hash" is the hashed certificate subject name: see the -hash option of the x509 utility). Under Unix the c_rehash script will automatically create symbolic links to a directory of certificates.

-no-CAfile

Do not load the trusted CA certificates from the default file location.

-no-CApath

Do not load the trusted CA certificates from the default directory location.

-allow_proxy_certs

Allow the verification of proxy certificates.

-attime timestamp

Perform validation checks using time specified by timestamp and not current system time. timestamp is the number of seconds since 01.01.1970 (UNIX time).

-check_ss_sig

Verify the signature of the last certificate in a chain if the certificate is supposedly self-signed. This is prohibited and will result in an error if it is a non-conforming CA certificate with key usage restrictions not including the keyCertSign bit. This verification is disabled by default because it doesn't add any security.

-CRLfile file

The file should contain one or more CRLs in PEM format. This option can be specified more than once to include CRLs from multiple files.

-crl_download

Attempt to download CRL information for this certificate.

-crl_check

Checks end entity certificate validity by attempting to look up a valid CRL. If a valid CRL cannot be found an error occurs.

-crl_check_all

Checks the validity of all certificates in the chain by attempting to look up valid CRLs.

-engine id

Specifying an engine id will cause verify(1) to attempt to load the specified engine. The engine will then be set as the default for all its supported algorithms. If you want to load certificates or CRLs that require engine support via any of the -trusted, -untrusted or -CRLfile options, the -engine option must be specified before those options.

-explicit_policy

Set policy variable require-explicit-policy (see RFC5280).

-extended_crl

Enable extended CRL features such as indirect CRLs and alternate CRL signing keys.

-ignore_critical

Normally if an unhandled critical extension is present which is not supported by OpenSSL the certificate is rejected (as required by RFC5280). If this option is set critical extensions are ignored.

-inhibit_any

Set policy variable inhibit-any-policy (see RFC5280).

-inhibit_map

Set policy variable inhibit-policy-mapping (see RFC5280).

-nameopt option

Option which determines how the subject or issuer names are displayed. The option argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the x509(1) manual page for details.

-no_check_time

This option suppresses checking the validity period of certificates and CRLs against the current time. If option -attime timestamp is used to specify a verification time, the check is not suppressed.

-partial_chain

Allow verification to succeed even if a complete chain cannot be built to a self-signed trust-anchor, provided it is possible to construct a chain to a trusted certificate that might not be self-signed.

-policy arg

Enable policy processing and add arg to the user-initial-policy-set (see RFC5280). The policy arg can be an object name an OID in numeric form. This argument can appear more than once.

-policy_check

Enables certificate policy processing.

-policy_print

Print out diagnostics related to policy processing.

-purpose purpose

The intended use for the certificate. If this option is not specified, verify will not consider certificate purpose during chain verification. Currently accepted uses are sslclient, sslserver, nssslserver, smimesign, smimeencrypt. See the VERIFY OPERATION section for more information.

-suiteB_128_only, -suiteB_128, -suiteB_192

Enable the Suite B mode operation at 128 bit Level of Security, 128 bit or 192 bit, or only 192 bit Level of Security respectively. See RFC6460 for details. In particular the supported signature algorithms are reduced to support only ECDSA and SHA256 or SHA384 and only the elliptic curves P-256 and P-384.

-trusted_first

When constructing the certificate chain, use the trusted certificates specified via -CAfile, -CApath or -trusted before any certificates specified via -untrusted. This can be useful in environments with Bridge or Cross-Certified CAs. As of OpenSSL 1.1.0 this option is on by default and cannot be disabled.

-no_alt_chains

By default, unless -trusted_first is specified, when building a certificate chain, if the first certificate chain found is not trusted, then OpenSSL will attempt to replace untrusted issuer certificates with certificates from the trust store to see if an alternative chain can be found that is trusted. As of OpenSSL 1.1.0, with -trusted_first always on, this option has no effect.

-untrusted file

A file of additional untrusted certificates (intermediate issuer CAs) used to construct a certificate chain from the subject certificate to a trust-anchor. The file should contain one or more certificates in PEM format. This option can be specified more than once to include untrusted certificates from multiple files.

-trusted file

A file of trusted certificates, which must be self-signed, unless the -partial_chain option is specified. The file contains one or more certificates in PEM format. With this option, no additional (e.g., default) certificate lists are consulted. That is, the only trust-anchors are those listed in file. This option can be specified more than once to include trusted certificates from multiple files. This option implies the -no-CAfile and -no-CApath options. This option cannot be used in combination with either of the -CAfile or -CApath options.

-use_deltas

Enable support for delta CRLs.

-verbose

Print extra information about the operations being performed.

-auth_level level

Set the certificate chain authentication security level to level. The authentication security level determines the acceptable signature and public key strength when verifying certificate chains. For a certificate chain to validate, the public keys of all the certificates must meet the specified security level. The signature algorithm security level is enforced for all the certificates in the chain except for the chain's trust anchor, which is either directly trusted or validated by means other than its signature. See SSL_CTX_set_security_level(3) for the definitions of the available levels. The default security level is -1, or "not set". At security level 0 or lower all algorithms are acceptable. Security level 1 requires at least 80-bit-equivalent security and is broadly interoperable, though it will, for example, reject MD5 signatures or RSA keys shorter than 1024 bits.

-verify_depth num

Limit the certificate chain to num intermediate CA certificates. A maximal depth chain can have up to num+2 certificates, since neither the end-entity certificate nor the trust-anchor certificate count against the -verify_depth limit.

-verify_email email

Verify if the email matches the email address in Subject Alternative Name or the email in the subject Distinguished Name.

-verify_hostname hostname

Verify if the hostname matches DNS name in Subject Alternative Name or Common Name in the subject certificate.

-verify_ip ip

Verify if the ip matches the IP address in Subject Alternative Name of the subject certificate.

-verify_name name

Use default verification policies like trust model and required certificate policies identified by name. The trust model determines which auxiliary trust or reject OIDs are applicable to verifying the given certificate chain. See the -addtrust and -addreject options of the x509(1) command-line utility. Supported policy names include: default, pkcs7, smime_sign, ssl_client, ssl_server. These mimics the combinations of purpose and trust settings used in SSL, CMS and S/MIME. As of OpenSSL 1.1.0, the trust model is inferred from the purpose when not specified, so the -verify_name options are functionally equivalent to the corresponding -purpose settings.

-x509_strict

For strict X.509 compliance, disable non-compliant workarounds for broken certificates.

-show_chain

Display information about the certificate chain that has been built (if successful). Certificates in the chain that came from the untrusted list will be flagged as "untrusted".

-

Indicates the last option. All arguments following this are assumed to be certificate files. This is useful if the first certificate filename begins with a -.

certificates

One or more certificates to verify. If no certificates are given, verify will attempt to read a certificate from standard input. Certificates must be in PEM format.

VERIFY OPERATION

The verify program uses the same functions as the internal SSL and S/MIME verification, therefore, this description applies to these verify operations too.

There is one crucial difference between the verify operations performed by the verify program: wherever possible an attempt is made to continue after an error whereas normally the verify operation would halt on the first error. This allows all the problems with a certificate chain to be determined.

The verify operation consists of a number of separate steps.

Firstly a certificate chain is built up starting from the supplied certificate and ending in the root CA. It is an error if the whole chain cannot be built up. The chain is built up by looking up the issuers certificate of the current certificate. If a certificate is found which is its own issuer it is assumed to be the root CA.

The process of 'looking up the issuers certificate' itself involves a number of steps. After all certificates whose subject name matches the issuer name of the current certificate are subject to further tests. The relevant authority key identifier components of the current certificate (if present) must match the subject key identifier (if present) and issuer and serial number of the candidate issuer, in addition the keyUsage extension of the candidate issuer (if present) must permit certificate signing.

The lookup first looks in the list of untrusted certificates and if no match is found the remaining lookups are from the trusted certificates. The root CA is always looked up in the trusted certificate list: if the certificate to verify is a root certificate then an exact match must be found in the trusted list.

The second operation is to check every untrusted certificate's extensions for consistency with the supplied purpose. If the -purpose option is not included then no checks are done. The supplied or "leaf" certificate must have extensions compatible with the supplied purpose and all other certificates must also be valid CA certificates. The precise extensions required are described in more detail in the CERTIFICATE EXTENSIONS section of the x509 utility.

The third operation is to check the trust settings on the root CA. The root CA should be trusted for the supplied purpose. For compatibility with previous versions of OpenSSL, a certificate with no trust settings is considered to be valid for all purposes.

The final operation is to check the validity of the certificate chain. For each element in the chain, including the root CA certificate, the validity period as specified by the notBefore and notAfter fields is checked against the current system time. The -attime flag may be used to use a reference time other than "now." The certificate signature is checked as well (except for the signature of the typically self-signed root CA certificate, which is verified only if the -check_ss_sig option is given).

If all operations complete successfully then certificate is considered valid. If any operation fails then the certificate is not valid.

DIAGNOSTICS

When a verify operation fails the output messages can be somewhat cryptic. The general form of the error message is:

 server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
 error 24 at 1 depth lookup:invalid CA certificate

The first line contains the name of the certificate being verified followed by the subject name of the certificate. The second line contains the error number and the depth. The depth is number of the certificate being verified when a problem was detected starting with zero for the certificate being verified itself then 1 for the CA that signed the certificate and so on. Finally a text version of the error number is presented.

A partial list of the error codes and messages is shown below, this also includes the name of the error code as defined in the header file x509_vfy.h Some of the error codes are defined but never returned: these are described as "unused".

X509_V_OK

The operation was successful.

X509_V_ERR_UNSPECIFIED

Unspecified error; should not happen.

X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT

The issuer certificate of a looked up certificate could not be found. This normally means the list of trusted certificates is not complete.

X509_V_ERR_UNABLE_TO_GET_CRL

The CRL of a certificate could not be found.

X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE

The certificate signature could not be decrypted. This means that the actual signature value could not be determined rather than it not matching the expected value, this is only meaningful for RSA keys.

X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE

The CRL signature could not be decrypted: this means that the actual signature value could not be determined rather than it not matching the expected value. Unused.

X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY

The public key in the certificate SubjectPublicKeyInfo could not be read.

X509_V_ERR_CERT_SIGNATURE_FAILURE

The signature of the certificate is invalid.

X509_V_ERR_CRL_SIGNATURE_FAILURE

The signature of the certificate is invalid.

X509_V_ERR_CERT_NOT_YET_VALID

The certificate is not yet valid: the notBefore date is after the current time.

X509_V_ERR_CERT_HAS_EXPIRED

The certificate has expired: that is the notAfter date is before the current time.

X509_V_ERR_CRL_NOT_YET_VALID

The CRL is not yet valid.

X509_V_ERR_CRL_HAS_EXPIRED

The CRL has expired.

X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD

The certificate notBefore field contains an invalid time.

X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD

The certificate notAfter field contains an invalid time.

X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD

The CRL lastUpdate field contains an invalid time.

X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD

The CRL nextUpdate field contains an invalid time.

X509_V_ERR_OUT_OF_MEM

An error occurred trying to allocate memory. This should never happen.

X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT

The passed certificate is self-signed and the same certificate cannot be found in the list of trusted certificates.

X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN

The certificate chain could be built up using the untrusted certificates but the root could not be found locally.

X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY

The issuer certificate could not be found: this occurs if the issuer certificate of an untrusted certificate cannot be found.

X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE

No signatures could be verified because the chain contains only one certificate and it is not self signed.

X509_V_ERR_CERT_CHAIN_TOO_LONG

The certificate chain length is greater than the supplied maximum depth. Unused.

X509_V_ERR_CERT_REVOKED

The certificate has been revoked.

X509_V_ERR_INVALID_CA

A CA certificate is invalid. Either it is not a CA or its extensions are not consistent with the supplied purpose.

X509_V_ERR_PATH_LENGTH_EXCEEDED

The basicConstraints pathlength parameter has been exceeded.

X509_V_ERR_INVALID_PURPOSE

The supplied certificate cannot be used for the specified purpose.

X509_V_ERR_CERT_UNTRUSTED

The root CA is not marked as trusted for the specified purpose.

X509_V_ERR_CERT_REJECTED

The root CA is marked to reject the specified purpose.

X509_V_ERR_SUBJECT_ISSUER_MISMATCH

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the -issuer_checks option.

X509_V_ERR_AKID_SKID_MISMATCH

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the -issuer_checks option.

X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the -issuer_checks option.

X509_V_ERR_KEYUSAGE_NO_CERTSIGN

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the -issuer_checks option.

X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER

Unable to get CRL issuer certificate.

X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION

Unhandled critical extension.

X509_V_ERR_KEYUSAGE_NO_CRL_SIGN

Key usage does not include CRL signing.

X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION

Unhandled critical CRL extension.

X509_V_ERR_INVALID_NON_CA

Invalid non-CA certificate has CA markings.

X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED

Proxy path length constraint exceeded.

X509_V_ERR_PROXY_SUBJECT_INVALID

Proxy certificate subject is invalid. It MUST be the same as the issuer with a single CN component added.

X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE

Key usage does not include digital signature.

X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED

Proxy certificates not allowed, please use -allow_proxy_certs.

X509_V_ERR_INVALID_EXTENSION

Invalid or inconsistent certificate extension.

X509_V_ERR_INVALID_POLICY_EXTENSION

Invalid or inconsistent certificate policy extension.

X509_V_ERR_NO_EXPLICIT_POLICY

No explicit policy.

X509_V_ERR_DIFFERENT_CRL_SCOPE

Different CRL scope.

X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE

Unsupported extension feature.

X509_V_ERR_UNNESTED_RESOURCE

RFC 3779 resource not subset of parent's resources.

X509_V_ERR_PERMITTED_VIOLATION

Permitted subtree violation.

X509_V_ERR_EXCLUDED_VIOLATION

Excluded subtree violation.

X509_V_ERR_SUBTREE_MINMAX

Name constraints minimum and maximum not supported.

X509_V_ERR_APPLICATION_VERIFICATION

Application verification failure. Unused.

X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE

Unsupported name constraint type.

X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX

Unsupported or invalid name constraint syntax.

X509_V_ERR_UNSUPPORTED_NAME_SYNTAX

Unsupported or invalid name syntax.

X509_V_ERR_CRL_PATH_VALIDATION_ERROR

CRL path validation error.

X509_V_ERR_PATH_LOOP

Path loop.

X509_V_ERR_SUITE_B_INVALID_VERSION

Suite B: certificate version invalid.

X509_V_ERR_SUITE_B_INVALID_ALGORITHM

Suite B: invalid public key algorithm.

X509_V_ERR_SUITE_B_INVALID_CURVE

Suite B: invalid ECC curve.

X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM

Suite B: invalid signature algorithm.

X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED

Suite B: curve not allowed for this LOS.

X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256

Suite B: cannot sign P-384 with P-256.

X509_V_ERR_HOSTNAME_MISMATCH

Hostname mismatch.

X509_V_ERR_EMAIL_MISMATCH

Email address mismatch.

X509_V_ERR_IP_ADDRESS_MISMATCH

IP address mismatch.

X509_V_ERR_DANE_NO_MATCH

DANE TLSA authentication is enabled, but no TLSA records matched the certificate chain. This error is only possible in s_client(1).

X509_V_ERR_EE_KEY_TOO_SMALL

EE certificate key too weak.

X509_ERR_CA_KEY_TOO_SMALL

CA certificate key too weak.

X509_ERR_CA_MD_TOO_WEAK

CA signature digest algorithm too weak.

X509_V_ERR_INVALID_CALL

nvalid certificate verification context.

X509_V_ERR_STORE_LOOKUP

Issuer certificate lookup error.

X509_V_ERR_NO_VALID_SCTS

Certificate Transparency required, but no valid SCTs found.

X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION

Proxy subject name violation.

X509_V_ERR_OCSP_VERIFY_NEEDED

Returned by the verify callback to indicate an OCSP verification is needed.

X509_V_ERR_OCSP_VERIFY_FAILED

Returned by the verify callback to indicate OCSP verification failed.

X509_V_ERR_OCSP_CERT_UNKNOWN

Returned by the verify callback to indicate that the certificate is not recognized by the OCSP responder.

BUGS

Although the issuer checks are a considerable improvement over the old technique they still suffer from limitations in the underlying X509_LOOKUP API. One consequence of this is that trusted certificates with matching subject name must either appear in a file (as specified by the -CAfile option) or a directory (as specified by -CApath). If they occur in both then only the certificates in the file will be recognised.

Previous versions of OpenSSL assume certificates with matching subject name are identical and mishandled them.

Previous versions of this documentation swapped the meaning of the X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT and X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY error codes.

SEE ALSO

x509(1)

HISTORY

The -show_chain option was added in OpenSSL 1.1.0.

The -issuer_checks option is deprecated as of OpenSSL 1.1.0 and is silently ignored.

COPYRIGHT

Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!~ ~ list.htmlnu[ list

NAME

openssl-list, list - list algorithms and features

SYNOPSIS

openssl list [-help] [-1] [-commands] [-digest-commands] [-digest-algorithms] [-cipher-commands] [-cipher-algorithms] [-public-key-algorithms] [-public-key-methods] [-disabled]

DESCRIPTION

This command is used to generate list of algorithms or disabled features.

OPTIONS

-help

Display a usage message.

-1

List the commands, digest-commands, or cipher-commands in a single column. If used, this option must be given first.

-commands

Display a list of standard commands.

-digest-commands

Display a list of message digest commands, which are typically used as input to the dgst(1) or speed(1) commands.

-digest-algorithms

Display a list of message digest algorithms. If a line is of the form foo => bar then foo is an alias for the official algorithm name, bar.

-cipher-commands

Display a list of cipher commands, which are typically used as input to the dgst(1) or speed(1) commands.

-cipher-algorithms

Display a list of cipher algorithms. If a line is of the form foo => bar then foo is an alias for the official algorithm name, bar.

-public-key-algorithms

Display a list of public key algorithms, with each algorithm as a block of multiple lines, all but the first are indented.

-public-key-methods

Display a list of public key method OIDs: this also includes public key methods without an associated ASN.1 method, for example, KDF algorithms.

-disabled

Display a list of disabled features, those that were compiled out of the installation.

COPYRIGHT

Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!bWcrl2pkcs7.htmlnu[ crl2pkcs7

NAME

openssl-crl2pkcs7, crl2pkcs7 - Create a PKCS#7 structure from a CRL and certificates

SYNOPSIS

openssl crl2pkcs7 [-help] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-out filename] [-certfile filename] [-nocrl]

DESCRIPTION

The crl2pkcs7 command takes an optional CRL and one or more certificates and converts them into a PKCS#7 degenerate "certificates only" structure.

OPTIONS

-help

Print out a usage message.

-inform DER|PEM

This specifies the CRL input format. DER format is DER encoded CRL structure.PEM (the default) is a base64 encoded version of the DER form with header and footer lines. The default format is PEM.

-outform DER|PEM

This specifies the PKCS#7 structure output format. DER format is DER encoded PKCS#7 structure.PEM (the default) is a base64 encoded version of the DER form with header and footer lines. The default format is PEM.

-in filename

This specifies the input filename to read a CRL from or standard input if this option is not specified.

-out filename

Specifies the output filename to write the PKCS#7 structure to or standard output by default.

-certfile filename

Specifies a filename containing one or more certificates in PEM format. All certificates in the file will be added to the PKCS#7 structure. This option can be used more than once to read certificates from multiple files.

-nocrl

Normally a CRL is included in the output file. With this option no CRL is included in the output file and a CRL is not read from the input file.

EXAMPLES

Create a PKCS#7 structure from a certificate and CRL:

 openssl crl2pkcs7 -in crl.pem -certfile cert.pem -out p7.pem

Creates a PKCS#7 structure in DER format with no CRL from several different certificates:

 openssl crl2pkcs7 -nocrl -certfile newcert.pem
        -certfile demoCA/cacert.pem -outform DER -out p7.der

NOTES

The output file is a PKCS#7 signed data structure containing no signers and just certificates and an optional CRL.

This utility can be used to send certificates and CAs to Netscape as part of the certificate enrollment process. This involves sending the DER encoded output as MIME type application/x-x509-user-cert.

The PEM encoded form with the header and footer lines removed can be used to install user certificates and CAs in MSIE using the Xenroll control.

SEE ALSO

pkcs7(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!݀8 engine.htmlnu[ engine

NAME

openssl-engine, engine - load and query engines

SYNOPSIS

openssl engine [ engine... ] [-v] [-vv] [-vvv] [-vvv] [-vvv] [-c] [-t] [-tt] [-pre command] [-post command] [ engine... ]

DESCRIPTION

The engine command is used to query the status and capabilities of the specified engine's. Engines may be specified before and after all other command-line flags. Only those specified are queried.

OPTIONS

-v -vv -vvv -vvvv

Provides information about each specified engine. The first flag lists all the possible run-time control commands; the second adds a description of each command; the third adds the input flags, and the final option adds the internal input flags.

-c

Lists the capabilities of each engine.

-t

Tests if each specified engine is available, and displays the answer.

-tt

Displays an error trace for any unavailable engine.

-pre command
-post command

Command-line configuration of engines. The -pre command is given to the engine before it is loaded and the -post command is given after the engine is loaded. The command is of the form cmd:val where cmd is the command, and val is the value for the command. See the example below.

EXAMPLES

To list all the commands available to a dynamic engine:

 $ openssl engine -t -tt -vvvv dynamic
 (dynamic) Dynamic engine loading support
      [ unavailable ]
      SO_PATH: Specifies the path to the new ENGINE shared library
           (input flags): STRING
      NO_VCHECK: Specifies to continue even if version checking fails (boolean)
           (input flags): NUMERIC
      ID: Specifies an ENGINE id name for loading
           (input flags): STRING
      LIST_ADD: Whether to add a loaded ENGINE to the internal list (0=no,1=yes,2=mandatory)
           (input flags): NUMERIC
      DIR_LOAD: Specifies whether to load from 'DIR_ADD' directories (0=no,1=yes,2=mandatory)
           (input flags): NUMERIC
      DIR_ADD: Adds a directory from which ENGINEs can be loaded
           (input flags): STRING
      LOAD: Load up the ENGINE specified by other settings
           (input flags): NO_INPUT

To list the capabilities of the rsax engine:

 $ openssl engine -c
 (rsax) RSAX engine support
  [RSA]
 (dynamic) Dynamic engine loading support

ENVIRONMENT

OPENSSL_ENGINES

The path to the engines directory.

SEE ALSO

config(5)

COPYRIGHT

Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!ZZ spkac.htmlnu[ spkac

NAME

openssl-spkac, spkac - SPKAC printing and generating utility

SYNOPSIS

openssl spkac [-help] [-in filename] [-out filename] [-key keyfile] [-keyform PEM|DER|ENGINE] [-passin arg] [-challenge string] [-pubkey] [-spkac spkacname] [-spksect section] [-noout] [-verify] [-engine id]

DESCRIPTION

The spkac command processes Netscape signed public key and challenge (SPKAC) files. It can print out their contents, verify the signature and produce its own SPKACs from a supplied private key.

OPTIONS

-help

Print out a usage message.

-in filename

This specifies the input filename to read from or standard input if this option is not specified. Ignored if the -key option is used.

-out filename

Specifies the output filename to write to or standard output by default.

-key keyfile

Create an SPKAC file using the private key in keyfile. The -in, -noout, -spksect and -verify options are ignored if present.

-keyform PEM|DER|ENGINE

Whether the key format is PEM, DER, or an engine-backed key. The default is PEM.

-passin password

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-challenge string

Specifies the challenge string if an SPKAC is being created.

-spkac spkacname

Allows an alternative name form the variable containing the SPKAC. The default is "SPKAC". This option affects both generated and input SPKAC files.

-spksect section

Allows an alternative name form the section containing the SPKAC. The default is the default section.

-noout

Don't output the text version of the SPKAC (not used if an SPKAC is being created).

-pubkey

Output the public key of an SPKAC (not used if an SPKAC is being created).

-verify

Verifies the digital signature on the supplied SPKAC.

-engine id

Specifying an engine (by its unique id string) will cause spkac to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

EXAMPLES

Print out the contents of an SPKAC:

 openssl spkac -in spkac.cnf

Verify the signature of an SPKAC:

 openssl spkac -in spkac.cnf -noout -verify

Create an SPKAC using the challenge string "hello":

 openssl spkac -key key.pem -challenge hello -out spkac.cnf

Example of an SPKAC, (long lines split up for clarity):

 SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\
 1cCoq2Wa3Ixs47uI7FPVwHVIPDx5yso105Y6zpozam135a\
 8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03uPFoQIDAQAB\
 FgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJ\
 h1bEIYuc2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnD\
 dq+NQ3F+X4deMx9AaEglZtULwV4=

NOTES

A created SPKAC with suitable DN components appended can be fed into the ca utility.

SPKACs are typically generated by Netscape when a form is submitted containing the KEYGEN tag as part of the certificate enrollment process.

The challenge string permits a primitive form of proof of possession of private key. By checking the SPKAC signature and a random challenge string some guarantee is given that the user knows the private key corresponding to the public key being certified. This is important in some applications. Without this it is possible for a previous SPKAC to be used in a "replay attack".

SEE ALSO

ca(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!fi i pkeyparam.htmlnu[ pkeyparam

NAME

openssl-pkeyparam, pkeyparam - public key algorithm parameter processing tool

SYNOPSIS

openssl pkeyparam [-help] [-in filename] [-out filename] [-text] [-noout] [-engine id] [-check]

DESCRIPTION

The pkeyparam command processes public key algorithm parameters. They can be checked for correctness and their components printed out.

OPTIONS

-help

Print out a usage message.

-in filename

This specifies the input filename to read parameters from or standard input if this option is not specified.

-out filename

This specifies the output filename to write parameters to or standard output if this option is not specified.

-text

Prints out the parameters in plain text in addition to the encoded version.

-noout

Do not output the encoded version of the parameters.

-engine id

Specifying an engine (by its unique id string) will cause pkeyparam to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-check

This option checks the correctness of parameters.

EXAMPLES

Print out text version of parameters:

 openssl pkeyparam -in param.pem -text

NOTES

There are no -inform or -outform options for this command because only PEM format is supported because the key type is determined by the PEM headers.

SEE ALSO

genpkey(1), rsa(1), pkcs8(1), dsa(1), genrsa(1), gendsa(1)

COPYRIGHT

Copyright 2006-2019 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!:SS openssl.htmlnu[ openssl

NAME

openssl - OpenSSL command line tool

SYNOPSIS

openssl command [ command_opts ] [ command_args ]

openssl list [ standard-commands | digest-commands | cipher-commands | cipher-algorithms | digest-algorithms | public-key-algorithms]

openssl no-XXX [ arbitrary options ]

DESCRIPTION

OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them.

The openssl program is a command line tool for using the various cryptography functions of OpenSSL's crypto library from the shell. It can be used for

 o  Creation and management of private keys, public keys and parameters
 o  Public key cryptographic operations
 o  Creation of X.509 certificates, CSRs and CRLs
 o  Calculation of Message Digests
 o  Encryption and Decryption with Ciphers
 o  SSL/TLS Client and Server Tests
 o  Handling of S/MIME signed or encrypted mail
 o  Time Stamp requests, generation and verification

COMMAND SUMMARY

The openssl program provides a rich variety of commands (command in the SYNOPSIS above), each of which often has a wealth of options and arguments (command_opts and command_args in the SYNOPSIS).

Detailed documentation and use cases for most standard subcommands are available (e.g., x509(1) or openssl-x509(1)).

Many commands use an external configuration file for some or all of their arguments and have a -config option to specify that file. The environment variable OPENSSL_CONF can be used to specify the location of the file. If the environment variable is not specified, then the file is named openssl.cnf in the default certificate storage area, whose value depends on the configuration flags specified when the OpenSSL was built.

The list parameters standard-commands, digest-commands, and cipher-commands output a list (one entry per line) of the names of all standard commands, message digest commands, or cipher commands, respectively, that are available in the present openssl utility.

The list parameters cipher-algorithms and digest-algorithms list all cipher and message digest names, one entry per line. Aliases are listed as:

 from => to

The list parameter public-key-algorithms lists all supported public key algorithms.

The command no-XXX tests whether a command of the specified name is available. If no command named XXX exists, it returns 0 (success) and prints no-XXX; otherwise it returns 1 and prints XXX. In both cases, the output goes to stdout and nothing is printed to stderr. Additional command line arguments are always ignored. Since for each cipher there is a command of the same name, this provides an easy way for shell scripts to test for the availability of ciphers in the openssl program. (no-XXX is not able to detect pseudo-commands such as quit, list, or no-XXX itself.)

Standard Commands

asn1parse

Parse an ASN.1 sequence.

ca

Certificate Authority (CA) Management.

ciphers

Cipher Suite Description Determination.

cms

CMS (Cryptographic Message Syntax) utility.

crl

Certificate Revocation List (CRL) Management.

crl2pkcs7

CRL to PKCS#7 Conversion.

dgst

Message Digest Calculation.

dh

Diffie-Hellman Parameter Management. Obsoleted by dhparam(1).

dhparam

Generation and Management of Diffie-Hellman Parameters. Superseded by genpkey(1) and pkeyparam(1).

dsa

DSA Data Management.

dsaparam

DSA Parameter Generation and Management. Superseded by genpkey(1) and pkeyparam(1).

ec

EC (Elliptic curve) key processing.

ecparam

EC parameter manipulation and generation.

enc

Encoding with Ciphers.

engine

Engine (loadable module) information and manipulation.

errstr

Error Number to Error String Conversion.

gendh

Generation of Diffie-Hellman Parameters. Obsoleted by dhparam(1).

gendsa

Generation of DSA Private Key from Parameters. Superseded by genpkey(1) and pkey(1).

genpkey

Generation of Private Key or Parameters.

genrsa

Generation of RSA Private Key. Superseded by genpkey(1).

nseq

Create or examine a Netscape certificate sequence.

ocsp

Online Certificate Status Protocol utility.

passwd

Generation of hashed passwords.

pkcs12

PKCS#12 Data Management.

pkcs7

PKCS#7 Data Management.

pkcs8

PKCS#8 format private key conversion tool.

pkey

Public and private key management.

pkeyparam

Public key algorithm parameter management.

pkeyutl

Public key algorithm cryptographic operation utility.

prime

Compute prime numbers.

rand

Generate pseudo-random bytes.

rehash

Create symbolic links to certificate and CRL files named by the hash values.

req

PKCS#10 X.509 Certificate Signing Request (CSR) Management.

rsa

RSA key management.

rsautl

RSA utility for signing, verification, encryption, and decryption. Superseded by pkeyutl(1).

s_client

This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It's intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL ssl library.

s_server

This implements a generic SSL/TLS server which accepts connections from remote clients speaking SSL/TLS. It's intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL ssl library. It provides both an own command line oriented protocol for testing SSL functions and a simple HTTP response facility to emulate an SSL/TLS-aware webserver.

s_time

SSL Connection Timer.

sess_id

SSL Session Data Management.

smime

S/MIME mail processing.

speed

Algorithm Speed Measurement.

spkac

SPKAC printing and generating utility.

srp

Maintain SRP password file.

storeutl

Utility to list and display certificates, keys, CRLs, etc.

ts

Time Stamping Authority tool (client/server).

verify

X.509 Certificate Verification.

version

OpenSSL Version Information.

x509

X.509 Certificate Data Management.

Message Digest Commands

blake2b512

BLAKE2b-512 Digest

blake2s256

BLAKE2s-256 Digest

md2

MD2 Digest

md4

MD4 Digest

md5

MD5 Digest

mdc2

MDC2 Digest

rmd160

RMD-160 Digest

sha1

SHA-1 Digest

sha224

SHA-2 224 Digest

sha256

SHA-2 256 Digest

sha384

SHA-2 384 Digest

sha512

SHA-2 512 Digest

sha3-224

SHA-3 224 Digest

sha3-256

SHA-3 256 Digest

sha3-384

SHA-3 384 Digest

sha3-512

SHA-3 512 Digest

shake128

SHA-3 SHAKE128 Digest

shake256

SHA-3 SHAKE256 Digest

sm3

SM3 Digest

Encoding and Cipher Commands

The following aliases provide convenient access to the most used encodings and ciphers.

Depending on how OpenSSL was configured and built, not all ciphers listed here may be present. See enc(1) for more information and command usage.

aes128, aes-128-cbc, aes-128-cfb, aes-128-ctr, aes-128-ecb, aes-128-ofb

AES-128 Cipher

aes192, aes-192-cbc, aes-192-cfb, aes-192-ctr, aes-192-ecb, aes-192-ofb

AES-192 Cipher

aes256, aes-256-cbc, aes-256-cfb, aes-256-ctr, aes-256-ecb, aes-256-ofb

AES-256 Cipher

aria128, aria-128-cbc, aria-128-cfb, aria-128-ctr, aria-128-ecb, aria-128-ofb

Aria-128 Cipher

aria192, aria-192-cbc, aria-192-cfb, aria-192-ctr, aria-192-ecb, aria-192-ofb

Aria-192 Cipher

aria256, aria-256-cbc, aria-256-cfb, aria-256-ctr, aria-256-ecb, aria-256-ofb

Aria-256 Cipher

base64

Base64 Encoding

bf, bf-cbc, bf-cfb, bf-ecb, bf-ofb

Blowfish Cipher

camellia128, camellia-128-cbc, camellia-128-cfb, camellia-128-ctr, camellia-128-ecb, camellia-128-ofb

Camellia-128 Cipher

camellia192, camellia-192-cbc, camellia-192-cfb, camellia-192-ctr, camellia-192-ecb, camellia-192-ofb

Camellia-192 Cipher

camellia256, camellia-256-cbc, camellia-256-cfb, camellia-256-ctr, camellia-256-ecb, camellia-256-ofb

Camellia-256 Cipher

cast, cast-cbc

CAST Cipher

cast5-cbc, cast5-cfb, cast5-ecb, cast5-ofb

CAST5 Cipher

chacha20

Chacha20 Cipher

des, des-cbc, des-cfb, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ofb

DES Cipher

des3, desx, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-ofb

Triple-DES Cipher

idea, idea-cbc, idea-cfb, idea-ecb, idea-ofb

IDEA Cipher

rc2, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb

RC2 Cipher

rc4

RC4 Cipher

rc5, rc5-cbc, rc5-cfb, rc5-ecb, rc5-ofb

RC5 Cipher

seed, seed-cbc, seed-cfb, seed-ecb, seed-ofb

SEED Cipher

sm4, sm4-cbc, sm4-cfb, sm4-ctr, sm4-ecb, sm4-ofb

SM4 Cipher

OPTIONS

Details of which options are available depend on the specific command. This section describes some common options with common behavior.

Common Options

-help

Provides a terse summary of all options.

Pass Phrase Options

Several commands accept password arguments, typically using -passin and -passout for input and output passwords respectively. These allow the password to be obtained from a variety of sources. Both of these options take a single argument whose format is described below. If no password argument is given and a password is required then the user is prompted to enter one: this will typically be read from the current terminal with echoing turned off.

Note that character encoding may be relevant, please see passphrase-encoding(7).

pass:password

The actual password is password. Since the password is visible to utilities (like 'ps' under Unix) this form should only be used where security is not important.

env:var

Obtain the password from the environment variable var. Since the environment of other processes is visible on certain platforms (e.g. ps under certain Unix OSes) this option should be used with caution.

file:pathname

The first line of pathname is the password. If the same pathname argument is supplied to -passin and -passout arguments then the first line will be used for the input password and the next line for the output password. pathname need not refer to a regular file: it could for example refer to a device or named pipe.

fd:number

Read the password from the file descriptor number. This can be used to send the data via a pipe for example.

stdin

Read the password from standard input.

SEE ALSO

asn1parse(1), ca(1), ciphers(1), cms(1), config(5), crl(1), crl2pkcs7(1), dgst(1), dhparam(1), dsa(1), dsaparam(1), ec(1), ecparam(1), enc(1), engine(1), errstr(1), gendsa(1), genpkey(1), genrsa(1), nseq(1), ocsp(1), passwd(1), pkcs12(1), pkcs7(1), pkcs8(1), pkey(1), pkeyparam(1), pkeyutl(1), prime(1), rand(1), rehash(1), req(1), rsa(1), rsautl(1), s_client(1), s_server(1), s_time(1), sess_id(1), smime(1), speed(1), spkac(1), srp(1), storeutl(1), ts(1), verify(1), version(1), x509(1), crypto(7), ssl(7), x509v3_config(5)

HISTORY

The list-XXX-algorithms pseudo-commands were added in OpenSSL 1.0.0; For notes on the availability of other commands, see their individual manual pages.

COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!~kii errstr.htmlnu[ errstr

NAME

openssl-errstr, errstr - lookup error codes

SYNOPSIS

openssl errstr error_code

DESCRIPTION

Sometimes an application will not load error message and only numerical forms will be available. The errstr utility can be used to display the meaning of the hex code. The hex code is the hex digits after the second colon.

OPTIONS

None.

EXAMPLES

The error code:

 27594:error:2006D080:lib(32):func(109):reason(128):bss_file.c:107:

can be displayed with:

 openssl errstr 2006D080

to produce the error message:

 error:2006D080:BIO routines:BIO_new_file:no such file

COPYRIGHT

Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!-44 pkcs8.htmlnu[ pkcs8

NAME

openssl-pkcs8, pkcs8 - PKCS#8 format private key conversion tool

SYNOPSIS

openssl pkcs8 [-help] [-topk8] [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-iter count] [-noiter] [-rand file...] [-writerand file] [-nocrypt] [-traditional] [-v2 alg] [-v2prf alg] [-v1 alg] [-engine id] [-scrypt] [-scrypt_N N] [-scrypt_r r] [-scrypt_p p]

DESCRIPTION

The pkcs8 command processes private keys in PKCS#8 format. It can handle both unencrypted PKCS#8 PrivateKeyInfo format and EncryptedPrivateKeyInfo format with a variety of PKCS#5 (v1.5 and v2.0) and PKCS#12 algorithms.

OPTIONS

-help

Print out a usage message.

-topk8

Normally a PKCS#8 private key is expected on input and a private key will be written to the output file. With the -topk8 option the situation is reversed: it reads a private key and writes a PKCS#8 format key.

-inform DER|PEM

This specifies the input format: see "KEY FORMATS" for more details. The default format is PEM.

-outform DER|PEM

This specifies the output format: see "KEY FORMATS" for more details. The default format is PEM.

-traditional

When this option is present and -topk8 is not a traditional format private key is written.

-in filename

This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for.

-passin arg

The input file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-out filename

This specifies the output filename to write a key to or standard output by default. If any encryption options are set then a pass phrase will be prompted for. The output filename should not be the same as the input filename.

-passout arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-iter count

When creating new PKCS#8 containers, use a given number of iterations on the password in deriving the encryption key for the PKCS#8 output. High values increase the time required to brute-force a PKCS#8 container.

-nocrypt

PKCS#8 keys generated or input are normally PKCS#8 EncryptedPrivateKeyInfo structures using an appropriate password based encryption algorithm. With this option an unencrypted PrivateKeyInfo structure is expected or output. This option does not encrypt private keys at all and should only be used when absolutely necessary. Certain software such as some versions of Java code signing software used unencrypted private keys.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-v2 alg

This option sets the PKCS#5 v2.0 algorithm.

The alg argument is the encryption algorithm to use, valid values include aes128, aes256 and des3. If this option isn't specified then aes256 is used.

-v2prf alg

This option sets the PRF algorithm to use with PKCS#5 v2.0. A typical value value would be hmacWithSHA256. If this option isn't set then the default for the cipher is used or hmacWithSHA256 if there is no default.

Some implementations may not support custom PRF algorithms and may require the hmacWithSHA1 option to work.

-v1 alg

This option indicates a PKCS#5 v1.5 or PKCS#12 algorithm should be used. Some older implementations may not support PKCS#5 v2.0 and may require this option. If not specified PKCS#5 v2.0 form is used.

-engine id

Specifying an engine (by its unique id string) will cause pkcs8 to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-scrypt

Uses the scrypt algorithm for private key encryption using default parameters: currently N=16384, r=8 and p=1 and AES in CBC mode with a 256 bit key. These parameters can be modified using the -scrypt_N, -scrypt_r, -scrypt_p and -v2 options.

-scrypt_N N -scrypt_r r -scrypt_p p

Sets the scrypt N, r or p parameters.

KEY FORMATS

Various different formats are used by the pkcs8 utility. These are detailed below.

If a key is being converted from PKCS#8 form (i.e. the -topk8 option is not used) then the input file must be in PKCS#8 format. An encrypted key is expected unless -nocrypt is included.

If -topk8 is not used and PEM mode is set the output file will be an unencrypted private key in PKCS#8 format. If the -traditional option is used then a traditional format private key is written instead.

If -topk8 is not used and DER mode is set the output file will be an unencrypted private key in traditional DER format.

If -topk8 is used then any supported private key can be used for the input file in a format specified by -inform. The output file will be encrypted PKCS#8 format using the specified encryption parameters unless -nocrypt is included.

NOTES

By default, when converting a key to PKCS#8 format, PKCS#5 v2.0 using 256 bit AES with HMAC and SHA256 is used.

Some older implementations do not support PKCS#5 v2.0 format and require the older PKCS#5 v1.5 form instead, possibly also requiring insecure weak encryption algorithms such as 56 bit DES.

The encrypted form of a PEM encode PKCS#8 files uses the following headers and footers:

 -----BEGIN ENCRYPTED PRIVATE KEY-----
 -----END ENCRYPTED PRIVATE KEY-----

The unencrypted form uses:

 -----BEGIN PRIVATE KEY-----
 -----END PRIVATE KEY-----

Private keys encrypted using PKCS#5 v2.0 algorithms and high iteration counts are more secure that those encrypted using the traditional SSLeay compatible formats. So if additional security is considered important the keys should be converted.

It is possible to write out DER encoded encrypted private keys in PKCS#8 format because the encryption details are included at an ASN1 level whereas the traditional format includes them at a PEM level.

PKCS#5 v1.5 and PKCS#12 algorithms.

Various algorithms can be used with the -v1 command line option, including PKCS#5 v1.5 and PKCS#12. These are described in more detail below.

PBE-MD2-DES PBE-MD5-DES

These algorithms were included in the original PKCS#5 v1.5 specification. They only offer 56 bits of protection since they both use DES.

PBE-SHA1-RC2-64, PBE-MD2-RC2-64, PBE-MD5-RC2-64, PBE-SHA1-DES

These algorithms are not mentioned in the original PKCS#5 v1.5 specification but they use the same key derivation algorithm and are supported by some software. They are mentioned in PKCS#5 v2.0. They use either 64 bit RC2 or 56 bit DES.

PBE-SHA1-RC4-128, PBE-SHA1-RC4-40, PBE-SHA1-3DES, PBE-SHA1-2DES, PBE-SHA1-RC2-128, PBE-SHA1-RC2-40

These algorithms use the PKCS#12 password based encryption algorithm and allow strong encryption algorithms like triple DES or 128 bit RC2 to be used.

EXAMPLES

Convert a private key to PKCS#8 format using default parameters (AES with 256 bit key and hmacWithSHA256):

 openssl pkcs8 -in key.pem -topk8 -out enckey.pem

Convert a private key to PKCS#8 unencrypted format:

 openssl pkcs8 -in key.pem -topk8 -nocrypt -out enckey.pem

Convert a private key to PKCS#5 v2.0 format using triple DES:

 openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem

Convert a private key to PKCS#5 v2.0 format using AES with 256 bits in CBC mode and hmacWithSHA512 PRF:

 openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 -out enckey.pem

Convert a private key to PKCS#8 using a PKCS#5 1.5 compatible algorithm (DES):

 openssl pkcs8 -in key.pem -topk8 -v1 PBE-MD5-DES -out enckey.pem

Convert a private key to PKCS#8 using a PKCS#12 compatible algorithm (3DES):

 openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES

Read a DER unencrypted PKCS#8 format private key:

 openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem

Convert a private key from any PKCS#8 encrypted format to traditional format:

 openssl pkcs8 -in pk8.pem -traditional -out key.pem

Convert a private key to PKCS#8 format, encrypting with AES-256 and with one million iterations of the password:

 openssl pkcs8 -in key.pem -topk8 -v2 aes-256-cbc -iter 1000000 -out pk8.pem

STANDARDS

Test vectors from this PKCS#5 v2.0 implementation were posted to the pkcs-tng mailing list using triple DES, DES and RC2 with high iteration counts, several people confirmed that they could decrypt the private keys produced and therefore, it can be assumed that the PKCS#5 v2.0 implementation is reasonably accurate at least as far as these algorithms are concerned.

The format of PKCS#8 DSA (and other) private keys is not well documented: it is hidden away in PKCS#11 v2.01, section 11.9. OpenSSL's default DSA PKCS#8 private key format complies with this standard.

BUGS

There should be an option that prints out the encryption algorithm in use and other details such as the iteration count.

SEE ALSO

dsa(1), rsa(1), genrsa(1), gendsa(1)

HISTORY

The -iter option was added in OpenSSL 1.1.0.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!8Y{{ genrsa.htmlnu[ genrsa

NAME

openssl-genrsa, genrsa - generate an RSA private key

SYNOPSIS

openssl genrsa [-help] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-f4] [-3] [-rand file...] [-writerand file] [-engine id] [-primes num] [numbits]

DESCRIPTION

The genrsa command generates an RSA private key.

OPTIONS

-help

Print out a usage message.

-out filename

Output the key to the specified file. If this argument is not specified then standard output is used.

-passout arg

The output file password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

These options encrypt the private key with specified cipher before outputting it. If none of these options is specified no encryption is used. If encryption is used a pass phrase is prompted for if it is not supplied via the -passout argument.

-F4|-3

The public exponent to use, either 65537 or 3. The default is 65537.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-engine id

Specifying an engine (by its unique id string) will cause genrsa to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-primes num

Specify the number of primes to use while generating the RSA key. The num parameter must be a positive integer that is greater than 1 and less than 16. If num is greater than 2, then the generated key is called a 'multi-prime' RSA key, which is defined in RFC 8017.

numbits

The size of the private key to generate in bits. This must be the last option specified. The default is 2048 and values less than 512 are not allowed.

NOTES

RSA private key generation essentially involves the generation of two or more prime numbers. When generating a private key various symbols will be output to indicate the progress of the generation. A . represents each number which has passed an initial sieve test, + means a number has passed a single round of the Miller-Rabin primality test, * means the current prime starts a regenerating progress due to some failed tests. A newline means that the number has passed all the prime tests (the actual number depends on the key size).

Because key generation is a random process the time taken to generate a key may vary somewhat. But in general, more primes lead to less generation time of a key.

SEE ALSO

gendsa(1)

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!DE speed.htmlnu[ speed

NAME

openssl-speed, speed - test library performance

SYNOPSIS

openssl speed [-help] [-engine id] [-elapsed] [-evp algo] [-decrypt] [-rand file...] [-writerand file] [-primes num] [-seconds num] [-bytes num] [algorithm...]

DESCRIPTION

This command is used to test the performance of cryptographic algorithms. To see the list of supported algorithms, use the list --digest-commands or list --cipher-commands command. The global CSPRNG is denoted by the rand algorithm name.

OPTIONS

-help

Print out a usage message.

-engine id

Specifying an engine (by its unique id string) will cause speed to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-elapsed

When calculating operations- or bytes-per-second, use wall-clock time instead of CPU user time as divisor. It can be useful when testing speed of hardware engines.

-evp algo

Use the specified cipher or message digest algorithm via the EVP interface. If algo is an AEAD cipher, then you can pass <-aead> to benchmark a TLS-like sequence. And if algo is a multi-buffer capable cipher, e.g. aes-128-cbc-hmac-sha1, then -mb will time multi-buffer operation.

-decrypt

Time the decryption instead of encryption. Affects only the EVP testing.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-primes num

Generate a num-prime RSA key and use it to run the benchmarks. This option is only effective if RSA algorithm is specified to test.

-seconds num

Run benchmarks for num seconds.

-bytes num

Run benchmarks on num-byte buffers. Affects ciphers, digests and the CSPRNG.

[zero or more test algorithms]

If any options are given, speed tests those algorithms, otherwise a pre-compiled grand selection is tested.

COPYRIGHT

Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!؅}} s_client.htmlnu[ s_client

NAME

openssl-s_client, s_client - SSL/TLS client program

SYNOPSIS

openssl s_client [-help] [-connect host:port] [-bind host:port] [-proxy host:port] [-unix path] [-4] [-6] [-servername name] [-noservername] [-verify depth] [-verify_return_error] [-cert filename] [-certform DER|PEM] [-key filename] [-keyform DER|PEM] [-cert_chain filename] [-build_chain] [-xkey] [-xcert] [-xchain] [-xchain_build] [-xcertform PEM|DER] [-xkeyform PEM|DER] [-pass arg] [-CApath directory] [-CAfile filename] [-chainCApath directory] [-chainCAfile filename] [-no-CAfile] [-no-CApath] [-requestCAfile filename] [-dane_tlsa_domain domain] [-dane_tlsa_rrdata rrdata] [-dane_ee_no_namechecks] [-attime timestamp] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-no_check_time] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-nameopt option] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-build_chain] [-x509_strict] [-reconnect] [-showcerts] [-debug] [-msg] [-nbio_test] [-state] [-nbio] [-crlf] [-ign_eof] [-no_ign_eof] [-psk_identity identity] [-psk key] [-psk_session file] [-quiet] [-ssl3] [-tls1] [-tls1_1] [-tls1_2] [-tls1_3] [-no_ssl3] [-no_tls1] [-no_tls1_1] [-no_tls1_2] [-no_tls1_3] [-dtls] [-dtls1] [-dtls1_2] [-sctp] [-sctp_label_bug] [-fallback_scsv] [-async] [-max_send_frag] [-split_send_frag] [-max_pipelines] [-read_buf] [-bugs] [-comp] [-no_comp] [-allow_no_dhe_kex] [-sigalgs sigalglist] [-curves curvelist] [-cipher cipherlist] [-ciphersuites val] [-serverpref] [-starttls protocol] [-xmpphost hostname] [-name hostname] [-engine id] [-tlsextdebug] [-no_ticket] [-sess_out filename] [-sess_in filename] [-rand file...] [-writerand file] [-serverinfo types] [-status] [-alpn protocols] [-nextprotoneg protocols] [-ct] [-noct] [-ctlogfile] [-keylogfile file] [-early_data file] [-enable_pha] [target]

DESCRIPTION

The s_client command implements a generic SSL/TLS client which connects to a remote host using SSL/TLS. It is a very useful diagnostic tool for SSL servers.

OPTIONS

In addition to the options below the s_client utility also supports the common and client only options documented in the "Supported Command Line Commands" section of the SSL_CONF_cmd(3) manual page.

-help

Print out a usage message.

-connect host:port

This specifies the host and optional port to connect to. It is possible to select the host and port using the optional target positional argument instead. If neither this nor the target positional argument are specified then an attempt is made to connect to the local host on port 4433.

-bind host:port]

This specifies the host address and or port to bind as the source for the connection. For Unix-domain sockets the port is ignored and the host is used as the source socket address.

-proxy host:port

When used with the -connect flag, the program uses the host and port specified with this flag and issues an HTTP CONNECT command to connect to the desired server.

-unix path

Connect over the specified Unix-domain socket.

-4

Use IPv4 only.

-6

Use IPv6 only.

-servername name

Set the TLS SNI (Server Name Indication) extension in the ClientHello message to the given value. If -servername is not provided, the TLS SNI extension will be populated with the name given to -connect if it follows a DNS name format. If -connect is not provided either, the SNI is set to "localhost". This is the default since OpenSSL 1.1.1.

Even though SNI should normally be a DNS name and not an IP address, if -servername is provided then that name will be sent, regardless of whether it is a DNS name or not.

This option cannot be used in conjunction with -noservername.

-noservername

Suppresses sending of the SNI (Server Name Indication) extension in the ClientHello message. Cannot be used in conjunction with the -servername or <-dane_tlsa_domain> options.

-cert certname

The certificate to use, if one is requested by the server. The default is not to use a certificate.

-certform format

The certificate format to use: DER or PEM. PEM is the default.

-key keyfile

The private key to use. If not specified then the certificate file will be used.

-keyform format

The private format to use: DER or PEM. PEM is the default.

-cert_chain

A file containing trusted certificates to use when attempting to build the client/server certificate chain related to the certificate specified via the -cert option.

-build_chain

Specify whether the application should build the certificate chain to be provided to the server.

-xkey infile, -xcert infile, -xchain

Specify an extra certificate, private key and certificate chain. These behave in the same manner as the -cert, -key and -cert_chain options. When specified, the callback returning the first valid chain will be in use by the client.

-xchain_build

Specify whether the application should build the certificate chain to be provided to the server for the extra certificates provided via -xkey infile, -xcert infile, -xchain options.

-xcertform PEM|DER, -xkeyform PEM|DER

Extra certificate and private key format respectively.

-pass arg

the private key password source. For more information about the format of arg see "Pass Phrase Options" in openssl(1).

-verify depth

The verify depth to use. This specifies the maximum length of the server certificate chain and turns on server certificate verification. Currently the verify operation continues after errors so all the problems with a certificate chain can be seen. As a side effect the connection will never fail due to a server certificate verify failure.

-verify_return_error

Return verification errors instead of continuing. This will typically abort the handshake with a fatal error.

-nameopt option

Option which determines how the subject or issuer names are displayed. The option argument can be a single option or multiple options separated by commas. Alternatively the -nameopt switch may be used more than once to set multiple options. See the x509(1) manual page for details.

-CApath directory

The directory to use for server certificate verification. This directory must be in "hash format", see verify(1) for more information. These are also used when building the client certificate chain.

-CAfile file

A file containing trusted certificates to use during server authentication and to use when attempting to build the client certificate chain.

-chainCApath directory

The directory to use for building the chain provided to the server. This directory must be in "hash format", see verify(1) for more information.

-chainCAfile file

A file containing trusted certificates to use when attempting to build the client certificate chain.

-no-CAfile

Do not load the trusted CA certificates from the default file location

-no-CApath

Do not load the trusted CA certificates from the default directory location

-requestCAfile file

A file containing a list of certificates whose subject names will be sent to the server in the certificate_authorities extension. Only supported for TLS 1.3

-dane_tlsa_domain domain

Enable RFC6698/RFC7671 DANE TLSA authentication and specify the TLSA base domain which becomes the default SNI hint and the primary reference identifier for hostname checks. This must be used in combination with at least one instance of the -dane_tlsa_rrdata option below.

When DANE authentication succeeds, the diagnostic output will include the lowest (closest to 0) depth at which a TLSA record authenticated a chain certificate. When that TLSA record is a "2 1 0" trust anchor public key that signed (rather than matched) the top-most certificate of the chain, the result is reported as "TA public key verified". Otherwise, either the TLSA record "matched TA certificate" at a positive depth or else "matched EE certificate" at depth 0.

-dane_tlsa_rrdata rrdata

Use one or more times to specify the RRDATA fields of the DANE TLSA RRset associated with the target service. The rrdata value is specified in "presentation form", that is four whitespace separated fields that specify the usage, selector, matching type and associated data, with the last of these encoded in hexadecimal. Optional whitespace is ignored in the associated data field. For example:

  $ openssl s_client -brief -starttls smtp \
    -connect smtp.example.com:25 \
    -dane_tlsa_domain smtp.example.com \
    -dane_tlsa_rrdata "2 1 1
      B111DD8A1C2091A89BD4FD60C57F0716CCE50FEEFF8137CDBEE0326E 02CF362B" \
    -dane_tlsa_rrdata "2 1 1
      60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517 616E8A18"
  ...
  Verification: OK
  Verified peername: smtp.example.com
  DANE TLSA 2 1 1 ...ee12d2cc90180517616e8a18 matched TA certificate at depth 1
  ...
-dane_ee_no_namechecks

This disables server name checks when authenticating via DANE-EE(3) TLSA records. For some applications, primarily web browsers, it is not safe to disable name checks due to "unknown key share" attacks, in which a malicious server can convince a client that a connection to a victim server is instead a secure connection to the malicious server. The malicious server may then be able to violate cross-origin scripting restrictions. Thus, despite the text of RFC7671, name checks are by default enabled for DANE-EE(3) TLSA records, and can be disabled in applications where it is safe to do so. In particular, SMTP and XMPP clients should set this option as SRV and MX records already make it possible for a remote domain to redirect client connections to any server of its choice, and in any case SMTP and XMPP clients do not execute scripts downloaded from remote servers.

-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict

Set various certificate chain validation options. See the verify(1) manual page for details.

-reconnect

Reconnects to the same server 5 times using the same session ID, this can be used as a test that session caching is working.

-showcerts

Displays the server certificate list as sent by the server: it only consists of certificates the server has sent (in the order the server has sent them). It is not a verified chain.

-prexit

Print session information when the program exits. This will always attempt to print out information even if the connection fails. Normally information will only be printed out once if the connection succeeds. This option is useful because the cipher in use may be renegotiated or the connection may fail because a client certificate is required or is requested only after an attempt is made to access a certain URL. Note: the output produced by this option is not always accurate because a connection might never have been established.

-state

Prints out the SSL session states.

-debug

Print extensive debugging information including a hex dump of all traffic.

-msg

Show all protocol messages with hex dump.

-trace

Show verbose trace output of protocol messages. OpenSSL needs to be compiled with enable-ssl-trace for this option to work.

-msgfile

File to send output of -msg or -trace to, default standard output.

-nbio_test

Tests nonblocking I/O

-nbio

Turns on nonblocking I/O

-crlf

This option translated a line feed from the terminal into CR+LF as required by some servers.

-ign_eof

Inhibit shutting down the connection when end of file is reached in the input.

-quiet

Inhibit printing of session and certificate information. This implicitly turns on -ign_eof as well.

-no_ign_eof

Shut down the connection when end of file is reached in the input. Can be used to override the implicit -ign_eof after -quiet.

-psk_identity identity

Use the PSK identity identity when using a PSK cipher suite. The default value is "Client_identity" (without the quotes).

-psk key

Use the PSK key key when using a PSK cipher suite. The key is given as a hexadecimal number without leading 0x, for example -psk 1a2b3c4d. This option must be provided in order to use a PSK cipher.

-psk_session file

Use the pem encoded SSL_SESSION data stored in file as the basis of a PSK. Note that this will only work if TLSv1.3 is negotiated.

-ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3

These options require or disable the use of the specified SSL or TLS protocols. By default s_client will negotiate the highest mutually supported protocol version. When a specific TLS version is required, only that version will be offered to and accepted from the server. Note that not all protocols and flags may be available, depending on how OpenSSL was built.

-dtls, -dtls1, -dtls1_2

These options make s_client use DTLS protocols instead of TLS. With -dtls, s_client will negotiate any supported DTLS protocol version, whilst -dtls1 and -dtls1_2 will only support DTLS1.0 and DTLS1.2 respectively.

-sctp

Use SCTP for the transport protocol instead of UDP in DTLS. Must be used in conjunction with -dtls, -dtls1 or -dtls1_2. This option is only available where OpenSSL has support for SCTP enabled.

-sctp_label_bug

Use the incorrect behaviour of older OpenSSL implementations when computing endpoint-pair shared secrets for DTLS/SCTP. This allows communication with older broken implementations but breaks interoperability with correct implementations. Must be used in conjunction with -sctp. This option is only available where OpenSSL has support for SCTP enabled.

-fallback_scsv

Send TLS_FALLBACK_SCSV in the ClientHello.

-async

Switch on asynchronous mode. Cryptographic operations will be performed asynchronously. This will only have an effect if an asynchronous capable engine is also used via the -engine option. For test purposes the dummy async engine (dasync) can be used (if available).

-max_send_frag int

The maximum size of data fragment to send. See SSL_CTX_set_max_send_fragment(3) for further information.

-split_send_frag int

The size used to split data for encrypt pipelines. If more data is written in one go than this value then it will be split into multiple pipelines, up to the maximum number of pipelines defined by max_pipelines. This only has an effect if a suitable cipher suite has been negotiated, an engine that supports pipelining has been loaded, and max_pipelines is greater than 1. See SSL_CTX_set_split_send_fragment(3) for further information.

-max_pipelines int

The maximum number of encrypt/decrypt pipelines to be used. This will only have an effect if an engine has been loaded that supports pipelining (e.g. the dasync engine) and a suitable cipher suite has been negotiated. The default value is 1. See SSL_CTX_set_max_pipelines(3) for further information.

-read_buf int

The default read buffer size to be used for connections. This will only have an effect if the buffer size is larger than the size that would otherwise be used and pipelining is in use (see SSL_CTX_set_default_read_buffer_len(3) for further information).

-bugs

There are several known bugs in SSL and TLS implementations. Adding this option enables various workarounds.

-comp

Enables support for SSL/TLS compression. This option was introduced in OpenSSL 1.1.0. TLS compression is not recommended and is off by default as of OpenSSL 1.1.0.

-no_comp

Disables support for SSL/TLS compression. TLS compression is not recommended and is off by default as of OpenSSL 1.1.0.

-brief

Only provide a brief summary of connection parameters instead of the normal verbose output.

-sigalgs sigalglist

Specifies the list of signature algorithms that are sent by the client. The server selects one entry in the list based on its preferences. For example strings, see SSL_CTX_set1_sigalgs(3)

-curves curvelist

Specifies the list of supported curves to be sent by the client. The curve is ultimately selected by the server. For a list of all curves, use:

    $ openssl ecparam -list_curves
-cipher cipherlist

This allows the TLSv1.2 and below cipher list sent by the client to be modified. This list will be combined with any TLSv1.3 ciphersuites that have been configured. Although the server determines which ciphersuite is used it should take the first supported cipher in the list sent by the client. See the ciphers command for more information.

-ciphersuites val

This allows the TLSv1.3 ciphersuites sent by the client to be modified. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See the ciphers command for more information. The format for this list is a simple colon (":") separated list of TLSv1.3 ciphersuite names.

-starttls protocol

Send the protocol-specific message(s) to switch to TLS for communication. protocol is a keyword for the intended protocol. Currently, the only supported keywords are "smtp", "pop3", "imap", "ftp", "xmpp", "xmpp-server", "irc", "postgres", "mysql", "lmtp", "nntp", "sieve" and "ldap".

-xmpphost hostname

This option, when used with "-starttls xmpp" or "-starttls xmpp-server", specifies the host for the "to" attribute of the stream element. If this option is not specified, then the host specified with "-connect" will be used.

This option is an alias of the -name option for "xmpp" and "xmpp-server".

-name hostname

This option is used to specify hostname information for various protocols used with -starttls option. Currently only "xmpp", "xmpp-server", "smtp" and "lmtp" can utilize this -name option.

If this option is used with "-starttls xmpp" or "-starttls xmpp-server", if specifies the host for the "to" attribute of the stream element. If this option is not specified, then the host specified with "-connect" will be used.

If this option is used with "-starttls lmtp" or "-starttls smtp", it specifies the name to use in the "LMTP LHLO" or "SMTP EHLO" message, respectively. If this option is not specified, then "mail.example.com" will be used.

-tlsextdebug

Print out a hex dump of any TLS extensions received from the server.

-no_ticket

Disable RFC4507bis session ticket support.

-sess_out filename

Output SSL session to filename.

-sess_in sess.pem

Load SSL session from filename. The client will attempt to resume a connection from this session.

-engine id

Specifying an engine (by its unique id string) will cause s_client to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.

-rand file...

A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is ; for MS-Windows, , for OpenVMS, and : for all others.

[-writerand file]

Writes random data to the specified file upon exit. This can be used with a subsequent -rand flag.

-serverinfo types

A list of comma-separated TLS Extension Types (numbers between 0 and 65535). Each type will be sent as an empty ClientHello TLS Extension. The server's response (if any) will be encoded and displayed as a PEM file.

-status

Sends a certificate status request to the server (OCSP stapling). The server response (if any) is printed out.

-alpn protocols, -nextprotoneg protocols

These flags enable the Enable the Application-Layer Protocol Negotiation or Next Protocol Negotiation (NPN) extension, respectively. ALPN is the IETF standard and replaces NPN. The protocols list is a comma-separated list of protocol names that the client should advertise support for. The list should contain the most desirable protocols first. Protocol names are printable ASCII strings, for example "http/1.1" or "spdy/3". An empty list of protocols is treated specially and will cause the client to advertise support for the TLS extension but disconnect just after receiving ServerHello with a list of server supported protocols. The flag -nextprotoneg cannot be specified if -tls1_3 is used.

-ct, -noct

Use one of these two options to control whether Certificate Transparency (CT) is enabled (-ct) or disabled (-noct). If CT is enabled, signed certificate timestamps (SCTs) will be requested from the server and reported at handshake completion.

Enabling CT also enables OCSP stapling, as this is one possible delivery method for SCTs.

-ctlogfile

A file containing a list of known Certificate Transparency logs. See SSL_CTX_set_ctlog_list_file(3) for the expected file format.

-keylogfile file

Appends TLS secrets to the specified keylog file such that external programs (like Wireshark) can decrypt TLS connections.

-early_data file

Reads the contents of the specified file and attempts to send it as early data to the server. This will only work with resumed sessions that support early data and when the server accepts the early data.

-enable_pha

For TLSv1.3 only, send the Post-Handshake Authentication extension. This will happen whether or not a certificate has been provided via -cert.

[target]

Rather than providing -connect, the target hostname and optional port may be provided as a single positional argument after all options. If neither this nor -connect are provided, falls back to attempting to connect to localhost on port 4433.

CONNECTED COMMANDS

If a connection is established with an SSL server then any data received from the server is displayed and any key presses will be sent to the server. If end of file is reached then the connection will be closed down. When used interactively (which means neither -quiet nor -ign_eof have been given), then certain commands are also recognized which perform special operations. These commands are a letter which must appear at the start of a line. They are listed below.

Q

End the current SSL connection and exit.

R

Renegotiate the SSL session (TLSv1.2 and below only).

B

Send a heartbeat message to the server (DTLS only)

k

Send a key update message to the server (TLSv1.3 only)

K

Send a key update message to the server and request one back (TLSv1.3 only)

NOTES

s_client can be used to debug SSL servers. To connect to an SSL HTTP server the command:

 openssl s_client -connect servername:443

would typically be used (https uses port 443). If the connection succeeds then an HTTP command can be given such as "GET /" to retrieve a web page.

If the handshake fails then there are several possible causes, if it is nothing obvious like no client certificate then the -bugs, -ssl3, -tls1, -no_ssl3, -no_tls1 options can be tried in case it is a buggy server. In particular you should play with these options before submitting a bug report to an OpenSSL mailing list.

A frequent problem when attempting to get client certificates working is that a web client complains it has no certificates or gives an empty list to choose from. This is normally because the server is not sending the clients certificate authority in its "acceptable CA list" when it requests a certificate. By using s_client the CA list can be viewed and checked. However, some servers only request client authentication after a specific URL is requested. To obtain the list in this case it is necessary to use the -prexit option and send an HTTP request for an appropriate page.

If a certificate is specified on the command line using the -cert option it will not be used unless the server specifically requests a client certificate. Therefore, merely including a client certificate on the command line is no guarantee that the certificate works.

If there are problems verifying a server certificate then the -showcerts option can be used to show all the certificates sent by the server.

The s_client utility is a test tool and is designed to continue the handshake after any certificate verification errors. As a result it will accept any certificate chain (trusted or not) sent by the peer. Non-test applications should not do this as it makes them vulnerable to a MITM attack. This behaviour can be changed by with the -verify_return_error option: any verify errors are then returned aborting the handshake.

The -bind option may be useful if the server or a firewall requires connections to come from some particular address and or port.

BUGS

Because this program has a lot of options and also because some of the techniques used are rather old, the C source of s_client is rather hard to read and not a model of how things should be done. A typical SSL client program would be much simpler.

The -prexit option is a bit of a hack. We should really report information whenever a session is renegotiated.

SEE ALSO

SSL_CONF_cmd(3), sess_id(1), s_server(1), ciphers(1), SSL_CTX_set_max_send_fragment(3), SSL_CTX_set_split_send_fragment(3), SSL_CTX_set_max_pipelines(3)

HISTORY

The -no_alt_chains option was added in OpenSSL 1.1.0. The -name option was added in OpenSSL 1.1.1.

COPYRIGHT

Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.

PK!,n''dsa.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DSA 1" .TH DSA 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-dsa, dsa \- DSA key processing .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBdsa\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-aes128\fR] [\fB\-aes192\fR] [\fB\-aes256\fR] [\fB\-aria128\fR] [\fB\-aria192\fR] [\fB\-aria256\fR] [\fB\-camellia128\fR] [\fB\-camellia192\fR] [\fB\-camellia256\fR] [\fB\-des\fR] [\fB\-des3\fR] [\fB\-idea\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-modulus\fR] [\fB\-pubin\fR] [\fB\-pubout\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBdsa\fR command processes \s-1DSA\s0 keys. They can be converted between various forms and their components printed out. \fBNote\fR This command uses the traditional SSLeay compatible format for private key encryption: newer applications should use the more secure PKCS#8 format using the \fBpkcs8\fR .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option with a private key uses an \s-1ASN1 DER\s0 encoded form of an \s-1ASN.1 SEQUENCE\s0 consisting of the values of version (currently zero), p, q, g, the public and private key components respectively as \s-1ASN.1\s0 INTEGERs. When used with a public key it uses a SubjectPublicKeyInfo structure: it is an error if the key is not \s-1DSA.\s0 .Sp The \fB\s-1PEM\s0\fR form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. In the case of a private key PKCS#8 format is also accepted. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write a key to or standard output by is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-aes128\fR, \fB\-aes192\fR, \fB\-aes256\fR, \fB\-aria128\fR, \fB\-aria192\fR, \fB\-aria256\fR, \fB\-camellia128\fR, \fB\-camellia192\fR, \fB\-camellia256\fR, \fB\-des\fR, \fB\-des3\fR, \fB\-idea\fR" 4 .IX Item "-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea" These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the \fBdsa\fR utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with \s-1PEM\s0 format output files. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the public, private key components and parameters. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the key. .IP "\fB\-modulus\fR" 4 .IX Item "-modulus" This option prints out the value of the public key component of the key. .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" By default, a private key is read from the input file. With this option a public key is read instead. .IP "\fB\-pubout\fR" 4 .IX Item "-pubout" By default, a private key is output. With this option a public key will be output instead. This option is automatically set if the input is a public key. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBdsa\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 private key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN DSA PRIVATE KEY\-\-\-\-\- \& \-\-\-\-\-END DSA PRIVATE KEY\-\-\-\-\- .Ve .PP The \s-1PEM\s0 public key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\- \& \-\-\-\-\-END PUBLIC KEY\-\-\-\-\- .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" To remove the pass phrase on a \s-1DSA\s0 private key: .PP .Vb 1 \& openssl dsa \-in key.pem \-out keyout.pem .Ve .PP To encrypt a private key using triple \s-1DES:\s0 .PP .Vb 1 \& openssl dsa \-in key.pem \-des3 \-out keyout.pem .Ve .PP To convert a private key from \s-1PEM\s0 to \s-1DER\s0 format: .PP .Vb 1 \& openssl dsa \-in key.pem \-outform DER \-out keyout.der .Ve .PP To print out the components of a private key to standard output: .PP .Vb 1 \& openssl dsa \-in key.pem \-text \-noout .Ve .PP To just output the public part of a private key: .PP .Vb 1 \& openssl dsa \-in key.pem \-pubout \-out pubkey.pem .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdsaparam\fR\|(1), \fBgendsa\fR\|(1), \fBrsa\fR\|(1), \&\fBgenrsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!Ff$f$ dhparam.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DHPARAM 1" .TH DHPARAM 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-dhparam, dhparam \- DH parameter manipulation and generation .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl dhparam\fR [\fB\-help\fR] [\fB\-inform DER|PEM\fR] [\fB\-outform DER|PEM\fR] [\fB\-in\fR \fIfilename\fR] [\fB\-out\fR \fIfilename\fR] [\fB\-dsaparam\fR] [\fB\-check\fR] [\fB\-noout\fR] [\fB\-text\fR] [\fB\-C\fR] [\fB\-2\fR] [\fB\-5\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] [\fInumbits\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to manipulate \s-1DH\s0 parameter files. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN1 DER\s0 encoded form compatible with the PKCS#3 DHparameter structure. The \s-1PEM\s0 form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in\fR \fIfilename\fR" 4 .IX Item "-in filename" This specifies the input filename to read parameters from or standard input if this option is not specified. .IP "\fB\-out\fR \fIfilename\fR" 4 .IX Item "-out filename" This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-dsaparam\fR" 4 .IX Item "-dsaparam" If this option is used, \s-1DSA\s0 rather than \s-1DH\s0 parameters are read or created; they are converted to \s-1DH\s0 format. Otherwise, \*(L"strong\*(R" primes (such that (p\-1)/2 is also prime) will be used for \s-1DH\s0 parameter generation. .Sp \&\s-1DH\s0 parameter generation with the \fB\-dsaparam\fR option is much faster, and the recommended exponent length is shorter, which makes \s-1DH\s0 key exchange more efficient. Beware that with such DSA-style \s-1DH\s0 parameters, a fresh \s-1DH\s0 key should be created for each use to avoid small-subgroup attacks that may be possible otherwise. .IP "\fB\-check\fR" 4 .IX Item "-check" Performs numerous checks to see if the supplied parameters are valid and displays a warning if not. .IP "\fB\-2\fR, \fB\-5\fR" 4 .IX Item "-2, -5" The generator to use, either 2 or 5. If present then the input file is ignored and parameters are generated instead. If not present but \fBnumbits\fR is present, parameters are generated with the default generator 2. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fInumbits\fR" 4 .IX Item "numbits" This option specifies that a parameter set should be generated of size \&\fInumbits\fR. It must be the last option. If this option is present then the input file is ignored and parameters are generated instead. If this option is not present but a generator (\fB\-2\fR or \fB\-5\fR) is present, parameters are generated with a default length of 2048 bits. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option inhibits the output of the encoded version of the parameters. .IP "\fB\-text\fR" 4 .IX Item "-text" This option prints out the \s-1DH\s0 parameters in human readable form. .IP "\fB\-C\fR" 4 .IX Item "-C" This option converts the parameters into C code. The parameters can then be loaded by calling the \fBget_dhNNNN()\fR function. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBdhparam\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "WARNINGS" .IX Header "WARNINGS" The program \fBdhparam\fR combines the functionality of the programs \fBdh\fR and \&\fBgendh\fR in previous versions of OpenSSL. The \fBdh\fR and \fBgendh\fR programs are retained for now but may have different purposes in future versions of OpenSSL. .SH "NOTES" .IX Header "NOTES" \&\s-1PEM\s0 format \s-1DH\s0 parameters use the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN DH PARAMETERS\-\-\-\-\- \& \-\-\-\-\-END DH PARAMETERS\-\-\-\-\- .Ve .PP OpenSSL currently only supports the older PKCS#3 \s-1DH,\s0 not the newer X9.42 \&\s-1DH.\s0 .PP This program manipulates \s-1DH\s0 parameters not keys. .SH "BUGS" .IX Header "BUGS" There should be a way to generate and manipulate \s-1DH\s0 keys. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdsaparam\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!(&errstr.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ERRSTR 1" .TH ERRSTR 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-errstr, errstr \- lookup error codes .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl errstr error_code\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" Sometimes an application will not load error message and only numerical forms will be available. The \fBerrstr\fR utility can be used to display the meaning of the hex code. The hex code is the hex digits after the second colon. .SH "OPTIONS" .IX Header "OPTIONS" None. .SH "EXAMPLES" .IX Header "EXAMPLES" The error code: .PP .Vb 1 \& 27594:error:2006D080:lib(32):func(109):reason(128):bss_file.c:107: .Ve .PP can be displayed with: .PP .Vb 1 \& openssl errstr 2006D080 .Ve .PP to produce the error message: .PP .Vb 1 \& error:2006D080:BIO routines:BIO_new_file:no such file .Ve .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2004\-2019 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!MX^X^ocsp.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "OCSP 1" .TH OCSP 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ocsp, ocsp \- Online Certificate Status Protocol utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBocsp\fR [\fB\-help\fR] [\fB\-out file\fR] [\fB\-issuer file\fR] [\fB\-cert file\fR] [\fB\-serial n\fR] [\fB\-signer file\fR] [\fB\-signkey file\fR] [\fB\-sign_other file\fR] [\fB\-no_certs\fR] [\fB\-req_text\fR] [\fB\-resp_text\fR] [\fB\-text\fR] [\fB\-reqout file\fR] [\fB\-respout file\fR] [\fB\-reqin file\fR] [\fB\-respin file\fR] [\fB\-nonce\fR] [\fB\-no_nonce\fR] [\fB\-url \s-1URL\s0\fR] [\fB\-host host:port\fR] [\fB\-multi process-count\fR] [\fB\-header\fR] [\fB\-path\fR] [\fB\-CApath dir\fR] [\fB\-CAfile file\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-attime timestamp\fR] [\fB\-check_ss_sig\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-explicit_policy\fR] [\fB\-extended_crl\fR] [\fB\-ignore_critical\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-no_check_time\fR] [\fB\-partial_chain\fR] [\fB\-policy arg\fR] [\fB\-policy_check\fR] [\fB\-policy_print\fR] [\fB\-purpose purpose\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_192\fR] [\fB\-trusted_first\fR] [\fB\-no_alt_chains\fR] [\fB\-use_deltas\fR] [\fB\-auth_level num\fR] [\fB\-verify_depth num\fR] [\fB\-verify_email email\fR] [\fB\-verify_hostname hostname\fR] [\fB\-verify_ip ip\fR] [\fB\-verify_name name\fR] [\fB\-x509_strict\fR] [\fB\-VAfile file\fR] [\fB\-validity_period n\fR] [\fB\-status_age n\fR] [\fB\-noverify\fR] [\fB\-verify_other file\fR] [\fB\-trust_other\fR] [\fB\-no_intern\fR] [\fB\-no_signature_verify\fR] [\fB\-no_cert_verify\fR] [\fB\-no_chain\fR] [\fB\-no_cert_checks\fR] [\fB\-no_explicit\fR] [\fB\-port num\fR] [\fB\-ignore_err\fR] [\fB\-index file\fR] [\fB\-CA file\fR] [\fB\-rsigner file\fR] [\fB\-rkey file\fR] [\fB\-rother file\fR] [\fB\-rsigopt nm:v\fR] [\fB\-resp_no_certs\fR] [\fB\-nmin n\fR] [\fB\-ndays n\fR] [\fB\-resp_key_id\fR] [\fB\-nrequest n\fR] [\fB\-\f(BIdigest\fB\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The Online Certificate Status Protocol (\s-1OCSP\s0) enables applications to determine the (revocation) state of an identified certificate (\s-1RFC 2560\s0). .PP The \fBocsp\fR command performs many common \s-1OCSP\s0 tasks. It can be used to print out requests and responses, create requests and send queries to an \s-1OCSP\s0 responder and behave like a mini \s-1OCSP\s0 server itself. .SH "OPTIONS" .IX Header "OPTIONS" This command operates as either a client or a server. The options are described below, divided into those two modes. .SS "\s-1OCSP\s0 Client Options" .IX Subsection "OCSP Client Options" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" specify output filename, default is standard output. .IP "\fB\-issuer filename\fR" 4 .IX Item "-issuer filename" This specifies the current issuer certificate. This option can be used multiple times. The certificate specified in \fBfilename\fR must be in \&\s-1PEM\s0 format. This option \fB\s-1MUST\s0\fR come before any \fB\-cert\fR options. .IP "\fB\-cert filename\fR" 4 .IX Item "-cert filename" Add the certificate \fBfilename\fR to the request. The issuer certificate is taken from the previous \fBissuer\fR option, or an error occurs if no issuer certificate is specified. .IP "\fB\-serial num\fR" 4 .IX Item "-serial num" Same as the \fBcert\fR option except the certificate with serial number \&\fBnum\fR is added to the request. The serial number is interpreted as a decimal integer unless preceded by \fB0x\fR. Negative integers can also be specified by preceding the value by a \fB\-\fR sign. .IP "\fB\-signer filename\fR, \fB\-signkey filename\fR" 4 .IX Item "-signer filename, -signkey filename" Sign the \s-1OCSP\s0 request using the certificate specified in the \fBsigner\fR option and the private key specified by the \fBsignkey\fR option. If the \fBsignkey\fR option is not present then the private key is read from the same file as the certificate. If neither option is specified then the \s-1OCSP\s0 request is not signed. .IP "\fB\-sign_other filename\fR" 4 .IX Item "-sign_other filename" Additional certificates to include in the signed request. .IP "\fB\-nonce\fR, \fB\-no_nonce\fR" 4 .IX Item "-nonce, -no_nonce" Add an \s-1OCSP\s0 nonce extension to a request or disable \s-1OCSP\s0 nonce addition. Normally if an \s-1OCSP\s0 request is input using the \fBreqin\fR option no nonce is added: using the \fBnonce\fR option will force addition of a nonce. If an \s-1OCSP\s0 request is being created (using \fBcert\fR and \fBserial\fR options) a nonce is automatically added specifying \fBno_nonce\fR overrides this. .IP "\fB\-req_text\fR, \fB\-resp_text\fR, \fB\-text\fR" 4 .IX Item "-req_text, -resp_text, -text" Print out the text form of the \s-1OCSP\s0 request, response or both respectively. .IP "\fB\-reqout file\fR, \fB\-respout file\fR" 4 .IX Item "-reqout file, -respout file" Write out the \s-1DER\s0 encoded certificate request or response to \fBfile\fR. .IP "\fB\-reqin file\fR, \fB\-respin file\fR" 4 .IX Item "-reqin file, -respin file" Read \s-1OCSP\s0 request or response file from \fBfile\fR. These option are ignored if \s-1OCSP\s0 request or response creation is implied by other options (for example with \fBserial\fR, \fBcert\fR and \fBhost\fR options). .IP "\fB\-url responder_url\fR" 4 .IX Item "-url responder_url" Specify the responder \s-1URL.\s0 Both \s-1HTTP\s0 and \s-1HTTPS\s0 (\s-1SSL/TLS\s0) URLs can be specified. .IP "\fB\-host hostname:port\fR, \fB\-path pathname\fR" 4 .IX Item "-host hostname:port, -path pathname" If the \fBhost\fR option is present then the \s-1OCSP\s0 request is sent to the host \&\fBhostname\fR on port \fBport\fR. \fBpath\fR specifies the \s-1HTTP\s0 pathname to use or \*(L"/\*(R" by default. This is equivalent to specifying \fB\-url\fR with scheme http:// and the given hostname, port, and pathname. .IP "\fB\-header name=value\fR" 4 .IX Item "-header name=value" Adds the header \fBname\fR with the specified \fBvalue\fR to the \s-1OCSP\s0 request that is sent to the responder. This may be repeated. .IP "\fB\-timeout seconds\fR" 4 .IX Item "-timeout seconds" Connection timeout to the \s-1OCSP\s0 responder in seconds. On \s-1POSIX\s0 systems, when running as an \s-1OCSP\s0 responder, this option also limits the time that the responder is willing to wait for the client request. This time is measured from the time the responder accepts the connection until the complete request is received. .IP "\fB\-multi process-count\fR" 4 .IX Item "-multi process-count" Run the specified number of \s-1OCSP\s0 responder child processes, with the parent process respawning child processes as needed. Child processes will detect changes in the \s-1CA\s0 index file and automatically reload it. When running as a responder \fB\-timeout\fR option is recommended to limit the time each child is willing to wait for the client's \s-1OCSP\s0 response. This option is available on \s-1POSIX\s0 systems (that support the \fBfork()\fR and other required unix system-calls). .IP "\fB\-CAfile file\fR, \fB\-CApath pathname\fR" 4 .IX Item "-CAfile file, -CApath pathname" File or pathname containing trusted \s-1CA\s0 certificates. These are used to verify the signature on the \s-1OCSP\s0 response. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location .IP "\fB\-attime\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-no_check_time\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR" 4 .IX Item "-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict" Set different certificate verification options. See \fBverify\fR\|(1) manual page for details. .IP "\fB\-verify_other file\fR" 4 .IX Item "-verify_other file" File containing additional certificates to search when attempting to locate the \s-1OCSP\s0 response signing certificate. Some responders omit the actual signer's certificate from the response: this option can be used to supply the necessary certificate in such cases. .IP "\fB\-trust_other\fR" 4 .IX Item "-trust_other" The certificates specified by the \fB\-verify_other\fR option should be explicitly trusted and no additional checks will be performed on them. This is useful when the complete responder certificate chain is not available or trusting a root \s-1CA\s0 is not appropriate. .IP "\fB\-VAfile file\fR" 4 .IX Item "-VAfile file" File containing explicitly trusted responder certificates. Equivalent to the \&\fB\-verify_other\fR and \fB\-trust_other\fR options. .IP "\fB\-noverify\fR" 4 .IX Item "-noverify" Don't attempt to verify the \s-1OCSP\s0 response signature or the nonce values. This option will normally only be used for debugging since it disables all verification of the responders certificate. .IP "\fB\-no_intern\fR" 4 .IX Item "-no_intern" Ignore certificates contained in the \s-1OCSP\s0 response when searching for the signers certificate. With this option the signers certificate must be specified with either the \fB\-verify_other\fR or \fB\-VAfile\fR options. .IP "\fB\-no_signature_verify\fR" 4 .IX Item "-no_signature_verify" Don't check the signature on the \s-1OCSP\s0 response. Since this option tolerates invalid signatures on \s-1OCSP\s0 responses it will normally only be used for testing purposes. .IP "\fB\-no_cert_verify\fR" 4 .IX Item "-no_cert_verify" Don't verify the \s-1OCSP\s0 response signers certificate at all. Since this option allows the \s-1OCSP\s0 response to be signed by any certificate it should only be used for testing purposes. .IP "\fB\-no_chain\fR" 4 .IX Item "-no_chain" Do not use certificates in the response as additional untrusted \s-1CA\s0 certificates. .IP "\fB\-no_explicit\fR" 4 .IX Item "-no_explicit" Do not explicitly trust the root \s-1CA\s0 if it is set to be trusted for \s-1OCSP\s0 signing. .IP "\fB\-no_cert_checks\fR" 4 .IX Item "-no_cert_checks" Don't perform any additional checks on the \s-1OCSP\s0 response signers certificate. That is do not make any checks to see if the signers certificate is authorised to provide the necessary status information: as a result this option should only be used for testing purposes. .IP "\fB\-validity_period nsec\fR, \fB\-status_age age\fR" 4 .IX Item "-validity_period nsec, -status_age age" These options specify the range of times, in seconds, which will be tolerated in an \s-1OCSP\s0 response. Each certificate status response includes a \fBnotBefore\fR time and an optional \fBnotAfter\fR time. The current time should fall between these two values, but the interval between the two times may be only a few seconds. In practice the \s-1OCSP\s0 responder and clients clocks may not be precisely synchronised and so such a check may fail. To avoid this the \&\fB\-validity_period\fR option can be used to specify an acceptable error range in seconds, the default value is 5 minutes. .Sp If the \fBnotAfter\fR time is omitted from a response then this means that new status information is immediately available. In this case the age of the \&\fBnotBefore\fR field is checked to see it is not older than \fBage\fR seconds old. By default this additional check is not performed. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" This option sets digest algorithm to use for certificate identification in the \&\s-1OCSP\s0 request. Any digest supported by the OpenSSL \fBdgst\fR command can be used. The default is \s-1SHA\-1.\s0 This option may be used multiple times to specify the digest used by subsequent certificate identifiers. .SS "\s-1OCSP\s0 Server Options" .IX Subsection "OCSP Server Options" .IP "\fB\-index indexfile\fR" 4 .IX Item "-index indexfile" The \fBindexfile\fR parameter is the name of a text index file in \fBca\fR format containing certificate revocation information. .Sp If the \fBindex\fR option is specified the \fBocsp\fR utility is in responder mode, otherwise it is in client mode. The request(s) the responder processes can be either specified on the command line (using \fBissuer\fR and \fBserial\fR options), supplied in a file (using the \fBreqin\fR option) or via external \s-1OCSP\s0 clients (if \fBport\fR or \fBurl\fR is specified). .Sp If the \fBindex\fR option is present then the \fB\s-1CA\s0\fR and \fBrsigner\fR options must also be present. .IP "\fB\-CA file\fR" 4 .IX Item "-CA file" \&\s-1CA\s0 certificate corresponding to the revocation information in \fBindexfile\fR. .IP "\fB\-rsigner file\fR" 4 .IX Item "-rsigner file" The certificate to sign \s-1OCSP\s0 responses with. .IP "\fB\-rother file\fR" 4 .IX Item "-rother file" Additional certificates to include in the \s-1OCSP\s0 response. .IP "\fB\-resp_no_certs\fR" 4 .IX Item "-resp_no_certs" Don't include any certificates in the \s-1OCSP\s0 response. .IP "\fB\-resp_key_id\fR" 4 .IX Item "-resp_key_id" Identify the signer certificate using the key \s-1ID,\s0 default is to use the subject name. .IP "\fB\-rkey file\fR" 4 .IX Item "-rkey file" The private key to sign \s-1OCSP\s0 responses with: if not present the file specified in the \fBrsigner\fR option is used. .IP "\fB\-rsigopt nm:v\fR" 4 .IX Item "-rsigopt nm:v" Pass options to the signature algorithm when signing \s-1OCSP\s0 responses. Names and values of these options are algorithm-specific. .IP "\fB\-port portnum\fR" 4 .IX Item "-port portnum" Port to listen for \s-1OCSP\s0 requests on. The port may also be specified using the \fBurl\fR option. .IP "\fB\-ignore_err\fR" 4 .IX Item "-ignore_err" Ignore malformed requests or responses: When acting as an \s-1OCSP\s0 client, retry if a malformed response is received. When acting as an \s-1OCSP\s0 responder, continue running instead of terminating upon receiving a malformed request. .IP "\fB\-nrequest number\fR" 4 .IX Item "-nrequest number" The \s-1OCSP\s0 server will exit after receiving \fBnumber\fR requests, default unlimited. .IP "\fB\-nmin minutes\fR, \fB\-ndays days\fR" 4 .IX Item "-nmin minutes, -ndays days" Number of minutes or days when fresh revocation information is available: used in the \fBnextUpdate\fR field. If neither option is present then the \&\fBnextUpdate\fR field is omitted meaning fresh revocation information is immediately available. .SH "OCSP Response verification." .IX Header "OCSP Response verification." \&\s-1OCSP\s0 Response follows the rules specified in \s-1RFC2560.\s0 .PP Initially the \s-1OCSP\s0 responder certificate is located and the signature on the \s-1OCSP\s0 request checked using the responder certificate's public key. .PP Then a normal certificate verify is performed on the \s-1OCSP\s0 responder certificate building up a certificate chain in the process. The locations of the trusted certificates used to build the chain can be specified by the \fBCAfile\fR and \fBCApath\fR options or they will be looked for in the standard OpenSSL certificates directory. .PP If the initial verify fails then the \s-1OCSP\s0 verify process halts with an error. .PP Otherwise the issuing \s-1CA\s0 certificate in the request is compared to the \s-1OCSP\s0 responder certificate: if there is a match then the \s-1OCSP\s0 verify succeeds. .PP Otherwise the \s-1OCSP\s0 responder certificate's \s-1CA\s0 is checked against the issuing \&\s-1CA\s0 certificate in the request. If there is a match and the OCSPSigning extended key usage is present in the \s-1OCSP\s0 responder certificate then the \&\s-1OCSP\s0 verify succeeds. .PP Otherwise, if \fB\-no_explicit\fR is \fBnot\fR set the root \s-1CA\s0 of the \s-1OCSP\s0 responders \&\s-1CA\s0 is checked to see if it is trusted for \s-1OCSP\s0 signing. If it is the \s-1OCSP\s0 verify succeeds. .PP If none of these checks is successful then the \s-1OCSP\s0 verify fails. .PP What this effectively means if that if the \s-1OCSP\s0 responder certificate is authorised directly by the \s-1CA\s0 it is issuing revocation information about (and it is correctly configured) then verification will succeed. .PP If the \s-1OCSP\s0 responder is a \*(L"global responder\*(R" which can give details about multiple CAs and has its own separate certificate chain then its root \&\s-1CA\s0 can be trusted for \s-1OCSP\s0 signing. For example: .PP .Vb 1 \& openssl x509 \-in ocspCA.pem \-addtrust OCSPSigning \-out trustedCA.pem .Ve .PP Alternatively the responder certificate itself can be explicitly trusted with the \fB\-VAfile\fR option. .SH "NOTES" .IX Header "NOTES" As noted, most of the verify options are for testing or debugging purposes. Normally only the \fB\-CApath\fR, \fB\-CAfile\fR and (if the responder is a 'global \&\s-1VA\s0') \fB\-VAfile\fR options need to be used. .PP The \s-1OCSP\s0 server is only useful for test and demonstration purposes: it is not really usable as a full \s-1OCSP\s0 responder. It contains only a very simple \s-1HTTP\s0 request handling and can only handle the \s-1POST\s0 form of \s-1OCSP\s0 queries. It also handles requests serially meaning it cannot respond to new requests until it has processed the current one. The text index file format of revocation is also inefficient for large quantities of revocation data. .PP It is possible to run the \fBocsp\fR application in responder mode via a \s-1CGI\s0 script using the \fBreqin\fR and \fBrespout\fR options. .SH "EXAMPLES" .IX Header "EXAMPLES" Create an \s-1OCSP\s0 request and write it to a file: .PP .Vb 1 \& openssl ocsp \-issuer issuer.pem \-cert c1.pem \-cert c2.pem \-reqout req.der .Ve .PP Send a query to an \s-1OCSP\s0 responder with \s-1URL\s0 http://ocsp.myhost.com/ save the response to a file, print it out in text form, and verify the response: .PP .Vb 2 \& openssl ocsp \-issuer issuer.pem \-cert c1.pem \-cert c2.pem \e \& \-url http://ocsp.myhost.com/ \-resp_text \-respout resp.der .Ve .PP Read in an \s-1OCSP\s0 response and print out text form: .PP .Vb 1 \& openssl ocsp \-respin resp.der \-text \-noverify .Ve .PP \&\s-1OCSP\s0 server on port 8888 using a standard \fBca\fR configuration, and a separate responder certificate. All requests and responses are printed to a file. .PP .Vb 2 \& openssl ocsp \-index demoCA/index.txt \-port 8888 \-rsigner rcert.pem \-CA demoCA/cacert.pem \& \-text \-out log.txt .Ve .PP As above but exit after processing one request: .PP .Vb 2 \& openssl ocsp \-index demoCA/index.txt \-port 8888 \-rsigner rcert.pem \-CA demoCA/cacert.pem \& \-nrequest 1 .Ve .PP Query status information using an internally generated request: .PP .Vb 2 \& openssl ocsp \-index demoCA/index.txt \-rsigner rcert.pem \-CA demoCA/cacert.pem \& \-issuer demoCA/cacert.pem \-serial 1 .Ve .PP Query status information using request read from a file, and write the response to a second file. .PP .Vb 2 \& openssl ocsp \-index demoCA/index.txt \-rsigner rcert.pem \-CA demoCA/cacert.pem \& \-reqin req.der \-respout resp.der .Ve .SH "HISTORY" .IX Header "HISTORY" The \-no_alt_chains option was added in OpenSSL 1.1.0. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2001\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!ngendsa.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GENDSA 1" .TH GENDSA 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-gendsa, gendsa \- generate a DSA private key from a set of parameters .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBgendsa\fR [\fB\-help\fR] [\fB\-out filename\fR] [\fB\-aes128\fR] [\fB\-aes192\fR] [\fB\-aes256\fR] [\fB\-aria128\fR] [\fB\-aria192\fR] [\fB\-aria256\fR] [\fB\-camellia128\fR] [\fB\-camellia192\fR] [\fB\-camellia256\fR] [\fB\-des\fR] [\fB\-des3\fR] [\fB\-idea\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] [\fBparamfile\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBgendsa\fR command generates a \s-1DSA\s0 private key from a \s-1DSA\s0 parameter file (which will be typically generated by the \fBopenssl dsaparam\fR command). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Output the key to the specified file. If this argument is not specified then standard output is used. .IP "\fB\-aes128\fR, \fB\-aes192\fR, \fB\-aes256\fR, \fB\-aria128\fR, \fB\-aria192\fR, \fB\-aria256\fR, \fB\-camellia128\fR, \fB\-camellia192\fR, \fB\-camellia256\fR, \fB\-des\fR, \fB\-des3\fR, \fB\-idea\fR" 4 .IX Item "-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea" These options encrypt the private key with specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified no encryption is used. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBgendsa\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fBparamfile\fR" 4 .IX Item "paramfile" This option specifies the \s-1DSA\s0 parameter file to use. The parameters in this file determine the size of the private key. \s-1DSA\s0 parameters can be generated and examined using the \fBopenssl dsaparam\fR command. .SH "NOTES" .IX Header "NOTES" \&\s-1DSA\s0 key generation is little more than random number generation so it is much quicker that \s-1RSA\s0 key generation for example. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdsaparam\fR\|(1), \fBdsa\fR\|(1), \fBgenrsa\fR\|(1), \&\fBrsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!שjjpkcs7.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKCS7 1" .TH PKCS7 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkcs7, pkcs7 \- PKCS#7 utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkcs7\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-print_certs\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkcs7\fR command processes PKCS#7 files in \s-1DER\s0 or \s-1PEM\s0 format. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. \fB\s-1DER\s0\fR format is \s-1DER\s0 encoded PKCS#7 v1.5 structure.\fB\s-1PEM\s0\fR (the default) is a base64 encoded version of the \s-1DER\s0 form with header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write to or standard output by default. .IP "\fB\-print_certs\fR" 4 .IX Item "-print_certs" Prints out any certificates or CRLs contained in the file. They are preceded by their subject and issuer names in one line format. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out certificates details in full rather than just subject and issuer names. .IP "\fB\-noout\fR" 4 .IX Item "-noout" Don't output the encoded version of the PKCS#7 structure (or certificates is \fB\-print_certs\fR is set). .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBpkcs7\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "EXAMPLES" .IX Header "EXAMPLES" Convert a PKCS#7 file from \s-1PEM\s0 to \s-1DER:\s0 .PP .Vb 1 \& openssl pkcs7 \-in file.pem \-outform DER \-out file.der .Ve .PP Output all certificates in a file: .PP .Vb 1 \& openssl pkcs7 \-in file.pem \-print_certs \-out certs.pem .Ve .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 PKCS#7 format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN PKCS7\-\-\-\-\- \& \-\-\-\-\-END PKCS7\-\-\-\-\- .Ve .PP For compatibility with some CAs it will also accept: .PP .Vb 2 \& \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- \& \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .Ve .SH "RESTRICTIONS" .IX Header "RESTRICTIONS" There is no option to print out all the fields of a PKCS#7 file. .PP This PKCS#7 routines only understand PKCS#7 v 1.5 as specified in \s-1RFC2315\s0 they cannot currently parse, for example, the new \s-1CMS\s0 as described in \s-1RFC2630.\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBcrl2pkcs7\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!TT c_rehash.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "C_REHASH 1" .TH C_REHASH 1 "2019-12-20" "1.0.2u" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" c_rehash \- Create symbolic links to files named by the hash values .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBc_rehash\fR \&\fB[\-old]\fR \&\fB[\-h]\fR \&\fB[\-n]\fR \&\fB[\-v]\fR [ \fIdirectory\fR...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBc_rehash\fR scans directories and calculates a hash value of each \&\f(CW\*(C`.pem\*(C'\fR, \f(CW\*(C`.crt\*(C'\fR, \f(CW\*(C`.cer\*(C'\fR, or \f(CW\*(C`.crl\*(C'\fR file in the specified directory list and creates symbolic links for each file, where the name of the link is the hash value. (If the platform does not support symbolic links, a copy is made.) This utility is useful as many programs that use OpenSSL require directories to be set up like this in order to find certificates. .PP If any directories are named on the command line, then those are processed in turn. If not, then the \fB\s-1SSL_CERT_DIR\s0\fR environment variable is consulted; this shold be a colon-separated list of directories, like the Unix \fB\s-1PATH\s0\fR variable. If that is not set then the default directory (installation-specific but often \fB/usr/local/ssl/certs\fR) is processed. .PP In order for a directory to be processed, the user must have write permissions on that directory, otherwise it will be skipped. The links created are of the form \f(CW\*(C`HHHHHHHH.D\*(C'\fR, where each \fBH\fR is a hexadecimal character and \fBD\fR is a single decimal digit. When processing a directory, \fBc_rehash\fR will first remove all links that have a name in that syntax. If you have links in that format used for other purposes, they will be removed. To skip the removal step, use the \fB\-n\fR flag. Hashes for \s-1CRL\s0's look similar except the letter \fBr\fR appears after the period, like this: \f(CW\*(C`HHHHHHHH.rD\*(C'\fR. .PP Multiple objects may have the same hash; they will be indicated by incrementing the \fBD\fR value. Duplicates are found by comparing the full \s-1SHA\-1\s0 fingerprint. A warning will be displayed if a duplicate is found. .PP A warning will also be displayed if there are files that cannot be parsed as either a certificate or a \s-1CRL.\s0 .PP The program uses the \fBopenssl\fR program to compute the hashes and fingerprints. If not found in the user's \fB\s-1PATH\s0\fR, then set the \&\fB\s-1OPENSSL\s0\fR environment variable to the full pathname. Any program can be used, it will be invoked as follows for either a certificate or \s-1CRL:\s0 .PP .Vb 2 \& $OPENSSL x509 \-hash \-fingerprint \-noout \-in FILENAME \& $OPENSSL crl \-hash \-fingerprint \-noout \-in FILENAME .Ve .PP where \fB\s-1FILENAME\s0\fR is the filename. It must output the hash of the file on the first line, and the fingerprint on the second, optionally prefixed with some text and an equals sign. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-old\fR" 4 .IX Item "-old" Use old-style hashing (\s-1MD5,\s0 as opposed to \s-1SHA\-1\s0) for generating links for releases before 1.0.0. Note that current versions will not use the old style. .IP "\fB\-h\fR" 4 .IX Item "-h" Display a brief usage message. .IP "\fB\-n\fR" 4 .IX Item "-n" Do not remove existing links. This is needed when keeping new and old-style links in the same directory. .IP "\fB\-v\fR" 4 .IX Item "-v" Print messages about old links removed and new links created. By default, \fBc_rehash\fR only lists each directory as it is processed. .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" .IP "\fB\s-1OPENSSL\s0\fR" 4 .IX Item "OPENSSL" The path to an executable to use to generate hashes and fingerprints (see above). .IP "\fB\s-1SSL_CERT_DIR\s0\fR" 4 .IX Item "SSL_CERT_DIR" Colon separated list of directories to operate on. Ignored if directories are listed on the command line. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBopenssl\fR\|(1), \&\fBcrl\fR\|(1). \&\fBx509\fR\|(1). PK!ؔspeed.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SPEED 1" .TH SPEED 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-speed, speed \- test library performance .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl speed\fR [\fB\-help\fR] [\fB\-engine id\fR] [\fB\-elapsed\fR] [\fB\-evp algo\fR] [\fB\-decrypt\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-primes num\fR] [\fB\-seconds num\fR] [\fB\-bytes num\fR] [\fBalgorithm...\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to test the performance of cryptographic algorithms. To see the list of supported algorithms, use the \fIlist \-\-digest\-commands\fR or \fIlist \-\-cipher\-commands\fR command. The global \s-1CSPRNG\s0 is denoted by the \fIrand\fR algorithm name. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBspeed\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-elapsed\fR" 4 .IX Item "-elapsed" When calculating operations\- or bytes-per-second, use wall-clock time instead of \s-1CPU\s0 user time as divisor. It can be useful when testing speed of hardware engines. .IP "\fB\-evp algo\fR" 4 .IX Item "-evp algo" Use the specified cipher or message digest algorithm via the \s-1EVP\s0 interface. If \fBalgo\fR is an \s-1AEAD\s0 cipher, then you can pass <\-aead> to benchmark a TLS-like sequence. And if \fBalgo\fR is a multi-buffer capable cipher, e.g. aes\-128\-cbc\-hmac\-sha1, then \fB\-mb\fR will time multi-buffer operation. .IP "\fB\-decrypt\fR" 4 .IX Item "-decrypt" Time the decryption instead of encryption. Affects only the \s-1EVP\s0 testing. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-primes num\fR" 4 .IX Item "-primes num" Generate a \fBnum\fR\-prime \s-1RSA\s0 key and use it to run the benchmarks. This option is only effective if \s-1RSA\s0 algorithm is specified to test. .IP "\fB\-seconds num\fR" 4 .IX Item "-seconds num" Run benchmarks for \fBnum\fR seconds. .IP "\fB\-bytes num\fR" 4 .IX Item "-bytes num" Run benchmarks on \fBnum\fR\-byte buffers. Affects ciphers, digests and the \s-1CSPRNG.\s0 .IP "\fB[zero or more test algorithms]\fR" 4 .IX Item "[zero or more test algorithms]" If any options are given, \fBspeed\fR tests those algorithms, otherwise a pre-compiled grand selection is tested. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!g}.}.dgst.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DGST 1" .TH DGST 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-dgst, dgst \- perform digest operations .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl dgst\fR [\fB\-\f(BIdigest\fB\fR] [\fB\-help\fR] [\fB\-c\fR] [\fB\-d\fR] [\fB\-list\fR] [\fB\-hex\fR] [\fB\-binary\fR] [\fB\-r\fR] [\fB\-out filename\fR] [\fB\-sign filename\fR] [\fB\-keyform arg\fR] [\fB\-passin arg\fR] [\fB\-verify filename\fR] [\fB\-prverify filename\fR] [\fB\-signature filename\fR] [\fB\-sigopt nm:v\fR] [\fB\-hmac key\fR] [\fB\-fips\-fingerprint\fR] [\fB\-rand file...\fR] [\fB\-engine id\fR] [\fB\-engine_impl\fR] [\fBfile...\fR] .PP \&\fBopenssl\fR \fIdigest\fR [\fB...\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The digest functions output the message digest of a supplied file or files in hexadecimal. The digest functions also generate and verify digital signatures using message digests. .PP The generic name, \fBdgst\fR, may be used with an option specifying the algorithm to be used. The default digest is \fIsha256\fR. A supported \fIdigest\fR name may also be used as the command name. To see the list of supported algorithms, use the \fIlist \-\-digest\-commands\fR command. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" Specifies name of a supported digest to be used. To see the list of supported digests, use the command \fIlist \-\-digest\-commands\fR. .IP "\fB\-c\fR" 4 .IX Item "-c" Print out the digest in two digit groups separated by colons, only relevant if \&\fBhex\fR format output is used. .IP "\fB\-d\fR" 4 .IX Item "-d" Print out \s-1BIO\s0 debugging information. .IP "\fB\-list\fR" 4 .IX Item "-list" Prints out a list of supported message digests. .IP "\fB\-hex\fR" 4 .IX Item "-hex" Digest is to be output as a hex dump. This is the default case for a \*(L"normal\*(R" digest as opposed to a digital signature. See \s-1NOTES\s0 below for digital signatures using \fB\-hex\fR. .IP "\fB\-binary\fR" 4 .IX Item "-binary" Output the digest or signature in binary form. .IP "\fB\-r\fR" 4 .IX Item "-r" Output the digest in the \*(L"coreutils\*(R" format, including newlines. Used by programs like \fBsha1sum\fR. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Filename to output to, or standard output by default. .IP "\fB\-sign filename\fR" 4 .IX Item "-sign filename" Digitally sign the digest using the private key in \*(L"filename\*(R". Note this option does not support Ed25519 or Ed448 private keys. .IP "\fB\-keyform arg\fR" 4 .IX Item "-keyform arg" Specifies the key format to sign digest with. The \s-1DER, PEM, P12,\s0 and \s-1ENGINE\s0 formats are supported. .IP "\fB\-sigopt nm:v\fR" 4 .IX Item "-sigopt nm:v" Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The private key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-verify filename\fR" 4 .IX Item "-verify filename" Verify the signature using the public key in \*(L"filename\*(R". The output is either \*(L"Verification \s-1OK\*(R"\s0 or \*(L"Verification Failure\*(R". .IP "\fB\-prverify filename\fR" 4 .IX Item "-prverify filename" Verify the signature using the private key in \*(L"filename\*(R". .IP "\fB\-signature filename\fR" 4 .IX Item "-signature filename" The actual signature to verify. .IP "\fB\-hmac key\fR" 4 .IX Item "-hmac key" Create a hashed \s-1MAC\s0 using \*(L"key\*(R". .IP "\fB\-mac alg\fR" 4 .IX Item "-mac alg" Create \s-1MAC\s0 (keyed Message Authentication Code). The most popular \s-1MAC\s0 algorithm is \s-1HMAC\s0 (hash-based \s-1MAC\s0), but there are other \s-1MAC\s0 algorithms which are not based on hash, for instance \fBgost-mac\fR algorithm, supported by \fBccgost\fR engine. \s-1MAC\s0 keys and other options should be set via \fB\-macopt\fR parameter. .IP "\fB\-macopt nm:v\fR" 4 .IX Item "-macopt nm:v" Passes options to \s-1MAC\s0 algorithm, specified by \fB\-mac\fR key. Following options are supported by both by \fB\s-1HMAC\s0\fR and \fBgost-mac\fR: .RS 4 .IP "\fBkey:string\fR" 4 .IX Item "key:string" Specifies \s-1MAC\s0 key as alphanumeric string (use if key contain printable characters only). String length must conform to any restrictions of the \s-1MAC\s0 algorithm for example exactly 32 chars for gost-mac. .IP "\fBhexkey:string\fR" 4 .IX Item "hexkey:string" Specifies \s-1MAC\s0 key in hexadecimal form (two hex digits per byte). Key length must conform to any restrictions of the \s-1MAC\s0 algorithm for example exactly 32 chars for gost-mac. .RE .RS 4 .RE .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-fips\-fingerprint\fR" 4 .IX Item "-fips-fingerprint" Compute \s-1HMAC\s0 using a specific key for certain OpenSSL-FIPS operations. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Use engine \fBid\fR for operations (including private key storage). This engine is not used as source for digest algorithms, unless it is also specified in the configuration file or \fB\-engine_impl\fR is also specified. .IP "\fB\-engine_impl\fR" 4 .IX Item "-engine_impl" When used with the \fB\-engine\fR option, it specifies to also use engine \fBid\fR for digest operations. .IP "\fBfile...\fR" 4 .IX Item "file..." File or files to digest. If no files are specified then standard input is used. .SH "EXAMPLES" .IX Header "EXAMPLES" To create a hex-encoded message digest of a file: openssl dgst \-md5 \-hex file.txt .PP To sign a file using \s-1SHA\-256\s0 with binary file output: openssl dgst \-sha256 \-sign privatekey.pem \-out signature.sign file.txt .PP To verify a signature: openssl dgst \-sha256 \-verify publickey.pem \e \-signature signature.sign \e file.txt .SH "NOTES" .IX Header "NOTES" The digest mechanisms that are available will depend on the options used when building OpenSSL. The \fBlist digest-commands\fR command can be used to list them. .PP New or agile applications should use probably use \s-1SHA\-256.\s0 Other digests, particularly \s-1SHA\-1\s0 and \s-1MD5,\s0 are still widely used for interoperating with existing formats and protocols. .PP When signing a file, \fBdgst\fR will automatically determine the algorithm (\s-1RSA, ECC,\s0 etc) to use for signing based on the private key's \s-1ASN.1\s0 info. When verifying signatures, it only handles the \s-1RSA, DSA,\s0 or \s-1ECDSA\s0 signature itself, not the related data to identify the signer and algorithm used in formats such as x.509, \s-1CMS,\s0 and S/MIME. .PP A source of random numbers is required for certain signing algorithms, in particular \s-1ECDSA\s0 and \s-1DSA.\s0 .PP The signing and verify options should only be used if a single file is being signed or verified. .PP Hex signatures cannot be verified using \fBopenssl\fR. Instead, use \*(L"xxd \-r\*(R" or similar program to transform the hex signature into a binary signature prior to verification. .SH "HISTORY" .IX Header "HISTORY" The default digest was changed from \s-1MD5\s0 to \s-1SHA256\s0 in OpenSSL 1.1.0. The FIPS-related options were removed in OpenSSL 1.1.0. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!*passwd.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PASSWD 1" .TH PASSWD 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-passwd, passwd \- compute password hashes .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl passwd\fR [\fB\-help\fR] [\fB\-crypt\fR] [\fB\-1\fR] [\fB\-apr1\fR] [\fB\-aixmd5\fR] [\fB\-5\fR] [\fB\-6\fR] [\fB\-salt\fR \fIstring\fR] [\fB\-in\fR \fIfile\fR] [\fB\-stdin\fR] [\fB\-noverify\fR] [\fB\-quiet\fR] [\fB\-table\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] {\fIpassword\fR} .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpasswd\fR command computes the hash of a password typed at run-time or the hash of each password in a list. The password list is taken from the named file for option \fB\-in file\fR, from stdin for option \fB\-stdin\fR, or from the command line, or from the terminal otherwise. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-crypt\fR" 4 .IX Item "-crypt" Use the \fBcrypt\fR algorithm (default). .IP "\fB\-1\fR" 4 .IX Item "-1" Use the \s-1MD5\s0 based \s-1BSD\s0 password algorithm \fB1\fR. .IP "\fB\-apr1\fR" 4 .IX Item "-apr1" Use the \fBapr1\fR algorithm (Apache variant of the \s-1BSD\s0 algorithm). .IP "\fB\-aixmd5\fR" 4 .IX Item "-aixmd5" Use the \fB\s-1AIX MD5\s0\fR algorithm (\s-1AIX\s0 variant of the \s-1BSD\s0 algorithm). .IP "\fB\-5\fR" 4 .IX Item "-5" .PD 0 .IP "\fB\-6\fR" 4 .IX Item "-6" .PD Use the \fB\s-1SHA256\s0\fR / \fB\s-1SHA512\s0\fR based algorithms defined by Ulrich Drepper. See . .IP "\fB\-salt\fR \fIstring\fR" 4 .IX Item "-salt string" Use the specified salt. When reading a password from the terminal, this implies \fB\-noverify\fR. .IP "\fB\-in\fR \fIfile\fR" 4 .IX Item "-in file" Read passwords from \fIfile\fR. .IP "\fB\-stdin\fR" 4 .IX Item "-stdin" Read passwords from \fBstdin\fR. .IP "\fB\-noverify\fR" 4 .IX Item "-noverify" Don't verify when reading a password from the terminal. .IP "\fB\-quiet\fR" 4 .IX Item "-quiet" Don't output warnings when passwords given at the command line are truncated. .IP "\fB\-table\fR" 4 .IX Item "-table" In the output list, prepend the cleartext password and a \s-1TAB\s0 character to each password hash. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .SH "EXAMPLES" .IX Header "EXAMPLES" .Vb 2 \& % openssl passwd \-crypt \-salt xx password \& xxj31ZMTZzkVA \& \& % openssl passwd \-1 \-salt xxxxxxxx password \& $1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a. \& \& % openssl passwd \-apr1 \-salt xxxxxxxx password \& $apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0 \& \& % openssl passwd \-aixmd5 \-salt xxxxxxxx password \& xxxxxxxx$8Oaipk/GPKhC64w/YVeFD/ .Ve .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!Kձppts.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "TS 1" .TH TS 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ts, ts \- Time Stamping Authority tool (client/server) .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBts\fR \&\fB\-query\fR [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-config\fR configfile] [\fB\-data\fR file_to_hash] [\fB\-digest\fR digest_bytes] [\fB\-\f(BIdigest\fB\fR] [\fB\-tspolicy\fR object_id] [\fB\-no_nonce\fR] [\fB\-cert\fR] [\fB\-in\fR request.tsq] [\fB\-out\fR request.tsq] [\fB\-text\fR] .PP \&\fBopenssl\fR \fBts\fR \&\fB\-reply\fR [\fB\-config\fR configfile] [\fB\-section\fR tsa_section] [\fB\-queryfile\fR request.tsq] [\fB\-passin\fR password_src] [\fB\-signer\fR tsa_cert.pem] [\fB\-inkey\fR file_or_id] [\fB\-\f(BIdigest\fB\fR] [\fB\-chain\fR certs_file.pem] [\fB\-tspolicy\fR object_id] [\fB\-in\fR response.tsr] [\fB\-token_in\fR] [\fB\-out\fR response.tsr] [\fB\-token_out\fR] [\fB\-text\fR] [\fB\-engine\fR id] .PP \&\fBopenssl\fR \fBts\fR \&\fB\-verify\fR [\fB\-data\fR file_to_hash] [\fB\-digest\fR digest_bytes] [\fB\-queryfile\fR request.tsq] [\fB\-in\fR response.tsr] [\fB\-token_in\fR] [\fB\-CApath\fR trusted_cert_path] [\fB\-CAfile\fR trusted_certs.pem] [\fB\-untrusted\fR cert_file.pem] [\fIverify options\fR] .PP \&\fIverify options:\fR [\-attime timestamp] [\-check_ss_sig] [\-crl_check] [\-crl_check_all] [\-explicit_policy] [\-extended_crl] [\-ignore_critical] [\-inhibit_any] [\-inhibit_map] [\-issuer_checks] [\-no_alt_chains] [\-no_check_time] [\-partial_chain] [\-policy arg] [\-policy_check] [\-policy_print] [\-purpose purpose] [\-suiteB_128] [\-suiteB_128_only] [\-suiteB_192] [\-trusted_first] [\-use_deltas] [\-auth_level num] [\-verify_depth num] [\-verify_email email] [\-verify_hostname hostname] [\-verify_ip ip] [\-verify_name name] [\-x509_strict] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBts\fR command is a basic Time Stamping Authority (\s-1TSA\s0) client and server application as specified in \s-1RFC 3161\s0 (Time-Stamp Protocol, \s-1TSP\s0). A \&\s-1TSA\s0 can be part of a \s-1PKI\s0 deployment and its role is to provide long term proof of the existence of a certain datum before a particular time. Here is a brief description of the protocol: .IP "1." 4 The \s-1TSA\s0 client computes a one-way hash value for a data file and sends the hash to the \s-1TSA.\s0 .IP "2." 4 The \s-1TSA\s0 attaches the current date and time to the received hash value, signs them and sends the timestamp token back to the client. By creating this token the \s-1TSA\s0 certifies the existence of the original data file at the time of response generation. .IP "3." 4 The \s-1TSA\s0 client receives the timestamp token and verifies the signature on it. It also checks if the token contains the same hash value that it had sent to the \s-1TSA.\s0 .PP There is one \s-1DER\s0 encoded protocol data unit defined for transporting a timestamp request to the \s-1TSA\s0 and one for sending the timestamp response back to the client. The \fBts\fR command has three main functions: creating a timestamp request based on a data file, creating a timestamp response based on a request, verifying if a response corresponds to a particular request or a data file. .PP There is no support for sending the requests/responses automatically over \s-1HTTP\s0 or \s-1TCP\s0 yet as suggested in \s-1RFC 3161.\s0 The users must send the requests either by ftp or e\-mail. .SH "OPTIONS" .IX Header "OPTIONS" .SS "Time Stamp Request generation" .IX Subsection "Time Stamp Request generation" The \fB\-query\fR switch can be used for creating and printing a timestamp request with the following options: .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-config\fR configfile" 4 .IX Item "-config configfile" The configuration file to use. Optional; for a description of the default value, see \*(L"\s-1COMMAND SUMMARY\*(R"\s0 in \fBopenssl\fR\|(1). .IP "\fB\-data\fR file_to_hash" 4 .IX Item "-data file_to_hash" The data file for which the timestamp request needs to be created. stdin is the default if neither the \fB\-data\fR nor the \fB\-digest\fR parameter is specified. (Optional) .IP "\fB\-digest\fR digest_bytes" 4 .IX Item "-digest digest_bytes" It is possible to specify the message imprint explicitly without the data file. The imprint must be specified in a hexadecimal format, two characters per byte, the bytes optionally separated by colons (e.g. 1A:F6:01:... or 1AF601...). The number of bytes must match the message digest algorithm in use. (Optional) .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" The message digest to apply to the data file. Any digest supported by the OpenSSL \fBdgst\fR command can be used. The default is \s-1SHA\-1.\s0 (Optional) .IP "\fB\-tspolicy\fR object_id" 4 .IX Item "-tspolicy object_id" The policy that the client expects the \s-1TSA\s0 to use for creating the timestamp token. Either the dotted \s-1OID\s0 notation or \s-1OID\s0 names defined in the config file can be used. If no policy is requested the \s-1TSA\s0 will use its own default policy. (Optional) .IP "\fB\-no_nonce\fR" 4 .IX Item "-no_nonce" No nonce is specified in the request if this option is given. Otherwise a 64 bit long pseudo-random none is included in the request. It is recommended to use nonce to protect against replay-attacks. (Optional) .IP "\fB\-cert\fR" 4 .IX Item "-cert" The \s-1TSA\s0 is expected to include its signing certificate in the response. (Optional) .IP "\fB\-in\fR request.tsq" 4 .IX Item "-in request.tsq" This option specifies a previously created timestamp request in \s-1DER\s0 format that will be printed into the output file. Useful when you need to examine the content of a request in human-readable format. (Optional) .IP "\fB\-out\fR request.tsq" 4 .IX Item "-out request.tsq" Name of the output file to which the request will be written. Default is stdout. (Optional) .IP "\fB\-text\fR" 4 .IX Item "-text" If this option is specified the output is human-readable text format instead of \s-1DER.\s0 (Optional) .SS "Time Stamp Response generation" .IX Subsection "Time Stamp Response generation" A timestamp response (TimeStampResp) consists of a response status and the timestamp token itself (ContentInfo), if the token generation was successful. The \fB\-reply\fR command is for creating a timestamp response or timestamp token based on a request and printing the response/token in human-readable format. If \fB\-token_out\fR is not specified the output is always a timestamp response (TimeStampResp), otherwise it is a timestamp token (ContentInfo). .IP "\fB\-config\fR configfile" 4 .IX Item "-config configfile" The configuration file to use. Optional; for a description of the default value, see \*(L"\s-1COMMAND SUMMARY\*(R"\s0 in \fBopenssl\fR\|(1). See \fB\s-1CONFIGURATION FILE OPTIONS\s0\fR for configurable variables. .IP "\fB\-section\fR tsa_section" 4 .IX Item "-section tsa_section" The name of the config file section containing the settings for the response generation. If not specified the default \s-1TSA\s0 section is used, see \fB\s-1CONFIGURATION FILE OPTIONS\s0\fR for details. (Optional) .IP "\fB\-queryfile\fR request.tsq" 4 .IX Item "-queryfile request.tsq" The name of the file containing a \s-1DER\s0 encoded timestamp request. (Optional) .IP "\fB\-passin\fR password_src" 4 .IX Item "-passin password_src" Specifies the password source for the private key of the \s-1TSA.\s0 See \&\*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). (Optional) .IP "\fB\-signer\fR tsa_cert.pem" 4 .IX Item "-signer tsa_cert.pem" The signer certificate of the \s-1TSA\s0 in \s-1PEM\s0 format. The \s-1TSA\s0 signing certificate must have exactly one extended key usage assigned to it: timeStamping. The extended key usage must also be critical, otherwise the certificate is going to be refused. Overrides the \fBsigner_cert\fR variable of the config file. (Optional) .IP "\fB\-inkey\fR file_or_id" 4 .IX Item "-inkey file_or_id" The signer private key of the \s-1TSA\s0 in \s-1PEM\s0 format. Overrides the \&\fBsigner_key\fR config file option. (Optional) If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" Signing digest to use. Overrides the \fBsigner_digest\fR config file option. (Mandatory unless specified in the config file) .IP "\fB\-chain\fR certs_file.pem" 4 .IX Item "-chain certs_file.pem" The collection of certificates in \s-1PEM\s0 format that will all be included in the response in addition to the signer certificate if the \fB\-cert\fR option was used for the request. This file is supposed to contain the certificate chain for the signer certificate from its issuer upwards. The \fB\-reply\fR command does not build a certificate chain automatically. (Optional) .IP "\fB\-tspolicy\fR object_id" 4 .IX Item "-tspolicy object_id" The default policy to use for the response unless the client explicitly requires a particular \s-1TSA\s0 policy. The \s-1OID\s0 can be specified either in dotted notation or with its name. Overrides the \&\fBdefault_policy\fR config file option. (Optional) .IP "\fB\-in\fR response.tsr" 4 .IX Item "-in response.tsr" Specifies a previously created timestamp response or timestamp token (if \fB\-token_in\fR is also specified) in \s-1DER\s0 format that will be written to the output file. This option does not require a request, it is useful e.g. when you need to examine the content of a response or token or you want to extract the timestamp token from a response. If the input is a token and the output is a timestamp response a default \&'granted' status info is added to the token. (Optional) .IP "\fB\-token_in\fR" 4 .IX Item "-token_in" This flag can be used together with the \fB\-in\fR option and indicates that the input is a \s-1DER\s0 encoded timestamp token (ContentInfo) instead of a timestamp response (TimeStampResp). (Optional) .IP "\fB\-out\fR response.tsr" 4 .IX Item "-out response.tsr" The response is written to this file. The format and content of the file depends on other options (see \fB\-text\fR, \fB\-token_out\fR). The default is stdout. (Optional) .IP "\fB\-token_out\fR" 4 .IX Item "-token_out" The output is a timestamp token (ContentInfo) instead of timestamp response (TimeStampResp). (Optional) .IP "\fB\-text\fR" 4 .IX Item "-text" If this option is specified the output is human-readable text format instead of \s-1DER.\s0 (Optional) .IP "\fB\-engine\fR id" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBts\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. Default is builtin. (Optional) .SS "Time Stamp Response verification" .IX Subsection "Time Stamp Response verification" The \fB\-verify\fR command is for verifying if a timestamp response or timestamp token is valid and matches a particular timestamp request or data file. The \fB\-verify\fR command does not use the configuration file. .IP "\fB\-data\fR file_to_hash" 4 .IX Item "-data file_to_hash" The response or token must be verified against file_to_hash. The file is hashed with the message digest algorithm specified in the token. The \fB\-digest\fR and \fB\-queryfile\fR options must not be specified with this one. (Optional) .IP "\fB\-digest\fR digest_bytes" 4 .IX Item "-digest digest_bytes" The response or token must be verified against the message digest specified with this option. The number of bytes must match the message digest algorithm specified in the token. The \fB\-data\fR and \fB\-queryfile\fR options must not be specified with this one. (Optional) .IP "\fB\-queryfile\fR request.tsq" 4 .IX Item "-queryfile request.tsq" The original timestamp request in \s-1DER\s0 format. The \fB\-data\fR and \fB\-digest\fR options must not be specified with this one. (Optional) .IP "\fB\-in\fR response.tsr" 4 .IX Item "-in response.tsr" The timestamp response that needs to be verified in \s-1DER\s0 format. (Mandatory) .IP "\fB\-token_in\fR" 4 .IX Item "-token_in" This flag can be used together with the \fB\-in\fR option and indicates that the input is a \s-1DER\s0 encoded timestamp token (ContentInfo) instead of a timestamp response (TimeStampResp). (Optional) .IP "\fB\-CApath\fR trusted_cert_path" 4 .IX Item "-CApath trusted_cert_path" The name of the directory containing the trusted \s-1CA\s0 certificates of the client. See the similar option of \fBverify\fR\|(1) for additional details. Either this option or \fB\-CAfile\fR must be specified. (Optional) .IP "\fB\-CAfile\fR trusted_certs.pem" 4 .IX Item "-CAfile trusted_certs.pem" The name of the file containing a set of trusted self-signed \s-1CA\s0 certificates in \s-1PEM\s0 format. See the similar option of \&\fBverify\fR\|(1) for additional details. Either this option or \fB\-CApath\fR must be specified. (Optional) .IP "\fB\-untrusted\fR cert_file.pem" 4 .IX Item "-untrusted cert_file.pem" Set of additional untrusted certificates in \s-1PEM\s0 format which may be needed when building the certificate chain for the \s-1TSA\s0's signing certificate. This file must contain the \s-1TSA\s0 signing certificate and all intermediate \s-1CA\s0 certificates unless the response includes them. (Optional) .IP "\fIverify options\fR" 4 .IX Item "verify options" The options \fB\-attime timestamp\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \&\fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \&\fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-issuer_checks\fR, \fB\-no_alt_chains\fR, \&\fB\-no_check_time\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \&\fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \&\fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \&\fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \&\fB\-verify_name\fR, and \fB\-x509_strict\fR can be used to control timestamp verification. See \fBverify\fR\|(1). .SH "CONFIGURATION FILE OPTIONS" .IX Header "CONFIGURATION FILE OPTIONS" The \fB\-query\fR and \fB\-reply\fR commands make use of a configuration file. See \fBconfig\fR\|(5) for a general description of the syntax of the config file. The \&\fB\-query\fR command uses only the symbolic \s-1OID\s0 names section and it can work without it. However, the \fB\-reply\fR command needs the config file for its operation. .PP When there is a command line switch equivalent of a variable the switch always overrides the settings in the config file. .IP "\fBtsa\fR section, \fBdefault_tsa\fR" 4 .IX Item "tsa section, default_tsa" This is the main section and it specifies the name of another section that contains all the options for the \fB\-reply\fR command. This default section can be overridden with the \fB\-section\fR command line switch. (Optional) .IP "\fBoid_file\fR" 4 .IX Item "oid_file" See \fBca\fR\|(1) for description. (Optional) .IP "\fBoid_section\fR" 4 .IX Item "oid_section" See \fBca\fR\|(1) for description. (Optional) .IP "\fB\s-1RANDFILE\s0\fR" 4 .IX Item "RANDFILE" See \fBca\fR\|(1) for description. (Optional) .IP "\fBserial\fR" 4 .IX Item "serial" The name of the file containing the hexadecimal serial number of the last timestamp response created. This number is incremented by 1 for each response. If the file does not exist at the time of response generation a new file is created with serial number 1. (Mandatory) .IP "\fBcrypto_device\fR" 4 .IX Item "crypto_device" Specifies the OpenSSL engine that will be set as the default for all available algorithms. The default value is builtin, you can specify any other engines supported by OpenSSL (e.g. use chil for the NCipher \s-1HSM\s0). (Optional) .IP "\fBsigner_cert\fR" 4 .IX Item "signer_cert" \&\s-1TSA\s0 signing certificate in \s-1PEM\s0 format. The same as the \fB\-signer\fR command line option. (Optional) .IP "\fBcerts\fR" 4 .IX Item "certs" A file containing a set of \s-1PEM\s0 encoded certificates that need to be included in the response. The same as the \fB\-chain\fR command line option. (Optional) .IP "\fBsigner_key\fR" 4 .IX Item "signer_key" The private key of the \s-1TSA\s0 in \s-1PEM\s0 format. The same as the \fB\-inkey\fR command line option. (Optional) .IP "\fBsigner_digest\fR" 4 .IX Item "signer_digest" Signing digest to use. The same as the \&\fB\-\f(BIdigest\fB\fR command line option. (Mandatory unless specified on the command line) .IP "\fBdefault_policy\fR" 4 .IX Item "default_policy" The default policy to use when the request does not mandate any policy. The same as the \fB\-tspolicy\fR command line option. (Optional) .IP "\fBother_policies\fR" 4 .IX Item "other_policies" Comma separated list of policies that are also acceptable by the \s-1TSA\s0 and used only if the request explicitly specifies one of them. (Optional) .IP "\fBdigests\fR" 4 .IX Item "digests" The list of message digest algorithms that the \s-1TSA\s0 accepts. At least one algorithm must be specified. (Mandatory) .IP "\fBaccuracy\fR" 4 .IX Item "accuracy" The accuracy of the time source of the \s-1TSA\s0 in seconds, milliseconds and microseconds. E.g. secs:1, millisecs:500, microsecs:100. If any of the components is missing zero is assumed for that field. (Optional) .IP "\fBclock_precision_digits\fR" 4 .IX Item "clock_precision_digits" Specifies the maximum number of digits, which represent the fraction of seconds, that need to be included in the time field. The trailing zeros must be removed from the time, so there might actually be fewer digits, or no fraction of seconds at all. Supported only on \s-1UNIX\s0 platforms. The maximum value is 6, default is 0. (Optional) .IP "\fBordering\fR" 4 .IX Item "ordering" If this option is yes the responses generated by this \s-1TSA\s0 can always be ordered, even if the time difference between two responses is less than the sum of their accuracies. Default is no. (Optional) .IP "\fBtsa_name\fR" 4 .IX Item "tsa_name" Set this option to yes if the subject name of the \s-1TSA\s0 must be included in the \s-1TSA\s0 name field of the response. Default is no. (Optional) .IP "\fBess_cert_id_chain\fR" 4 .IX Item "ess_cert_id_chain" The SignedData objects created by the \s-1TSA\s0 always contain the certificate identifier of the signing certificate in a signed attribute (see \s-1RFC 2634,\s0 Enhanced Security Services). If this option is set to yes and either the \fBcerts\fR variable or the \fB\-chain\fR option is specified then the certificate identifiers of the chain will also be included in the SigningCertificate signed attribute. If this variable is set to no, only the signing certificate identifier is included. Default is no. (Optional) .IP "\fBess_cert_id_alg\fR" 4 .IX Item "ess_cert_id_alg" This option specifies the hash function to be used to calculate the \s-1TSA\s0's public key certificate identifier. Default is sha1. (Optional) .SH "EXAMPLES" .IX Header "EXAMPLES" All the examples below presume that \fB\s-1OPENSSL_CONF\s0\fR is set to a proper configuration file, e.g. the example configuration file openssl/apps/openssl.cnf will do. .SS "Time Stamp Request" .IX Subsection "Time Stamp Request" To create a timestamp request for design1.txt with \s-1SHA\-1\s0 without nonce and policy and no certificate is required in the response: .PP .Vb 2 \& openssl ts \-query \-data design1.txt \-no_nonce \e \& \-out design1.tsq .Ve .PP To create a similar timestamp request with specifying the message imprint explicitly: .PP .Vb 2 \& openssl ts \-query \-digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \e \& \-no_nonce \-out design1.tsq .Ve .PP To print the content of the previous request in human readable format: .PP .Vb 1 \& openssl ts \-query \-in design1.tsq \-text .Ve .PP To create a timestamp request which includes the \s-1MD\-5\s0 digest of design2.txt, requests the signer certificate and nonce, specifies a policy id (assuming the tsa_policy1 name is defined in the \&\s-1OID\s0 section of the config file): .PP .Vb 2 \& openssl ts \-query \-data design2.txt \-md5 \e \& \-tspolicy tsa_policy1 \-cert \-out design2.tsq .Ve .SS "Time Stamp Response" .IX Subsection "Time Stamp Response" Before generating a response a signing certificate must be created for the \s-1TSA\s0 that contains the \fBtimeStamping\fR critical extended key usage extension without any other key usage extensions. You can add this line to the user certificate section of the config file to generate a proper certificate; .PP .Vb 1 \& extendedKeyUsage = critical,timeStamping .Ve .PP See \fBreq\fR\|(1), \fBca\fR\|(1), and \fBx509\fR\|(1) for instructions. The examples below assume that cacert.pem contains the certificate of the \s-1CA,\s0 tsacert.pem is the signing certificate issued by cacert.pem and tsakey.pem is the private key of the \s-1TSA.\s0 .PP To create a timestamp response for a request: .PP .Vb 2 \& openssl ts \-reply \-queryfile design1.tsq \-inkey tsakey.pem \e \& \-signer tsacert.pem \-out design1.tsr .Ve .PP If you want to use the settings in the config file you could just write: .PP .Vb 1 \& openssl ts \-reply \-queryfile design1.tsq \-out design1.tsr .Ve .PP To print a timestamp reply to stdout in human readable format: .PP .Vb 1 \& openssl ts \-reply \-in design1.tsr \-text .Ve .PP To create a timestamp token instead of timestamp response: .PP .Vb 1 \& openssl ts \-reply \-queryfile design1.tsq \-out design1_token.der \-token_out .Ve .PP To print a timestamp token to stdout in human readable format: .PP .Vb 1 \& openssl ts \-reply \-in design1_token.der \-token_in \-text \-token_out .Ve .PP To extract the timestamp token from a response: .PP .Vb 1 \& openssl ts \-reply \-in design1.tsr \-out design1_token.der \-token_out .Ve .PP To add 'granted' status info to a timestamp token thereby creating a valid response: .PP .Vb 1 \& openssl ts \-reply \-in design1_token.der \-token_in \-out design1.tsr .Ve .SS "Time Stamp Verification" .IX Subsection "Time Stamp Verification" To verify a timestamp reply against a request: .PP .Vb 2 \& openssl ts \-verify \-queryfile design1.tsq \-in design1.tsr \e \& \-CAfile cacert.pem \-untrusted tsacert.pem .Ve .PP To verify a timestamp reply that includes the certificate chain: .PP .Vb 2 \& openssl ts \-verify \-queryfile design2.tsq \-in design2.tsr \e \& \-CAfile cacert.pem .Ve .PP To verify a timestamp token against the original data file: openssl ts \-verify \-data design2.txt \-in design2.tsr \e \-CAfile cacert.pem .PP To verify a timestamp token against a message imprint: openssl ts \-verify \-digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \e \-in design2.tsr \-CAfile cacert.pem .PP You could also look at the 'test' directory for more examples. .SH "BUGS" .IX Header "BUGS" .IP "\(bu" 2 No support for timestamps over \s-1SMTP,\s0 though it is quite easy to implement an automatic e\-mail based \s-1TSA\s0 with \fBprocmail\fR\|(1) and \fBperl\fR\|(1). \s-1HTTP\s0 server support is provided in the form of a separate apache module. \s-1HTTP\s0 client support is provided by \&\fBtsget\fR\|(1). Pure \s-1TCP/IP\s0 protocol is not supported. .IP "\(bu" 2 The file containing the last serial number of the \s-1TSA\s0 is not locked when being read or written. This is a problem if more than one instance of \fBopenssl\fR\|(1) is trying to create a timestamp response at the same time. This is not an issue when using the apache server module, it does proper locking. .IP "\(bu" 2 Look for the \s-1FIXME\s0 word in the source files. .IP "\(bu" 2 The source code should really be reviewed by somebody else, too. .IP "\(bu" 2 More testing is needed, I have done only some basic tests (see test/testtsa). .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBtsget\fR\|(1), \fBopenssl\fR\|(1), \fBreq\fR\|(1), \&\fBx509\fR\|(1), \fBca\fR\|(1), \fBgenrsa\fR\|(1), \&\fBconfig\fR\|(5) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!)W]VȂȂca.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CA 1" .TH CA 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ca, ca \- sample minimal CA application .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBca\fR [\fB\-help\fR] [\fB\-verbose\fR] [\fB\-config filename\fR] [\fB\-name section\fR] [\fB\-gencrl\fR] [\fB\-revoke file\fR] [\fB\-valid file\fR] [\fB\-status serial\fR] [\fB\-updatedb\fR] [\fB\-crl_reason reason\fR] [\fB\-crl_hold instruction\fR] [\fB\-crl_compromise time\fR] [\fB\-crl_CA_compromise time\fR] [\fB\-crldays days\fR] [\fB\-crlhours hours\fR] [\fB\-crlexts section\fR] [\fB\-startdate date\fR] [\fB\-enddate date\fR] [\fB\-days arg\fR] [\fB\-md arg\fR] [\fB\-policy arg\fR] [\fB\-keyfile arg\fR] [\fB\-keyform PEM|DER\fR] [\fB\-key arg\fR] [\fB\-passin arg\fR] [\fB\-cert file\fR] [\fB\-selfsign\fR] [\fB\-in file\fR] [\fB\-out file\fR] [\fB\-notext\fR] [\fB\-outdir dir\fR] [\fB\-infiles\fR] [\fB\-spkac file\fR] [\fB\-ss_cert file\fR] [\fB\-preserveDN\fR] [\fB\-noemailDN\fR] [\fB\-batch\fR] [\fB\-msie_hack\fR] [\fB\-extensions section\fR] [\fB\-extfile section\fR] [\fB\-engine id\fR] [\fB\-subj arg\fR] [\fB\-utf8\fR] [\fB\-sigopt nm:v\fR] [\fB\-create_serial\fR] [\fB\-rand_serial\fR] [\fB\-multivalue\-rdn\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBca\fR command is a minimal \s-1CA\s0 application. It can be used to sign certificate requests in a variety of forms and generate CRLs it also maintains a text database of issued certificates and their status. .PP The options descriptions will be divided into each purpose. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-verbose\fR" 4 .IX Item "-verbose" This prints extra details about the operations being performed. .IP "\fB\-config filename\fR" 4 .IX Item "-config filename" Specifies the configuration file to use. Optional; for a description of the default value, see \*(L"\s-1COMMAND SUMMARY\*(R"\s0 in \fBopenssl\fR\|(1). .IP "\fB\-name section\fR" 4 .IX Item "-name section" Specifies the configuration file section to use (overrides \&\fBdefault_ca\fR in the \fBca\fR section). .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" An input filename containing a single certificate request to be signed by the \s-1CA.\s0 .IP "\fB\-ss_cert filename\fR" 4 .IX Item "-ss_cert filename" A single self-signed certificate to be signed by the \s-1CA.\s0 .IP "\fB\-spkac filename\fR" 4 .IX Item "-spkac filename" A file containing a single Netscape signed public key and challenge and additional field values to be signed by the \s-1CA.\s0 See the \fB\s-1SPKAC FORMAT\s0\fR section for information on the required input and output format. .IP "\fB\-infiles\fR" 4 .IX Item "-infiles" If present this should be the last option, all subsequent arguments are taken as the names of files containing certificate requests. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" The output file to output certificates to. The default is standard output. The certificate details will also be printed out to this file in \s-1PEM\s0 format (except that \fB\-spkac\fR outputs \s-1DER\s0 format). .IP "\fB\-outdir directory\fR" 4 .IX Item "-outdir directory" The directory to output certificates to. The certificate will be written to a filename consisting of the serial number in hex with \&\*(L".pem\*(R" appended. .IP "\fB\-cert\fR" 4 .IX Item "-cert" The \s-1CA\s0 certificate file. .IP "\fB\-keyfile filename\fR" 4 .IX Item "-keyfile filename" The private key to sign requests with. .IP "\fB\-keyform PEM|DER\fR" 4 .IX Item "-keyform PEM|DER" The format of the data in the private key file. The default is \s-1PEM.\s0 .IP "\fB\-sigopt nm:v\fR" 4 .IX Item "-sigopt nm:v" Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific. .IP "\fB\-key password\fR" 4 .IX Item "-key password" The password used to encrypt the private key. Since on some systems the command line arguments are visible (e.g. Unix with the 'ps' utility) this option should be used with caution. .IP "\fB\-selfsign\fR" 4 .IX Item "-selfsign" Indicates the issued certificates are to be signed with the key the certificate requests were signed with (given with \fB\-keyfile\fR). Certificate requests signed with a different key are ignored. If \&\fB\-spkac\fR, \fB\-ss_cert\fR or \fB\-gencrl\fR are given, \fB\-selfsign\fR is ignored. .Sp A consequence of using \fB\-selfsign\fR is that the self-signed certificate appears among the entries in the certificate database (see the configuration option \fBdatabase\fR), and uses the same serial number counter as all other certificates sign with the self-signed certificate. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-notext\fR" 4 .IX Item "-notext" Don't output the text form of a certificate to the output file. .IP "\fB\-startdate date\fR" 4 .IX Item "-startdate date" This allows the start date to be explicitly set. The format of the date is \s-1YYMMDDHHMMSSZ\s0 (the same as an \s-1ASN1\s0 UTCTime structure), or \&\s-1YYYYMMDDHHMMSSZ\s0 (the same as an \s-1ASN1\s0 GeneralizedTime structure). In both formats, seconds \s-1SS\s0 and timezone Z must be present. .IP "\fB\-enddate date\fR" 4 .IX Item "-enddate date" This allows the expiry date to be explicitly set. The format of the date is \s-1YYMMDDHHMMSSZ\s0 (the same as an \s-1ASN1\s0 UTCTime structure), or \&\s-1YYYYMMDDHHMMSSZ\s0 (the same as an \s-1ASN1\s0 GeneralizedTime structure). In both formats, seconds \s-1SS\s0 and timezone Z must be present. .IP "\fB\-days arg\fR" 4 .IX Item "-days arg" The number of days to certify the certificate for. .IP "\fB\-md alg\fR" 4 .IX Item "-md alg" The message digest to use. Any digest supported by the OpenSSL \fBdgst\fR command can be used. For signing algorithms that do not support a digest (i.e. Ed25519 and Ed448) any message digest that is set is ignored. This option also applies to CRLs. .IP "\fB\-policy arg\fR" 4 .IX Item "-policy arg" This option defines the \s-1CA\s0 \*(L"policy\*(R" to use. This is a section in the configuration file which decides which fields should be mandatory or match the \s-1CA\s0 certificate. Check out the \fB\s-1POLICY FORMAT\s0\fR section for more information. .IP "\fB\-msie_hack\fR" 4 .IX Item "-msie_hack" This is a deprecated option to make \fBca\fR work with very old versions of the \s-1IE\s0 certificate enrollment control \*(L"certenr3\*(R". It used UniversalStrings for almost everything. Since the old control has various security bugs its use is strongly discouraged. .IP "\fB\-preserveDN\fR" 4 .IX Item "-preserveDN" Normally the \s-1DN\s0 order of a certificate is the same as the order of the fields in the relevant policy section. When this option is set the order is the same as the request. This is largely for compatibility with the older \s-1IE\s0 enrollment control which would only accept certificates if their DNs match the order of the request. This is not needed for Xenroll. .IP "\fB\-noemailDN\fR" 4 .IX Item "-noemailDN" The \s-1DN\s0 of a certificate can contain the \s-1EMAIL\s0 field if present in the request \s-1DN,\s0 however, it is good policy just having the e\-mail set into the altName extension of the certificate. When this option is set the \&\s-1EMAIL\s0 field is removed from the certificate' subject and set only in the, eventually present, extensions. The \fBemail_in_dn\fR keyword can be used in the configuration file to enable this behaviour. .IP "\fB\-batch\fR" 4 .IX Item "-batch" This sets the batch mode. In this mode no questions will be asked and all certificates will be certified automatically. .IP "\fB\-extensions section\fR" 4 .IX Item "-extensions section" The section of the configuration file containing certificate extensions to be added when a certificate is issued (defaults to \fBx509_extensions\fR unless the \fB\-extfile\fR option is used). If no extension section is present then, a V1 certificate is created. If the extension section is present (even if it is empty), then a V3 certificate is created. See the \&\fBx509v3_config\fR\|(5) manual page for details of the extension section format. .IP "\fB\-extfile file\fR" 4 .IX Item "-extfile file" An additional configuration file to read certificate extensions from (using the default section unless the \fB\-extensions\fR option is also used). .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBca\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-subj arg\fR" 4 .IX Item "-subj arg" Supersedes subject name given in the request. The arg must be formatted as \fI/type0=value0/type1=value1/type2=...\fR. Keyword characters may be escaped by \e (backslash), and whitespace is retained. Empty values are permitted, but the corresponding type will not be included in the resulting certificate. .IP "\fB\-utf8\fR" 4 .IX Item "-utf8" This option causes field values to be interpreted as \s-1UTF8\s0 strings, by default they are interpreted as \s-1ASCII.\s0 This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid \s-1UTF8\s0 strings. .IP "\fB\-create_serial\fR" 4 .IX Item "-create_serial" If reading serial from the text file as specified in the configuration fails, specifying this option creates a new random serial to be used as next serial number. To get random serial numbers, use the \fB\-rand_serial\fR flag instead; this should only be used for simple error-recovery. .IP "\fB\-rand_serial\fR" 4 .IX Item "-rand_serial" Generate a large random number to use as the serial number. This overrides any option or configuration to use a serial number file. .IP "\fB\-multivalue\-rdn\fR" 4 .IX Item "-multivalue-rdn" This option causes the \-subj argument to be interpreted with full support for multivalued RDNs. Example: .Sp \&\fI/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe\fR .Sp If \-multi\-rdn is not used then the \s-1UID\s0 value is \fI123456+CN=John Doe\fR. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .SH "CRL OPTIONS" .IX Header "CRL OPTIONS" .IP "\fB\-gencrl\fR" 4 .IX Item "-gencrl" This option generates a \s-1CRL\s0 based on information in the index file. .IP "\fB\-crldays num\fR" 4 .IX Item "-crldays num" The number of days before the next \s-1CRL\s0 is due. That is the days from now to place in the \s-1CRL\s0 nextUpdate field. .IP "\fB\-crlhours num\fR" 4 .IX Item "-crlhours num" The number of hours before the next \s-1CRL\s0 is due. .IP "\fB\-revoke filename\fR" 4 .IX Item "-revoke filename" A filename containing a certificate to revoke. .IP "\fB\-valid filename\fR" 4 .IX Item "-valid filename" A filename containing a certificate to add a Valid certificate entry. .IP "\fB\-status serial\fR" 4 .IX Item "-status serial" Displays the revocation status of the certificate with the specified serial number and exits. .IP "\fB\-updatedb\fR" 4 .IX Item "-updatedb" Updates the database index to purge expired certificates. .IP "\fB\-crl_reason reason\fR" 4 .IX Item "-crl_reason reason" Revocation reason, where \fBreason\fR is one of: \fBunspecified\fR, \fBkeyCompromise\fR, \&\fBCACompromise\fR, \fBaffiliationChanged\fR, \fBsuperseded\fR, \fBcessationOfOperation\fR, \&\fBcertificateHold\fR or \fBremoveFromCRL\fR. The matching of \fBreason\fR is case insensitive. Setting any revocation reason will make the \s-1CRL\s0 v2. .Sp In practice \fBremoveFromCRL\fR is not particularly useful because it is only used in delta CRLs which are not currently implemented. .IP "\fB\-crl_hold instruction\fR" 4 .IX Item "-crl_hold instruction" This sets the \s-1CRL\s0 revocation reason code to \fBcertificateHold\fR and the hold instruction to \fBinstruction\fR which must be an \s-1OID.\s0 Although any \s-1OID\s0 can be used only \fBholdInstructionNone\fR (the use of which is discouraged by \s-1RFC2459\s0) \&\fBholdInstructionCallIssuer\fR or \fBholdInstructionReject\fR will normally be used. .IP "\fB\-crl_compromise time\fR" 4 .IX Item "-crl_compromise time" This sets the revocation reason to \fBkeyCompromise\fR and the compromise time to \&\fBtime\fR. \fBtime\fR should be in GeneralizedTime format that is \fB\s-1YYYYMMDDHHMMSSZ\s0\fR. .IP "\fB\-crl_CA_compromise time\fR" 4 .IX Item "-crl_CA_compromise time" This is the same as \fBcrl_compromise\fR except the revocation reason is set to \&\fBCACompromise\fR. .IP "\fB\-crlexts section\fR" 4 .IX Item "-crlexts section" The section of the configuration file containing \s-1CRL\s0 extensions to include. If no \s-1CRL\s0 extension section is present then a V1 \s-1CRL\s0 is created, if the \s-1CRL\s0 extension section is present (even if it is empty) then a V2 \s-1CRL\s0 is created. The \s-1CRL\s0 extensions specified are \&\s-1CRL\s0 extensions and \fBnot\fR \s-1CRL\s0 entry extensions. It should be noted that some software (for example Netscape) can't handle V2 CRLs. See \&\fBx509v3_config\fR\|(5) manual page for details of the extension section format. .SH "CONFIGURATION FILE OPTIONS" .IX Header "CONFIGURATION FILE OPTIONS" The section of the configuration file containing options for \fBca\fR is found as follows: If the \fB\-name\fR command line option is used, then it names the section to be used. Otherwise the section to be used must be named in the \fBdefault_ca\fR option of the \fBca\fR section of the configuration file (or in the default section of the configuration file). Besides \fBdefault_ca\fR, the following options are read directly from the \fBca\fR section: \s-1RANDFILE\s0 preserve msie_hack With the exception of \fB\s-1RANDFILE\s0\fR, this is probably a bug and may change in future releases. .PP Many of the configuration file options are identical to command line options. Where the option is present in the configuration file and the command line the command line value is used. Where an option is described as mandatory then it must be present in the configuration file or the command line equivalent (if any) used. .IP "\fBoid_file\fR" 4 .IX Item "oid_file" This specifies a file containing additional \fB\s-1OBJECT IDENTIFIERS\s0\fR. Each line of the file should consist of the numerical form of the object identifier followed by white space then the short name followed by white space and finally the long name. .IP "\fBoid_section\fR" 4 .IX Item "oid_section" This specifies a section in the configuration file containing extra object identifiers. Each line should consist of the short name of the object identifier followed by \fB=\fR and the numerical form. The short and long names are the same when this option is used. .IP "\fBnew_certs_dir\fR" 4 .IX Item "new_certs_dir" The same as the \fB\-outdir\fR command line option. It specifies the directory where new certificates will be placed. Mandatory. .IP "\fBcertificate\fR" 4 .IX Item "certificate" The same as \fB\-cert\fR. It gives the file containing the \s-1CA\s0 certificate. Mandatory. .IP "\fBprivate_key\fR" 4 .IX Item "private_key" Same as the \fB\-keyfile\fR option. The file containing the \&\s-1CA\s0 private key. Mandatory. .IP "\fB\s-1RANDFILE\s0\fR" 4 .IX Item "RANDFILE" At startup the specified file is loaded into the random number generator, and at exit 256 bytes will be written to it. .IP "\fBdefault_days\fR" 4 .IX Item "default_days" The same as the \fB\-days\fR option. The number of days to certify a certificate for. .IP "\fBdefault_startdate\fR" 4 .IX Item "default_startdate" The same as the \fB\-startdate\fR option. The start date to certify a certificate for. If not set the current time is used. .IP "\fBdefault_enddate\fR" 4 .IX Item "default_enddate" The same as the \fB\-enddate\fR option. Either this option or \&\fBdefault_days\fR (or the command line equivalents) must be present. .IP "\fBdefault_crl_hours default_crl_days\fR" 4 .IX Item "default_crl_hours default_crl_days" The same as the \fB\-crlhours\fR and the \fB\-crldays\fR options. These will only be used if neither command line option is present. At least one of these must be present to generate a \s-1CRL.\s0 .IP "\fBdefault_md\fR" 4 .IX Item "default_md" The same as the \fB\-md\fR option. Mandatory except where the signing algorithm does not require a digest (i.e. Ed25519 and Ed448). .IP "\fBdatabase\fR" 4 .IX Item "database" The text database file to use. Mandatory. This file must be present though initially it will be empty. .IP "\fBunique_subject\fR" 4 .IX Item "unique_subject" If the value \fByes\fR is given, the valid certificate entries in the database must have unique subjects. if the value \fBno\fR is given, several valid certificate entries may have the exact same subject. The default value is \fByes\fR, to be compatible with older (pre 0.9.8) versions of OpenSSL. However, to make \s-1CA\s0 certificate roll-over easier, it's recommended to use the value \fBno\fR, especially if combined with the \fB\-selfsign\fR command line option. .Sp Note that it is valid in some circumstances for certificates to be created without any subject. In the case where there are multiple certificates without subjects this does not count as a duplicate. .IP "\fBserial\fR" 4 .IX Item "serial" A text file containing the next serial number to use in hex. Mandatory. This file must be present and contain a valid serial number. .IP "\fBcrlnumber\fR" 4 .IX Item "crlnumber" A text file containing the next \s-1CRL\s0 number to use in hex. The crl number will be inserted in the CRLs only if this file exists. If this file is present, it must contain a valid \s-1CRL\s0 number. .IP "\fBx509_extensions\fR" 4 .IX Item "x509_extensions" The same as \fB\-extensions\fR. .IP "\fBcrl_extensions\fR" 4 .IX Item "crl_extensions" The same as \fB\-crlexts\fR. .IP "\fBpreserve\fR" 4 .IX Item "preserve" The same as \fB\-preserveDN\fR .IP "\fBemail_in_dn\fR" 4 .IX Item "email_in_dn" The same as \fB\-noemailDN\fR. If you want the \s-1EMAIL\s0 field to be removed from the \s-1DN\s0 of the certificate simply set this to 'no'. If not present the default is to allow for the \s-1EMAIL\s0 filed in the certificate's \s-1DN.\s0 .IP "\fBmsie_hack\fR" 4 .IX Item "msie_hack" The same as \fB\-msie_hack\fR .IP "\fBpolicy\fR" 4 .IX Item "policy" The same as \fB\-policy\fR. Mandatory. See the \fB\s-1POLICY FORMAT\s0\fR section for more information. .IP "\fBname_opt\fR, \fBcert_opt\fR" 4 .IX Item "name_opt, cert_opt" These options allow the format used to display the certificate details when asking the user to confirm signing. All the options supported by the \fBx509\fR utilities \fB\-nameopt\fR and \fB\-certopt\fR switches can be used here, except the \fBno_signame\fR and \fBno_sigdump\fR are permanently set and cannot be disabled (this is because the certificate signature cannot be displayed because the certificate has not been signed at this point). .Sp For convenience the values \fBca_default\fR are accepted by both to produce a reasonable output. .Sp If neither option is present the format used in earlier versions of OpenSSL is used. Use of the old format is \fBstrongly\fR discouraged because it only displays fields mentioned in the \fBpolicy\fR section, mishandles multicharacter string types and does not display extensions. .IP "\fBcopy_extensions\fR" 4 .IX Item "copy_extensions" Determines how extensions in certificate requests should be handled. If set to \fBnone\fR or this option is not present then extensions are ignored and not copied to the certificate. If set to \fBcopy\fR then any extensions present in the request that are not already present are copied to the certificate. If set to \fBcopyall\fR then all extensions in the request are copied to the certificate: if the extension is already present in the certificate it is deleted first. See the \fB\s-1WARNINGS\s0\fR section before using this option. .Sp The main use of this option is to allow a certificate request to supply values for certain extensions such as subjectAltName. .SH "POLICY FORMAT" .IX Header "POLICY FORMAT" The policy section consists of a set of variables corresponding to certificate \s-1DN\s0 fields. If the value is \*(L"match\*(R" then the field value must match the same field in the \s-1CA\s0 certificate. If the value is \&\*(L"supplied\*(R" then it must be present. If the value is \*(L"optional\*(R" then it may be present. Any fields not mentioned in the policy section are silently deleted, unless the \fB\-preserveDN\fR option is set but this can be regarded more of a quirk than intended behaviour. .SH "SPKAC FORMAT" .IX Header "SPKAC FORMAT" The input to the \fB\-spkac\fR command line option is a Netscape signed public key and challenge. This will usually come from the \fB\s-1KEYGEN\s0\fR tag in an \s-1HTML\s0 form to create a new private key. It is however possible to create SPKACs using the \fBspkac\fR utility. .PP The file should contain the variable \s-1SPKAC\s0 set to the value of the \s-1SPKAC\s0 and also the required \s-1DN\s0 components as name value pairs. If you need to include the same component twice then it can be preceded by a number and a '.'. .PP When processing \s-1SPKAC\s0 format, the output is \s-1DER\s0 if the \fB\-out\fR flag is used, but \s-1PEM\s0 format if sending to stdout or the \fB\-outdir\fR flag is used. .SH "EXAMPLES" .IX Header "EXAMPLES" Note: these examples assume that the \fBca\fR directory structure is already set up and the relevant files already exist. This usually involves creating a \s-1CA\s0 certificate and private key with \fBreq\fR, a serial number file and an empty index file and placing them in the relevant directories. .PP To use the sample configuration file below the directories demoCA, demoCA/private and demoCA/newcerts would be created. The \s-1CA\s0 certificate would be copied to demoCA/cacert.pem and its private key to demoCA/private/cakey.pem. A file demoCA/serial would be created containing for example \*(L"01\*(R" and the empty index file demoCA/index.txt. .PP Sign a certificate request: .PP .Vb 1 \& openssl ca \-in req.pem \-out newcert.pem .Ve .PP Sign a certificate request, using \s-1CA\s0 extensions: .PP .Vb 1 \& openssl ca \-in req.pem \-extensions v3_ca \-out newcert.pem .Ve .PP Generate a \s-1CRL\s0 .PP .Vb 1 \& openssl ca \-gencrl \-out crl.pem .Ve .PP Sign several requests: .PP .Vb 1 \& openssl ca \-infiles req1.pem req2.pem req3.pem .Ve .PP Certify a Netscape \s-1SPKAC:\s0 .PP .Vb 1 \& openssl ca \-spkac spkac.txt .Ve .PP A sample \s-1SPKAC\s0 file (the \s-1SPKAC\s0 line has been truncated for clarity): .PP .Vb 5 \& SPKAC=MIG0MGAwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PDhCeV/xIxUg8V70YRxK2A5 \& CN=Steve Test \& emailAddress=steve@openssl.org \& 0.OU=OpenSSL Group \& 1.OU=Another Group .Ve .PP A sample configuration file with the relevant sections for \fBca\fR: .PP .Vb 2 \& [ ca ] \& default_ca = CA_default # The default ca section \& \& [ CA_default ] \& \& dir = ./demoCA # top dir \& database = $dir/index.txt # index file. \& new_certs_dir = $dir/newcerts # new certs dir \& \& certificate = $dir/cacert.pem # The CA cert \& serial = $dir/serial # serial no file \& #rand_serial = yes # for random serial#\*(Aqs \& private_key = $dir/private/cakey.pem# CA private key \& RANDFILE = $dir/private/.rand # random number file \& \& default_days = 365 # how long to certify for \& default_crl_days= 30 # how long before next CRL \& default_md = md5 # md to use \& \& policy = policy_any # default policy \& email_in_dn = no # Don\*(Aqt add the email into cert DN \& \& name_opt = ca_default # Subject name display option \& cert_opt = ca_default # Certificate display option \& copy_extensions = none # Don\*(Aqt copy extensions from request \& \& [ policy_any ] \& countryName = supplied \& stateOrProvinceName = optional \& organizationName = optional \& organizationalUnitName = optional \& commonName = supplied \& emailAddress = optional .Ve .SH "FILES" .IX Header "FILES" Note: the location of all files can change either by compile time options, configuration file entries, environment variables or command line options. The values below reflect the default values. .PP .Vb 10 \& /usr/local/ssl/lib/openssl.cnf \- master configuration file \& ./demoCA \- main CA directory \& ./demoCA/cacert.pem \- CA certificate \& ./demoCA/private/cakey.pem \- CA private key \& ./demoCA/serial \- CA serial number file \& ./demoCA/serial.old \- CA serial number backup file \& ./demoCA/index.txt \- CA text database file \& ./demoCA/index.txt.old \- CA text database backup file \& ./demoCA/certs \- certificate output file \& ./demoCA/.rnd \- CA random seed information .Ve .SH "RESTRICTIONS" .IX Header "RESTRICTIONS" The text database index file is a critical part of the process and if corrupted it can be difficult to fix. It is theoretically possible to rebuild the index file from all the issued certificates and a current \&\s-1CRL:\s0 however there is no option to do this. .PP V2 \s-1CRL\s0 features like delta CRLs are not currently supported. .PP Although several requests can be input and handled at once it is only possible to include one \s-1SPKAC\s0 or self-signed certificate. .SH "BUGS" .IX Header "BUGS" The use of an in-memory text database can cause problems when large numbers of certificates are present because, as the name implies the database has to be kept in memory. .PP The \fBca\fR command really needs rewriting or the required functionality exposed at either a command or interface level so a more friendly utility (perl script or \s-1GUI\s0) can handle things properly. The script \&\fB\s-1CA\s0.pl\fR helps a little but not very much. .PP Any fields in a request that are not present in a policy are silently deleted. This does not happen if the \fB\-preserveDN\fR option is used. To enforce the absence of the \s-1EMAIL\s0 field within the \s-1DN,\s0 as suggested by RFCs, regardless the contents of the request' subject the \fB\-noemailDN\fR option can be used. The behaviour should be more friendly and configurable. .PP Canceling some commands by refusing to certify a certificate can create an empty file. .SH "WARNINGS" .IX Header "WARNINGS" The \fBca\fR command is quirky and at times downright unfriendly. .PP The \fBca\fR utility was originally meant as an example of how to do things in a \s-1CA.\s0 It was not supposed to be used as a full blown \s-1CA\s0 itself: nevertheless some people are using it for this purpose. .PP The \fBca\fR command is effectively a single user command: no locking is done on the various files and attempts to run more than one \fBca\fR command on the same database can have unpredictable results. .PP The \fBcopy_extensions\fR option should be used with caution. If care is not taken then it can be a security risk. For example if a certificate request contains a basicConstraints extension with \s-1CA:TRUE\s0 and the \&\fBcopy_extensions\fR value is set to \fBcopyall\fR and the user does not spot this when the certificate is displayed then this will hand the requester a valid \s-1CA\s0 certificate. .PP This situation can be avoided by setting \fBcopy_extensions\fR to \fBcopy\fR and including basicConstraints with \s-1CA:FALSE\s0 in the configuration file. Then if the request contains a basicConstraints extension it will be ignored. .PP It is advisable to also include values for other extensions such as \fBkeyUsage\fR to prevent a request supplying its own values. .PP Additional restrictions can be placed on the \s-1CA\s0 certificate itself. For example if the \s-1CA\s0 certificate has: .PP .Vb 1 \& basicConstraints = CA:TRUE, pathlen:0 .Ve .PP then even if a certificate is issued with \s-1CA:TRUE\s0 it will not be valid. .SH "HISTORY" .IX Header "HISTORY" Since OpenSSL 1.1.1, the program follows \s-1RFC5280.\s0 Specifically, certificate validity period (specified by any of \fB\-startdate\fR, \&\fB\-enddate\fR and \fB\-days\fR) will be encoded as UTCTime if the dates are earlier than year 2049 (included), and as GeneralizedTime if the dates are in year 2050 or later. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBreq\fR\|(1), \fBspkac\fR\|(1), \fBx509\fR\|(1), \s-1\fBCA\s0.pl\fR\|(1), \&\fBconfig\fR\|(5), \fBx509v3_config\fR\|(5) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!\cIecrl.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CRL 1" .TH CRL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-crl, crl \- CRL utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBcrl\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-text\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-nameopt option\fR] [\fB\-noout\fR] [\fB\-hash\fR] [\fB\-issuer\fR] [\fB\-lastupdate\fR] [\fB\-nextupdate\fR] [\fB\-CAfile file\fR] [\fB\-CApath dir\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBcrl\fR command processes \s-1CRL\s0 files in \s-1DER\s0 or \s-1PEM\s0 format. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. \fB\s-1DER\s0\fR format is \s-1DER\s0 encoded \s-1CRL\s0 structure. \fB\s-1PEM\s0\fR (the default) is a base64 encoded version of the \s-1DER\s0 form with header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write to or standard output by default. .IP "\fB\-text\fR" 4 .IX Item "-text" Print out the \s-1CRL\s0 in text form. .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. See the description of \fB\-nameopt\fR in \fBx509\fR\|(1). .IP "\fB\-noout\fR" 4 .IX Item "-noout" Don't output the encoded version of the \s-1CRL.\s0 .IP "\fB\-hash\fR" 4 .IX Item "-hash" Output a hash of the issuer name. This can be use to lookup CRLs in a directory by issuer name. .IP "\fB\-hash_old\fR" 4 .IX Item "-hash_old" Outputs the \*(L"hash\*(R" of the \s-1CRL\s0 issuer name using the older algorithm as used by OpenSSL before version 1.0.0. .IP "\fB\-issuer\fR" 4 .IX Item "-issuer" Output the issuer name. .IP "\fB\-lastupdate\fR" 4 .IX Item "-lastupdate" Output the lastUpdate field. .IP "\fB\-nextupdate\fR" 4 .IX Item "-nextupdate" Output the nextUpdate field. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" Verify the signature on a \s-1CRL\s0 by looking up the issuing certificate in \&\fBfile\fR. .IP "\fB\-CApath dir\fR" 4 .IX Item "-CApath dir" Verify the signature on a \s-1CRL\s0 by looking up the issuing certificate in \&\fBdir\fR. This directory must be a standard certificate directory: that is a hash of each subject name (using \fBx509 \-hash\fR) should be linked to each certificate. .SH "NOTES" .IX Header "NOTES" The \s-1PEM CRL\s0 format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN X509 CRL\-\-\-\-\- \& \-\-\-\-\-END X509 CRL\-\-\-\-\- .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" Convert a \s-1CRL\s0 file from \s-1PEM\s0 to \s-1DER:\s0 .PP .Vb 1 \& openssl crl \-in crl.pem \-outform DER \-out crl.der .Ve .PP Output the text form of a \s-1DER\s0 encoded certificate: .PP .Vb 1 \& openssl crl \-in crl.der \-inform DER \-text \-noout .Ve .SH "BUGS" .IX Header "BUGS" Ideally it should be possible to create a \s-1CRL\s0 using appropriate options and files too. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBcrl2pkcs7\fR\|(1), \fBca\fR\|(1), \fBx509\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!xl crl2pkcs7.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CRL2PKCS7 1" .TH CRL2PKCS7 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-crl2pkcs7, crl2pkcs7 \- Create a PKCS#7 structure from a CRL and certificates .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBcrl2pkcs7\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-certfile filename\fR] [\fB\-nocrl\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBcrl2pkcs7\fR command takes an optional \s-1CRL\s0 and one or more certificates and converts them into a PKCS#7 degenerate \*(L"certificates only\*(R" structure. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the \s-1CRL\s0 input format. \fB\s-1DER\s0\fR format is \s-1DER\s0 encoded \s-1CRL\s0 structure.\fB\s-1PEM\s0\fR (the default) is a base64 encoded version of the \s-1DER\s0 form with header and footer lines. The default format is \s-1PEM.\s0 .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the PKCS#7 structure output format. \fB\s-1DER\s0\fR format is \s-1DER\s0 encoded PKCS#7 structure.\fB\s-1PEM\s0\fR (the default) is a base64 encoded version of the \s-1DER\s0 form with header and footer lines. The default format is \s-1PEM.\s0 .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a \s-1CRL\s0 from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write the PKCS#7 structure to or standard output by default. .IP "\fB\-certfile filename\fR" 4 .IX Item "-certfile filename" Specifies a filename containing one or more certificates in \fB\s-1PEM\s0\fR format. All certificates in the file will be added to the PKCS#7 structure. This option can be used more than once to read certificates from multiple files. .IP "\fB\-nocrl\fR" 4 .IX Item "-nocrl" Normally a \s-1CRL\s0 is included in the output file. With this option no \s-1CRL\s0 is included in the output file and a \s-1CRL\s0 is not read from the input file. .SH "EXAMPLES" .IX Header "EXAMPLES" Create a PKCS#7 structure from a certificate and \s-1CRL:\s0 .PP .Vb 1 \& openssl crl2pkcs7 \-in crl.pem \-certfile cert.pem \-out p7.pem .Ve .PP Creates a PKCS#7 structure in \s-1DER\s0 format with no \s-1CRL\s0 from several different certificates: .PP .Vb 2 \& openssl crl2pkcs7 \-nocrl \-certfile newcert.pem \& \-certfile demoCA/cacert.pem \-outform DER \-out p7.der .Ve .SH "NOTES" .IX Header "NOTES" The output file is a PKCS#7 signed data structure containing no signers and just certificates and an optional \s-1CRL.\s0 .PP This utility can be used to send certificates and CAs to Netscape as part of the certificate enrollment process. This involves sending the \s-1DER\s0 encoded output as \s-1MIME\s0 type application/x\-x509\-user\-cert. .PP The \fB\s-1PEM\s0\fR encoded form with the header and footer lines removed can be used to install user certificates and CAs in \s-1MSIE\s0 using the Xenroll control. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBpkcs7\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!'7Q0Q0CA.pl.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CA.PL 1" .TH CA.PL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" CA.pl \- friendlier interface for OpenSSL certificate programs .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fB\s-1CA\s0.pl\fR \&\fB\-?\fR | \&\fB\-h\fR | \&\fB\-help\fR .PP \&\fB\s-1CA\s0.pl\fR \&\fB\-newcert\fR | \&\fB\-newreq\fR | \&\fB\-newreq\-nodes\fR | \&\fB\-xsign\fR | \&\fB\-sign\fR | \&\fB\-signCA\fR | \&\fB\-signcert\fR | \&\fB\-crl\fR | \&\fB\-newca\fR [\fB\-extra\-cmd\fR extra\-params] .PP \&\fB\s-1CA\s0.pl\fR \fB\-pkcs12\fR [\fB\-extra\-pkcs12\fR extra\-params] [\fBcertname\fR] .PP \&\fB\s-1CA\s0.pl\fR \fB\-verify\fR [\fB\-extra\-verify\fR extra\-params] \fBcertfile\fR... .PP \&\fB\s-1CA\s0.pl\fR \fB\-revoke\fR [\fB\-extra\-ca\fR extra\-params] \fBcertfile\fR [\fBreason\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fB\s-1CA\s0.pl\fR script is a perl script that supplies the relevant command line arguments to the \fBopenssl\fR command for some common certificate operations. It is intended to simplify the process of certificate creation and management by the use of some simple options. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB?\fR, \fB\-h\fR, \fB\-help\fR" 4 .IX Item "?, -h, -help" Prints a usage message. .IP "\fB\-newcert\fR" 4 .IX Item "-newcert" Creates a new self signed certificate. The private key is written to the file \&\*(L"newkey.pem\*(R" and the request written to the file \*(L"newreq.pem\*(R". This argument invokes \fBopenssl req\fR command. .IP "\fB\-newreq\fR" 4 .IX Item "-newreq" Creates a new certificate request. The private key is written to the file \&\*(L"newkey.pem\*(R" and the request written to the file \*(L"newreq.pem\*(R". Executes \fBopenssl req\fR command below the hood. .IP "\fB\-newreq\-nodes\fR" 4 .IX Item "-newreq-nodes" Is like \fB\-newreq\fR except that the private key will not be encrypted. Uses \fBopenssl req\fR command. .IP "\fB\-newca\fR" 4 .IX Item "-newca" Creates a new \s-1CA\s0 hierarchy for use with the \fBca\fR program (or the \fB\-signcert\fR and \fB\-xsign\fR options). The user is prompted to enter the filename of the \s-1CA\s0 certificates (which should also contain the private key) or by hitting \s-1ENTER\s0 details of the \s-1CA\s0 will be prompted for. The relevant files and directories are created in a directory called \*(L"demoCA\*(R" in the current directory. \&\fBopenssl req\fR and \fBopenssl ca\fR commands are get invoked. .IP "\fB\-pkcs12\fR" 4 .IX Item "-pkcs12" Create a PKCS#12 file containing the user certificate, private key and \s-1CA\s0 certificate. It expects the user certificate and private key to be in the file \*(L"newcert.pem\*(R" and the \s-1CA\s0 certificate to be in the file demoCA/cacert.pem, it creates a file \*(L"newcert.p12\*(R". This command can thus be called after the \&\fB\-sign\fR option. The PKCS#12 file can be imported directly into a browser. If there is an additional argument on the command line it will be used as the \&\*(L"friendly name\*(R" for the certificate (which is typically displayed in the browser list box), otherwise the name \*(L"My Certificate\*(R" is used. Delegates work to \fBopenssl pkcs12\fR command. .IP "\fB\-sign\fR, \fB\-signcert\fR, \fB\-xsign\fR" 4 .IX Item "-sign, -signcert, -xsign" Calls the \fBca\fR program to sign a certificate request. It expects the request to be in the file \*(L"newreq.pem\*(R". The new certificate is written to the file \&\*(L"newcert.pem\*(R" except in the case of the \fB\-xsign\fR option when it is written to standard output. Leverages \fBopenssl ca\fR command. .IP "\fB\-signCA\fR" 4 .IX Item "-signCA" This option is the same as the \fB\-sign\fR option except it uses the configuration file section \fBv3_ca\fR and so makes the signed request a valid \s-1CA\s0 certificate. This is useful when creating intermediate \s-1CA\s0 from a root \s-1CA.\s0 Extra params are passed on to \fBopenssl ca\fR command. .IP "\fB\-signcert\fR" 4 .IX Item "-signcert" This option is the same as \fB\-sign\fR except it expects a self signed certificate to be present in the file \*(L"newreq.pem\*(R". Extra params are passed on to \fBopenssl x509\fR and \fBopenssl ca\fR commands. .IP "\fB\-crl\fR" 4 .IX Item "-crl" Generate a \s-1CRL.\s0 Executes \fBopenssl ca\fR command. .IP "\fB\-revoke certfile [reason]\fR" 4 .IX Item "-revoke certfile [reason]" Revoke the certificate contained in the specified \fBcertfile\fR. An optional reason may be specified, and must be one of: \fBunspecified\fR, \&\fBkeyCompromise\fR, \fBCACompromise\fR, \fBaffiliationChanged\fR, \fBsuperseded\fR, \&\fBcessationOfOperation\fR, \fBcertificateHold\fR, or \fBremoveFromCRL\fR. Leverages \fBopenssl ca\fR command. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verifies certificates against the \s-1CA\s0 certificate for \*(L"demoCA\*(R". If no certificates are specified on the command line it tries to verify the file \&\*(L"newcert.pem\*(R". Invokes \fBopenssl verify\fR command. .IP "\fB\-extra\-req\fR | \fB\-extra\-ca\fR | \fB\-extra\-pkcs12\fR | \fB\-extra\-x509\fR | \fB\-extra\-verify\fR " 4 .IX Item "-extra-req | -extra-ca | -extra-pkcs12 | -extra-x509 | -extra-verify " The purpose of these parameters is to allow optional parameters to be supplied to \fBopenssl\fR that this command executes. The \fB\-extra\-cmd\fR are specific to the option being used and the \fBopenssl\fR command getting invoked. For example when this command invokes \fBopenssl req\fR extra parameters can be passed on with the \fB\-extra\-req\fR parameter. The \&\fBopenssl\fR commands being invoked per option are documented below. Users should consult \fBopenssl\fR command documentation for more information. .SH "EXAMPLES" .IX Header "EXAMPLES" Create a \s-1CA\s0 hierarchy: .PP .Vb 1 \& CA.pl \-newca .Ve .PP Complete certificate creation example: create a \s-1CA,\s0 create a request, sign the request and finally create a PKCS#12 file containing it. .PP .Vb 4 \& CA.pl \-newca \& CA.pl \-newreq \& CA.pl \-sign \& CA.pl \-pkcs12 "My Test Certificate" .Ve .SH "DSA CERTIFICATES" .IX Header "DSA CERTIFICATES" Although the \fB\s-1CA\s0.pl\fR creates \s-1RSA\s0 CAs and requests it is still possible to use it with \s-1DSA\s0 certificates and requests using the \fBreq\fR\|(1) command directly. The following example shows the steps that would typically be taken. .PP Create some \s-1DSA\s0 parameters: .PP .Vb 1 \& openssl dsaparam \-out dsap.pem 1024 .Ve .PP Create a \s-1DSA CA\s0 certificate and private key: .PP .Vb 1 \& openssl req \-x509 \-newkey dsa:dsap.pem \-keyout cacert.pem \-out cacert.pem .Ve .PP Create the \s-1CA\s0 directories and files: .PP .Vb 1 \& CA.pl \-newca .Ve .PP enter cacert.pem when prompted for the \s-1CA\s0 filename. .PP Create a \s-1DSA\s0 certificate request and private key (a different set of parameters can optionally be created first): .PP .Vb 1 \& openssl req \-out newreq.pem \-newkey dsa:dsap.pem .Ve .PP Sign the request: .PP .Vb 1 \& CA.pl \-sign .Ve .SH "NOTES" .IX Header "NOTES" Most of the filenames mentioned can be modified by editing the \fB\s-1CA\s0.pl\fR script. .PP If the demoCA directory already exists then the \fB\-newca\fR command will not overwrite it and will do nothing. This can happen if a previous call using the \fB\-newca\fR option terminated abnormally. To get the correct behaviour delete the demoCA directory if it already exists. .PP Under some environments it may not be possible to run the \fB\s-1CA\s0.pl\fR script directly (for example Win32) and the default configuration file location may be wrong. In this case the command: .PP .Vb 1 \& perl \-S CA.pl .Ve .PP can be used and the \fB\s-1OPENSSL_CONF\s0\fR environment variable changed to point to the correct path of the configuration file. .PP The script is intended as a simple front end for the \fBopenssl\fR program for use by a beginner. Its behaviour isn't always what is wanted. For more control over the behaviour of the certificate commands call the \fBopenssl\fR command directly. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBx509\fR\|(1), \fBca\fR\|(1), \fBreq\fR\|(1), \fBpkcs12\fR\|(1), \&\fBconfig\fR\|(5) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!%< < genrsa.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GENRSA 1" .TH GENRSA 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-genrsa, genrsa \- generate an RSA private key .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBgenrsa\fR [\fB\-help\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-aes128\fR] [\fB\-aes192\fR] [\fB\-aes256\fR] [\fB\-aria128\fR] [\fB\-aria192\fR] [\fB\-aria256\fR] [\fB\-camellia128\fR] [\fB\-camellia192\fR] [\fB\-camellia256\fR] [\fB\-des\fR] [\fB\-des3\fR] [\fB\-idea\fR] [\fB\-f4\fR] [\fB\-3\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] [\fB\-primes num\fR] [\fBnumbits\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBgenrsa\fR command generates an \s-1RSA\s0 private key. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Output the key to the specified file. If this argument is not specified then standard output is used. .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-aes128\fR, \fB\-aes192\fR, \fB\-aes256\fR, \fB\-aria128\fR, \fB\-aria192\fR, \fB\-aria256\fR, \fB\-camellia128\fR, \fB\-camellia192\fR, \fB\-camellia256\fR, \fB\-des\fR, \fB\-des3\fR, \fB\-idea\fR" 4 .IX Item "-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea" These options encrypt the private key with specified cipher before outputting it. If none of these options is specified no encryption is used. If encryption is used a pass phrase is prompted for if it is not supplied via the \fB\-passout\fR argument. .IP "\fB\-F4|\-3\fR" 4 .IX Item "-F4|-3" The public exponent to use, either 65537 or 3. The default is 65537. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBgenrsa\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-primes num\fR" 4 .IX Item "-primes num" Specify the number of primes to use while generating the \s-1RSA\s0 key. The \fBnum\fR parameter must be a positive integer that is greater than 1 and less than 16. If \fBnum\fR is greater than 2, then the generated key is called a 'multi\-prime' \&\s-1RSA\s0 key, which is defined in \s-1RFC 8017.\s0 .IP "\fBnumbits\fR" 4 .IX Item "numbits" The size of the private key to generate in bits. This must be the last option specified. The default is 2048 and values less than 512 are not allowed. .SH "NOTES" .IX Header "NOTES" \&\s-1RSA\s0 private key generation essentially involves the generation of two or more prime numbers. When generating a private key various symbols will be output to indicate the progress of the generation. A \fB.\fR represents each number which has passed an initial sieve test, \fB+\fR means a number has passed a single round of the Miller-Rabin primality test, \fB*\fR means the current prime starts a regenerating progress due to some failed tests. A newline means that the number has passed all the prime tests (the actual number depends on the key size). .PP Because key generation is a random process the time taken to generate a key may vary somewhat. But in general, more primes lead to less generation time of a key. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBgendsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!xM>> genpkey.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GENPKEY 1" .TH GENPKEY 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-genpkey, genpkey \- generate a private key .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBgenpkey\fR [\fB\-help\fR] [\fB\-out filename\fR] [\fB\-outform PEM|DER\fR] [\fB\-pass arg\fR] [\fB\-\f(BIcipher\fB\fR] [\fB\-engine id\fR] [\fB\-paramfile file\fR] [\fB\-algorithm alg\fR] [\fB\-pkeyopt opt:value\fR] [\fB\-genparam\fR] [\fB\-text\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBgenpkey\fR command generates a private key. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Output the key to the specified file. If this argument is not specified then standard output is used. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format \s-1DER\s0 or \s-1PEM.\s0 The default format is \s-1PEM.\s0 .IP "\fB\-pass arg\fR" 4 .IX Item "-pass arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-\f(BIcipher\fB\fR" 4 .IX Item "-cipher" This option encrypts the private key with the supplied cipher. Any algorithm name accepted by \fBEVP_get_cipherbyname()\fR is acceptable such as \fBdes3\fR. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBgenpkey\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. If used this option should precede all other options. .IP "\fB\-algorithm alg\fR" 4 .IX Item "-algorithm alg" Public key algorithm to use such as \s-1RSA, DSA\s0 or \s-1DH.\s0 If used this option must precede any \fB\-pkeyopt\fR options. The options \fB\-paramfile\fR and \fB\-algorithm\fR are mutually exclusive. Engines may add algorithms in addition to the standard built-in ones. .Sp Valid built-in algorithm names for private key generation are \s-1RSA,\s0 RSA-PSS, \s-1EC, X25519, X448, ED25519\s0 and \s-1ED448.\s0 .Sp Valid built-in algorithm names for parameter generation (see the \fB\-genparam\fR option) are \s-1DH, DSA\s0 and \s-1EC.\s0 .Sp Note that the algorithm name X9.42 \s-1DH\s0 may be used as a synonym for the \s-1DH\s0 algorithm. These are identical and do not indicate the type of parameters that will be generated. Use the \fBdh_paramgen_type\fR option to indicate whether PKCS#3 or X9.42 \s-1DH\s0 parameters are required. See \*(L"\s-1DH\s0 Parameter Generation Options\*(R" below for more details. .IP "\fB\-pkeyopt opt:value\fR" 4 .IX Item "-pkeyopt opt:value" Set the public key algorithm option \fBopt\fR to \fBvalue\fR. The precise set of options supported depends on the public key algorithm used and its implementation. See \*(L"\s-1KEY GENERATION OPTIONS\*(R"\s0 and \&\*(L"\s-1PARAMETER GENERATION OPTIONS\*(R"\s0 below for more details. .IP "\fB\-genparam\fR" 4 .IX Item "-genparam" Generate a set of parameters instead of a private key. If used this option must precede any \fB\-algorithm\fR, \fB\-paramfile\fR or \fB\-pkeyopt\fR options. .IP "\fB\-paramfile filename\fR" 4 .IX Item "-paramfile filename" Some public key algorithms generate a private key based on a set of parameters. They can be supplied using this option. If this option is used the public key algorithm used is determined by the parameters. If used this option must precede any \fB\-pkeyopt\fR options. The options \fB\-paramfile\fR and \fB\-algorithm\fR are mutually exclusive. .IP "\fB\-text\fR" 4 .IX Item "-text" Print an (unencrypted) text representation of private and public keys and parameters along with the \s-1PEM\s0 or \s-1DER\s0 structure. .SH "KEY GENERATION OPTIONS" .IX Header "KEY GENERATION OPTIONS" The options supported by each algorithm and indeed each implementation of an algorithm can vary. The options for the OpenSSL implementations are detailed below. There are no key generation options defined for the X25519, X448, \s-1ED25519\s0 or \s-1ED448\s0 algorithms. .SS "\s-1RSA\s0 Key Generation Options" .IX Subsection "RSA Key Generation Options" .IP "\fBrsa_keygen_bits:numbits\fR" 4 .IX Item "rsa_keygen_bits:numbits" The number of bits in the generated key. If not specified 2048 is used. .IP "\fBrsa_keygen_primes:numprimes\fR" 4 .IX Item "rsa_keygen_primes:numprimes" The number of primes in the generated key. If not specified 2 is used. .IP "\fBrsa_keygen_pubexp:value\fR" 4 .IX Item "rsa_keygen_pubexp:value" The \s-1RSA\s0 public exponent value. This can be a large decimal or hexadecimal value if preceded by \fB0x\fR. Default value is 65537. .SS "RSA-PSS Key Generation Options" .IX Subsection "RSA-PSS Key Generation Options" Note: by default an \fBRSA-PSS\fR key has no parameter restrictions. .IP "\fBrsa_keygen_bits:numbits\fR, \fBrsa_keygen_primes:numprimes\fR, \fBrsa_keygen_pubexp:value\fR" 4 .IX Item "rsa_keygen_bits:numbits, rsa_keygen_primes:numprimes, rsa_keygen_pubexp:value" These options have the same meaning as the \fB\s-1RSA\s0\fR algorithm. .IP "\fBrsa_pss_keygen_md:digest\fR" 4 .IX Item "rsa_pss_keygen_md:digest" If set the key is restricted and can only use \fBdigest\fR for signing. .IP "\fBrsa_pss_keygen_mgf1_md:digest\fR" 4 .IX Item "rsa_pss_keygen_mgf1_md:digest" If set the key is restricted and can only use \fBdigest\fR as it's \s-1MGF1\s0 parameter. .IP "\fBrsa_pss_keygen_saltlen:len\fR" 4 .IX Item "rsa_pss_keygen_saltlen:len" If set the key is restricted and \fBlen\fR specifies the minimum salt length. .SS "\s-1EC\s0 Key Generation Options" .IX Subsection "EC Key Generation Options" The \s-1EC\s0 key generation options can also be used for parameter generation. .IP "\fBec_paramgen_curve:curve\fR" 4 .IX Item "ec_paramgen_curve:curve" The \s-1EC\s0 curve to use. OpenSSL supports \s-1NIST\s0 curve names such as \*(L"P\-256\*(R". .IP "\fBec_param_enc:encoding\fR" 4 .IX Item "ec_param_enc:encoding" The encoding to use for parameters. The \*(L"encoding\*(R" parameter must be either \&\*(L"named_curve\*(R" or \*(L"explicit\*(R". The default value is \*(L"named_curve\*(R". .SH "PARAMETER GENERATION OPTIONS" .IX Header "PARAMETER GENERATION OPTIONS" The options supported by each algorithm and indeed each implementation of an algorithm can vary. The options for the OpenSSL implementations are detailed below. .SS "\s-1DSA\s0 Parameter Generation Options" .IX Subsection "DSA Parameter Generation Options" .IP "\fBdsa_paramgen_bits:numbits\fR" 4 .IX Item "dsa_paramgen_bits:numbits" The number of bits in the generated prime. If not specified 2048 is used. .IP "\fBdsa_paramgen_q_bits:numbits\fR" 4 .IX Item "dsa_paramgen_q_bits:numbits" The number of bits in the q parameter. Must be one of 160, 224 or 256. If not specified 224 is used. .IP "\fBdsa_paramgen_md:digest\fR" 4 .IX Item "dsa_paramgen_md:digest" The digest to use during parameter generation. Must be one of \fBsha1\fR, \fBsha224\fR or \fBsha256\fR. If set, then the number of bits in \fBq\fR will match the output size of the specified digest and the \fBdsa_paramgen_q_bits\fR parameter will be ignored. If not set, then a digest will be used that gives an output matching the number of bits in \fBq\fR, i.e. \fBsha1\fR if q length is 160, \fBsha224\fR if it 224 or \fBsha256\fR if it is 256. .SS "\s-1DH\s0 Parameter Generation Options" .IX Subsection "DH Parameter Generation Options" .IP "\fBdh_paramgen_prime_len:numbits\fR" 4 .IX Item "dh_paramgen_prime_len:numbits" The number of bits in the prime parameter \fBp\fR. The default is 2048. .IP "\fBdh_paramgen_subprime_len:numbits\fR" 4 .IX Item "dh_paramgen_subprime_len:numbits" The number of bits in the sub prime parameter \fBq\fR. The default is 256 if the prime is at least 2048 bits long or 160 otherwise. Only relevant if used in conjunction with the \fBdh_paramgen_type\fR option to generate X9.42 \s-1DH\s0 parameters. .IP "\fBdh_paramgen_generator:value\fR" 4 .IX Item "dh_paramgen_generator:value" The value to use for the generator \fBg\fR. The default is 2. .IP "\fBdh_paramgen_type:value\fR" 4 .IX Item "dh_paramgen_type:value" The type of \s-1DH\s0 parameters to generate. Use 0 for PKCS#3 \s-1DH\s0 and 1 for X9.42 \s-1DH.\s0 The default is 0. .IP "\fBdh_rfc5114:num\fR" 4 .IX Item "dh_rfc5114:num" If this option is set, then the appropriate \s-1RFC5114\s0 parameters are used instead of generating new parameters. The value \fBnum\fR can take the values 1, 2 or 3 corresponding to \s-1RFC5114 DH\s0 parameters consisting of 1024 bit group with 160 bit subgroup, 2048 bit group with 224 bit subgroup and 2048 bit group with 256 bit subgroup as mentioned in \s-1RFC5114\s0 sections 2.1, 2.2 and 2.3 respectively. If present this overrides all other \s-1DH\s0 parameter options. .SS "\s-1EC\s0 Parameter Generation Options" .IX Subsection "EC Parameter Generation Options" The \s-1EC\s0 parameter generation options are the same as for key generation. See \&\*(L"\s-1EC\s0 Key Generation Options\*(R" above. .SH "NOTES" .IX Header "NOTES" The use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and \s-1ENGINE\s0 provided algorithms can be used. .SH "EXAMPLES" .IX Header "EXAMPLES" Generate an \s-1RSA\s0 private key using default parameters: .PP .Vb 1 \& openssl genpkey \-algorithm RSA \-out key.pem .Ve .PP Encrypt output private key using 128 bit \s-1AES\s0 and the passphrase \*(L"hello\*(R": .PP .Vb 1 \& openssl genpkey \-algorithm RSA \-out key.pem \-aes\-128\-cbc \-pass pass:hello .Ve .PP Generate a 2048 bit \s-1RSA\s0 key using 3 as the public exponent: .PP .Vb 2 \& openssl genpkey \-algorithm RSA \-out key.pem \e \& \-pkeyopt rsa_keygen_bits:2048 \-pkeyopt rsa_keygen_pubexp:3 .Ve .PP Generate 2048 bit \s-1DSA\s0 parameters: .PP .Vb 2 \& openssl genpkey \-genparam \-algorithm DSA \-out dsap.pem \e \& \-pkeyopt dsa_paramgen_bits:2048 .Ve .PP Generate \s-1DSA\s0 key from parameters: .PP .Vb 1 \& openssl genpkey \-paramfile dsap.pem \-out dsakey.pem .Ve .PP Generate 2048 bit \s-1DH\s0 parameters: .PP .Vb 2 \& openssl genpkey \-genparam \-algorithm DH \-out dhp.pem \e \& \-pkeyopt dh_paramgen_prime_len:2048 .Ve .PP Generate 2048 bit X9.42 \s-1DH\s0 parameters: .PP .Vb 3 \& openssl genpkey \-genparam \-algorithm DH \-out dhpx.pem \e \& \-pkeyopt dh_paramgen_prime_len:2048 \e \& \-pkeyopt dh_paramgen_type:1 .Ve .PP Output \s-1RFC5114 2048\s0 bit \s-1DH\s0 parameters with 224 bit subgroup: .PP .Vb 1 \& openssl genpkey \-genparam \-algorithm DH \-out dhp.pem \-pkeyopt dh_rfc5114:2 .Ve .PP Generate \s-1DH\s0 key from parameters: .PP .Vb 1 \& openssl genpkey \-paramfile dhp.pem \-out dhkey.pem .Ve .PP Generate \s-1EC\s0 parameters: .PP .Vb 3 \& openssl genpkey \-genparam \-algorithm EC \-out ecp.pem \e \& \-pkeyopt ec_paramgen_curve:secp384r1 \e \& \-pkeyopt ec_param_enc:named_curve .Ve .PP Generate \s-1EC\s0 key from parameters: .PP .Vb 1 \& openssl genpkey \-paramfile ecp.pem \-out eckey.pem .Ve .PP Generate \s-1EC\s0 key directly: .PP .Vb 3 \& openssl genpkey \-algorithm EC \-out eckey.pem \e \& \-pkeyopt ec_paramgen_curve:P\-384 \e \& \-pkeyopt ec_param_enc:named_curve .Ve .PP Generate an X25519 private key: .PP .Vb 1 \& openssl genpkey \-algorithm X25519 \-out xkey.pem .Ve .PP Generate an \s-1ED448\s0 private key: .PP .Vb 1 \& openssl genpkey \-algorithm ED448 \-out xkey.pem .Ve .SH "HISTORY" .IX Header "HISTORY" The ability to use \s-1NIST\s0 curve names, and to generate an \s-1EC\s0 key directly, were added in OpenSSL 1.0.2. The ability to generate X25519 keys was added in OpenSSL 1.1.0. The ability to generate X448, \s-1ED25519\s0 and \s-1ED448\s0 keys was added in OpenSSL 1.1.1. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!%~nseq.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "NSEQ 1" .TH NSEQ 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-nseq, nseq \- create or examine a Netscape certificate sequence .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBnseq\fR [\fB\-help\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-toseq\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBnseq\fR command takes a file containing a Netscape certificate sequence and prints out the certificates contained in it or takes a file of certificates and converts it into a Netscape certificate sequence. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename or standard output by default. .IP "\fB\-toseq\fR" 4 .IX Item "-toseq" Normally a Netscape certificate sequence will be input and the output is the certificates contained in it. With the \fB\-toseq\fR option the situation is reversed: a Netscape certificate sequence is created from a file of certificates. .SH "EXAMPLES" .IX Header "EXAMPLES" Output the certificates in a Netscape certificate sequence .PP .Vb 1 \& openssl nseq \-in nseq.pem \-out certs.pem .Ve .PP Create a Netscape certificate sequence .PP .Vb 1 \& openssl nseq \-in certs.pem \-toseq \-out nseq.pem .Ve .SH "NOTES" .IX Header "NOTES" The \fB\s-1PEM\s0\fR encoded form uses the same headers and footers as a certificate: .PP .Vb 2 \& \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- \& \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .Ve .PP A Netscape certificate sequence is a Netscape specific format that can be sent to browsers as an alternative to the standard PKCS#7 format when several certificates are sent to the browser: for example during certificate enrollment. It is used by Netscape certificate server for example. .SH "BUGS" .IX Header "BUGS" This program needs a few more options: like allowing \s-1DER\s0 or \s-1PEM\s0 input and output files and allowing multiple certificate files to be used. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKEYUTL 1" .TH PKEYUTL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkeyutl, pkeyutl \- public key algorithm utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkeyutl\fR [\fB\-help\fR] [\fB\-in file\fR] [\fB\-out file\fR] [\fB\-sigfile file\fR] [\fB\-inkey file\fR] [\fB\-keyform PEM|DER|ENGINE\fR] [\fB\-passin arg\fR] [\fB\-peerkey file\fR] [\fB\-peerform PEM|DER|ENGINE\fR] [\fB\-pubin\fR] [\fB\-certin\fR] [\fB\-rev\fR] [\fB\-sign\fR] [\fB\-verify\fR] [\fB\-verifyrecover\fR] [\fB\-encrypt\fR] [\fB\-decrypt\fR] [\fB\-derive\fR] [\fB\-kdf algorithm\fR] [\fB\-kdflen length\fR] [\fB\-pkeyopt opt:value\fR] [\fB\-hexdump\fR] [\fB\-asn1parse\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] [\fB\-engine_impl\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkeyutl\fR command can be used to perform low-level public key operations using any supported algorithm. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read data from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write to or standard output by default. .IP "\fB\-sigfile file\fR" 4 .IX Item "-sigfile file" Signature file, required for \fBverify\fR operations only .IP "\fB\-inkey file\fR" 4 .IX Item "-inkey file" The input key file, by default it should be a private key. .IP "\fB\-keyform PEM|DER|ENGINE\fR" 4 .IX Item "-keyform PEM|DER|ENGINE" The key format \s-1PEM, DER\s0 or \s-1ENGINE.\s0 Default is \s-1PEM.\s0 .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-peerkey file\fR" 4 .IX Item "-peerkey file" The peer key file, used by key derivation (agreement) operations. .IP "\fB\-peerform PEM|DER|ENGINE\fR" 4 .IX Item "-peerform PEM|DER|ENGINE" The peer key format \s-1PEM, DER\s0 or \s-1ENGINE.\s0 Default is \s-1PEM.\s0 .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" The input file is a public key. .IP "\fB\-certin\fR" 4 .IX Item "-certin" The input is a certificate containing a public key. .IP "\fB\-rev\fR" 4 .IX Item "-rev" Reverse the order of the input buffer. This is useful for some libraries (such as CryptoAPI) which represent the buffer in little endian format. .IP "\fB\-sign\fR" 4 .IX Item "-sign" Sign the input data (which must be a hash) and output the signed result. This requires a private key. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verify the input data (which must be a hash) against the signature file and indicate if the verification succeeded or failed. .IP "\fB\-verifyrecover\fR" 4 .IX Item "-verifyrecover" Verify the input data (which must be a hash) and output the recovered data. .IP "\fB\-encrypt\fR" 4 .IX Item "-encrypt" Encrypt the input data using a public key. .IP "\fB\-decrypt\fR" 4 .IX Item "-decrypt" Decrypt the input data using a private key. .IP "\fB\-derive\fR" 4 .IX Item "-derive" Derive a shared secret using the peer key. .IP "\fB\-kdf algorithm\fR" 4 .IX Item "-kdf algorithm" Use key derivation function \fBalgorithm\fR. The supported algorithms are at present \fB\s-1TLS1\-PRF\s0\fR and \fB\s-1HKDF\s0\fR. Note: additional parameters and the \s-1KDF\s0 output length will normally have to be set for this to work. See \fBEVP_PKEY_CTX_set_hkdf_md\fR\|(3) and \fBEVP_PKEY_CTX_set_tls1_prf_md\fR\|(3) for the supported string parameters of each algorithm. .IP "\fB\-kdflen length\fR" 4 .IX Item "-kdflen length" Set the output length for \s-1KDF.\s0 .IP "\fB\-pkeyopt opt:value\fR" 4 .IX Item "-pkeyopt opt:value" Public key options specified as opt:value. See \s-1NOTES\s0 below for more details. .IP "\fB\-hexdump\fR" 4 .IX Item "-hexdump" hex dump the output data. .IP "\fB\-asn1parse\fR" 4 .IX Item "-asn1parse" Parse the \s-1ASN.1\s0 output data, this is useful when combined with the \&\fB\-verifyrecover\fR option when an \s-1ASN1\s0 structure is signed. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBpkeyutl\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-engine_impl\fR" 4 .IX Item "-engine_impl" When used with the \fB\-engine\fR option, it specifies to also use engine \fBid\fR for crypto operations. .SH "NOTES" .IX Header "NOTES" The operations and options supported vary according to the key algorithm and its implementation. The OpenSSL operations and options are indicated below. .PP Unless otherwise mentioned all algorithms support the \fBdigest:alg\fR option which specifies the digest in use for sign, verify and verifyrecover operations. The value \fBalg\fR should represent a digest name as used in the \&\fBEVP_get_digestbyname()\fR function for example \fBsha1\fR. This value is not used to hash the input data. It is used (by some algorithms) for sanity-checking the lengths of data passed in to the \fBpkeyutl\fR and for creating the structures that make up the signature (e.g. \fBDigestInfo\fR in \s-1RSASSA\s0 PKCS#1 v1.5 signatures). .PP This utility does not hash the input data but rather it will use the data directly as input to the signature algorithm. Depending on the key type, signature type, and mode of padding, the maximum acceptable lengths of input data differ. The signed data can't be longer than the key modulus with \s-1RSA.\s0 In case of \s-1ECDSA\s0 and \s-1DSA\s0 the data shouldn't be longer than the field size, otherwise it will be silently truncated to the field size. In any event the input size must not be larger than the largest supported digest size. .PP In other words, if the value of digest is \fBsha1\fR the input should be the 20 bytes long binary encoding of the \s-1SHA\-1\s0 hash function output. .PP The Ed25519 and Ed448 signature algorithms are not supported by this utility. They accept non-hashed input, but this utility can only be used to sign hashed input. .SH "RSA ALGORITHM" .IX Header "RSA ALGORITHM" The \s-1RSA\s0 algorithm generally supports the encrypt, decrypt, sign, verify and verifyrecover operations. However, some padding modes support only a subset of these operations. The following additional \&\fBpkeyopt\fR values are supported: .IP "\fBrsa_padding_mode:mode\fR" 4 .IX Item "rsa_padding_mode:mode" This sets the \s-1RSA\s0 padding mode. Acceptable values for \fBmode\fR are \fBpkcs1\fR for PKCS#1 padding, \fBsslv23\fR for SSLv23 padding, \fBnone\fR for no padding, \fBoaep\fR for \fB\s-1OAEP\s0\fR mode, \fBx931\fR for X9.31 mode and \fBpss\fR for \s-1PSS.\s0 .Sp In PKCS#1 padding if the message digest is not set then the supplied data is signed or verified directly instead of using a \fBDigestInfo\fR structure. If a digest is set then the a \fBDigestInfo\fR structure is used and its the length must correspond to the digest type. .Sp For \fBoaep\fR mode only encryption and decryption is supported. .Sp For \fBx931\fR if the digest type is set it is used to format the block data otherwise the first byte is used to specify the X9.31 digest \s-1ID.\s0 Sign, verify and verifyrecover are can be performed in this mode. .Sp For \fBpss\fR mode only sign and verify are supported and the digest type must be specified. .IP "\fBrsa_pss_saltlen:len\fR" 4 .IX Item "rsa_pss_saltlen:len" For \fBpss\fR mode only this option specifies the salt length. Three special values are supported: \*(L"digest\*(R" sets the salt length to the digest length, \&\*(L"max\*(R" sets the salt length to the maximum permissible value. When verifying \&\*(L"auto\*(R" causes the salt length to be automatically determined based on the \&\fB\s-1PSS\s0\fR block structure. .IP "\fBrsa_mgf1_md:digest\fR" 4 .IX Item "rsa_mgf1_md:digest" For \s-1PSS\s0 and \s-1OAEP\s0 padding sets the \s-1MGF1\s0 digest. If the \s-1MGF1\s0 digest is not explicitly set in \s-1PSS\s0 mode then the signing digest is used. .IP "\fBrsa_oaep_md:\fR\fIdigest\fR" 4 .IX Item "rsa_oaep_md:digest" Sets the digest used for the \s-1OAEP\s0 hash function. If not explicitly set then \&\s-1SHA1\s0 is used. .SH "RSA-PSS ALGORITHM" .IX Header "RSA-PSS ALGORITHM" The RSA-PSS algorithm is a restricted version of the \s-1RSA\s0 algorithm which only supports the sign and verify operations with \s-1PSS\s0 padding. The following additional \fBpkeyopt\fR values are supported: .IP "\fBrsa_padding_mode:mode\fR, \fBrsa_pss_saltlen:len\fR, \fBrsa_mgf1_md:digest\fR" 4 .IX Item "rsa_padding_mode:mode, rsa_pss_saltlen:len, rsa_mgf1_md:digest" These have the same meaning as the \fB\s-1RSA\s0\fR algorithm with some additional restrictions. The padding mode can only be set to \fBpss\fR which is the default value. .Sp If the key has parameter restrictions than the digest, \s-1MGF1\s0 digest and salt length are set to the values specified in the parameters. The digest and \s-1MG\s0 cannot be changed and the salt length cannot be set to a value less than the minimum restriction. .SH "DSA ALGORITHM" .IX Header "DSA ALGORITHM" The \s-1DSA\s0 algorithm supports signing and verification operations only. Currently there are no additional \fB\-pkeyopt\fR options other than \fBdigest\fR. The \s-1SHA1\s0 digest is assumed by default. .SH "DH ALGORITHM" .IX Header "DH ALGORITHM" The \s-1DH\s0 algorithm only supports the derivation operation and no additional \&\fB\-pkeyopt\fR options. .SH "EC ALGORITHM" .IX Header "EC ALGORITHM" The \s-1EC\s0 algorithm supports sign, verify and derive operations. The sign and verify operations use \s-1ECDSA\s0 and derive uses \s-1ECDH. SHA1\s0 is assumed by default for the \fB\-pkeyopt\fR \fBdigest\fR option. .SH "X25519 and X448 ALGORITHMS" .IX Header "X25519 and X448 ALGORITHMS" The X25519 and X448 algorithms support key derivation only. Currently there are no additional options. .SH "EXAMPLES" .IX Header "EXAMPLES" Sign some data using a private key: .PP .Vb 1 \& openssl pkeyutl \-sign \-in file \-inkey key.pem \-out sig .Ve .PP Recover the signed data (e.g. if an \s-1RSA\s0 key is used): .PP .Vb 1 \& openssl pkeyutl \-verifyrecover \-in sig \-inkey key.pem .Ve .PP Verify the signature (e.g. a \s-1DSA\s0 key): .PP .Vb 1 \& openssl pkeyutl \-verify \-in file \-sigfile sig \-inkey key.pem .Ve .PP Sign data using a message digest value (this is currently only valid for \s-1RSA\s0): .PP .Vb 1 \& openssl pkeyutl \-sign \-in file \-inkey key.pem \-out sig \-pkeyopt digest:sha256 .Ve .PP Derive a shared secret value: .PP .Vb 1 \& openssl pkeyutl \-derive \-inkey key.pem \-peerkey pubkey.pem \-out secret .Ve .PP Hexdump 48 bytes of \s-1TLS1 PRF\s0 using digest \fB\s-1SHA256\s0\fR and shared secret and seed consisting of the single byte 0xFF: .PP .Vb 2 \& openssl pkeyutl \-kdf TLS1\-PRF \-kdflen 48 \-pkeyopt md:SHA256 \e \& \-pkeyopt hexsecret:ff \-pkeyopt hexseed:ff \-hexdump .Ve .PP Decrypt some data using a private key with \s-1OAEP\s0 padding using \s-1SHA256:\s0 .PP .Vb 2 \& openssl pkeyutl \-decrypt \-in file \-inkey key.pem \-out secret \e \& \-pkeyopt rsa_padding_mode:oaep \-pkeyopt rsa_oaep_md:sha256 .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBgenpkey\fR\|(1), \fBpkey\fR\|(1), \fBrsautl\fR\|(1) \&\fBdgst\fR\|(1), \fBrsa\fR\|(1), \fBgenrsa\fR\|(1), \&\fBEVP_PKEY_CTX_set_hkdf_md\fR\|(3), \fBEVP_PKEY_CTX_set_tls1_prf_md\fR\|(3) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK! 4GGpkcs12.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKCS12 1" .TH PKCS12 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkcs12, pkcs12 \- PKCS#12 file utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkcs12\fR [\fB\-help\fR] [\fB\-export\fR] [\fB\-chain\fR] [\fB\-inkey file_or_id\fR] [\fB\-certfile filename\fR] [\fB\-name name\fR] [\fB\-caname name\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-noout\fR] [\fB\-nomacver\fR] [\fB\-nocerts\fR] [\fB\-clcerts\fR] [\fB\-cacerts\fR] [\fB\-nokeys\fR] [\fB\-info\fR] [\fB\-des | \-des3 | \-idea | \-aes128 | \-aes192 | \-aes256 | \-aria128 | \-aria192 | \-aria256 | \-camellia128 | \-camellia192 | \-camellia256 | \-nodes\fR] [\fB\-noiter\fR] [\fB\-maciter | \-nomaciter | \-nomac\fR] [\fB\-twopass\fR] [\fB\-descert\fR] [\fB\-certpbe cipher\fR] [\fB\-keypbe cipher\fR] [\fB\-macalg digest\fR] [\fB\-keyex\fR] [\fB\-keysig\fR] [\fB\-password arg\fR] [\fB\-passin arg\fR] [\fB\-passout arg\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-CAfile file\fR] [\fB\-CApath dir\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-CSP name\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkcs12\fR command allows PKCS#12 files (sometimes referred to as \&\s-1PFX\s0 files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, \s-1MSIE\s0 and \s-1MS\s0 Outlook. .SH "OPTIONS" .IX Header "OPTIONS" There are a lot of options the meaning of some depends of whether a PKCS#12 file is being created or parsed. By default a PKCS#12 file is parsed. A PKCS#12 file can be created by using the \fB\-export\fR option (see below). .SH "PARSING OPTIONS" .IX Header "PARSING OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies filename of the PKCS#12 file to be parsed. Standard input is used by default. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" The filename to write certificates and private keys to, standard output by default. They are all written in \s-1PEM\s0 format. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The PKCS#12 file (i.e. input file) password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" Pass phrase source to encrypt any outputted private keys with. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-password arg\fR" 4 .IX Item "-password arg" With \-export, \-password is equivalent to \-passout. Otherwise, \-password is equivalent to \-passin. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option inhibits output of the keys and certificates to the output file version of the PKCS#12 file. .IP "\fB\-clcerts\fR" 4 .IX Item "-clcerts" Only output client certificates (not \s-1CA\s0 certificates). .IP "\fB\-cacerts\fR" 4 .IX Item "-cacerts" Only output \s-1CA\s0 certificates (not client certificates). .IP "\fB\-nocerts\fR" 4 .IX Item "-nocerts" No certificates at all will be output. .IP "\fB\-nokeys\fR" 4 .IX Item "-nokeys" No private keys will be output. .IP "\fB\-info\fR" 4 .IX Item "-info" Output additional information about the PKCS#12 file structure, algorithms used and iteration counts. .IP "\fB\-des\fR" 4 .IX Item "-des" Use \s-1DES\s0 to encrypt private keys before outputting. .IP "\fB\-des3\fR" 4 .IX Item "-des3" Use triple \s-1DES\s0 to encrypt private keys before outputting, this is the default. .IP "\fB\-idea\fR" 4 .IX Item "-idea" Use \s-1IDEA\s0 to encrypt private keys before outputting. .IP "\fB\-aes128\fR, \fB\-aes192\fR, \fB\-aes256\fR" 4 .IX Item "-aes128, -aes192, -aes256" Use \s-1AES\s0 to encrypt private keys before outputting. .IP "\fB\-aria128\fR, \fB\-aria192\fR, \fB\-aria256\fR" 4 .IX Item "-aria128, -aria192, -aria256" Use \s-1ARIA\s0 to encrypt private keys before outputting. .IP "\fB\-camellia128\fR, \fB\-camellia192\fR, \fB\-camellia256\fR" 4 .IX Item "-camellia128, -camellia192, -camellia256" Use Camellia to encrypt private keys before outputting. .IP "\fB\-nodes\fR" 4 .IX Item "-nodes" Don't encrypt the private keys at all. .IP "\fB\-nomacver\fR" 4 .IX Item "-nomacver" Don't attempt to verify the integrity \s-1MAC\s0 before reading the file. .IP "\fB\-twopass\fR" 4 .IX Item "-twopass" Prompt for separate integrity and encryption passwords: most software always assumes these are the same so this option will render such PKCS#12 files unreadable. Cannot be used in combination with the options \&\-password, \-passin (if importing) or \-passout (if exporting). .SH "FILE CREATION OPTIONS" .IX Header "FILE CREATION OPTIONS" .IP "\fB\-export\fR" 4 .IX Item "-export" This option specifies that a PKCS#12 file will be created rather than parsed. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies filename to write the PKCS#12 file to. Standard output is used by default. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" The filename to read certificates and private keys from, standard input by default. They must all be in \s-1PEM\s0 format. The order doesn't matter but one private key and its corresponding certificate should be present. If additional certificates are present they will also be included in the PKCS#12 file. .IP "\fB\-inkey file_or_id\fR" 4 .IX Item "-inkey file_or_id" File to read private key from. If not present then a private key must be present in the input file. If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier. .IP "\fB\-name friendlyname\fR" 4 .IX Item "-name friendlyname" This specifies the \*(L"friendly name\*(R" for the certificate and private key. This name is typically displayed in list boxes by software importing the file. .IP "\fB\-certfile filename\fR" 4 .IX Item "-certfile filename" A filename to read additional certificates from. .IP "\fB\-caname friendlyname\fR" 4 .IX Item "-caname friendlyname" This specifies the \*(L"friendly name\*(R" for other certificates. This option may be used multiple times to specify names for all certificates in the order they appear. Netscape ignores friendly names on other certificates whereas \s-1MSIE\s0 displays them. .IP "\fB\-pass arg\fR, \fB\-passout arg\fR" 4 .IX Item "-pass arg, -passout arg" The PKCS#12 file (i.e. output file) password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-passin password\fR" 4 .IX Item "-passin password" Pass phrase source to decrypt any input private keys with. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-chain\fR" 4 .IX Item "-chain" If this option is present then an attempt is made to include the entire certificate chain of the user certificate. The standard \s-1CA\s0 store is used for this search. If the search fails it is considered a fatal error. .IP "\fB\-descert\fR" 4 .IX Item "-descert" Encrypt the certificate using triple \s-1DES,\s0 this may render the PKCS#12 file unreadable by some \*(L"export grade\*(R" software. By default the private key is encrypted using triple \s-1DES\s0 and the certificate using 40 bit \s-1RC2\s0 unless \s-1RC2\s0 is disabled in which case triple \s-1DES\s0 is used. .IP "\fB\-keypbe alg\fR, \fB\-certpbe alg\fR" 4 .IX Item "-keypbe alg, -certpbe alg" These options allow the algorithm used to encrypt the private key and certificates to be selected. Any PKCS#5 v1.5 or PKCS#12 \s-1PBE\s0 algorithm name can be used (see \fB\s-1NOTES\s0\fR section for more information). If a cipher name (as output by the \fBlist-cipher-algorithms\fR command is specified then it is used with PKCS#5 v2.0. For interoperability reasons it is advisable to only use PKCS#12 algorithms. .IP "\fB\-keyex|\-keysig\fR" 4 .IX Item "-keyex|-keysig" Specifies that the private key is to be used for key exchange or just signing. This option is only interpreted by \s-1MSIE\s0 and similar \s-1MS\s0 software. Normally \&\*(L"export grade\*(R" software will only allow 512 bit \s-1RSA\s0 keys to be used for encryption purposes but arbitrary length keys for signing. The \fB\-keysig\fR option marks the key for signing only. Signing only keys can be used for S/MIME signing, authenticode (ActiveX control signing) and \s-1SSL\s0 client authentication, however, due to a bug only \s-1MSIE 5.0\s0 and later support the use of signing only keys for \s-1SSL\s0 client authentication. .IP "\fB\-macalg digest\fR" 4 .IX Item "-macalg digest" Specify the \s-1MAC\s0 digest algorithm. If not included them \s-1SHA1\s0 will be used. .IP "\fB\-nomaciter\fR, \fB\-noiter\fR" 4 .IX Item "-nomaciter, -noiter" These options affect the iteration counts on the \s-1MAC\s0 and key algorithms. Unless you wish to produce files compatible with \s-1MSIE 4.0\s0 you should leave these options alone. .Sp To discourage attacks by using large dictionaries of common passwords the algorithm that derives keys from passwords can have an iteration count applied to it: this causes a certain part of the algorithm to be repeated and slows it down. The \s-1MAC\s0 is used to check the file integrity but since it will normally have the same password as the keys and certificates it could also be attacked. By default both \s-1MAC\s0 and encryption iteration counts are set to 2048, using these options the \s-1MAC\s0 and encryption iteration counts can be set to 1, since this reduces the file security you should not use these options unless you really have to. Most software supports both \s-1MAC\s0 and key iteration counts. \&\s-1MSIE 4.0\s0 doesn't support \s-1MAC\s0 iteration counts so it needs the \fB\-nomaciter\fR option. .IP "\fB\-maciter\fR" 4 .IX Item "-maciter" This option is included for compatibility with previous versions, it used to be needed to use \s-1MAC\s0 iterations counts but they are now used by default. .IP "\fB\-nomac\fR" 4 .IX Item "-nomac" Don't attempt to provide the \s-1MAC\s0 integrity. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" \&\s-1CA\s0 storage as a file. .IP "\fB\-CApath dir\fR" 4 .IX Item "-CApath dir" \&\s-1CA\s0 storage as a directory. This directory must be a standard certificate directory: that is a hash of each subject name (using \fBx509 \-hash\fR) should be linked to each certificate. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location. .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location. .IP "\fB\-CSP name\fR" 4 .IX Item "-CSP name" Write \fBname\fR as a Microsoft \s-1CSP\s0 name. .SH "NOTES" .IX Header "NOTES" Although there are a large number of options most of them are very rarely used. For PKCS#12 file parsing only \fB\-in\fR and \fB\-out\fR need to be used for PKCS#12 file creation \fB\-export\fR and \fB\-name\fR are also used. .PP If none of the \fB\-clcerts\fR, \fB\-cacerts\fR or \fB\-nocerts\fR options are present then all certificates will be output in the order they appear in the input PKCS#12 files. There is no guarantee that the first certificate present is the one corresponding to the private key. Certain software which requires a private key and certificate and assumes the first certificate in the file is the one corresponding to the private key: this may not always be the case. Using the \fB\-clcerts\fR option will solve this problem by only outputting the certificate corresponding to the private key. If the \s-1CA\s0 certificates are required then they can be output to a separate file using the \fB\-nokeys \-cacerts\fR options to just output \s-1CA\s0 certificates. .PP The \fB\-keypbe\fR and \fB\-certpbe\fR algorithms allow the precise encryption algorithms for private keys and certificates to be specified. Normally the defaults are fine but occasionally software can't handle triple \s-1DES\s0 encrypted private keys, then the option \fB\-keypbe \s-1PBE\-SHA1\-RC2\-40\s0\fR can be used to reduce the private key encryption to 40 bit \s-1RC2. A\s0 complete description of all algorithms is contained in the \fBpkcs8\fR manual page. .PP Prior 1.1 release passwords containing non-ASCII characters were encoded in non-compliant manner, which limited interoperability, in first hand with Windows. But switching to standard-compliant password encoding poses problem accessing old data protected with broken encoding. For this reason even legacy encodings is attempted when reading the data. If you use PKCS#12 files in production application you are advised to convert the data, because implemented heuristic approach is not MT-safe, its sole goal is to facilitate the data upgrade with this utility. .SH "EXAMPLES" .IX Header "EXAMPLES" Parse a PKCS#12 file and output it to a file: .PP .Vb 1 \& openssl pkcs12 \-in file.p12 \-out file.pem .Ve .PP Output only client certificates to a file: .PP .Vb 1 \& openssl pkcs12 \-in file.p12 \-clcerts \-out file.pem .Ve .PP Don't encrypt the private key: .PP .Vb 1 \& openssl pkcs12 \-in file.p12 \-out file.pem \-nodes .Ve .PP Print some info about a PKCS#12 file: .PP .Vb 1 \& openssl pkcs12 \-in file.p12 \-info \-noout .Ve .PP Create a PKCS#12 file: .PP .Vb 1 \& openssl pkcs12 \-export \-in file.pem \-out file.p12 \-name "My Certificate" .Ve .PP Include some extra certificates: .PP .Vb 2 \& openssl pkcs12 \-export \-in file.pem \-out file.p12 \-name "My Certificate" \e \& \-certfile othercerts.pem .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBpkcs8\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!sZ``x509.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "X509 1" .TH X509 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-x509, x509 \- Certificate display and signing utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBx509\fR [\fB\-help\fR] [\fB\-inform DER|PEM\fR] [\fB\-outform DER|PEM\fR] [\fB\-keyform DER|PEM|ENGINE\fR] [\fB\-CAform DER|PEM\fR] [\fB\-CAkeyform DER|PEM\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-serial\fR] [\fB\-hash\fR] [\fB\-subject_hash\fR] [\fB\-issuer_hash\fR] [\fB\-ocspid\fR] [\fB\-subject\fR] [\fB\-issuer\fR] [\fB\-nameopt option\fR] [\fB\-email\fR] [\fB\-ocsp_uri\fR] [\fB\-startdate\fR] [\fB\-enddate\fR] [\fB\-purpose\fR] [\fB\-dates\fR] [\fB\-checkend num\fR] [\fB\-modulus\fR] [\fB\-pubkey\fR] [\fB\-fingerprint\fR] [\fB\-alias\fR] [\fB\-noout\fR] [\fB\-trustout\fR] [\fB\-clrtrust\fR] [\fB\-clrreject\fR] [\fB\-addtrust arg\fR] [\fB\-addreject arg\fR] [\fB\-setalias arg\fR] [\fB\-days arg\fR] [\fB\-set_serial n\fR] [\fB\-signkey arg\fR] [\fB\-passin arg\fR] [\fB\-x509toreq\fR] [\fB\-req\fR] [\fB\-CA filename\fR] [\fB\-CAkey filename\fR] [\fB\-CAcreateserial\fR] [\fB\-CAserial filename\fR] [\fB\-force_pubkey key\fR] [\fB\-text\fR] [\fB\-ext extensions\fR] [\fB\-certopt option\fR] [\fB\-C\fR] [\fB\-\f(BIdigest\fB\fR] [\fB\-clrext\fR] [\fB\-extfile filename\fR] [\fB\-extensions section\fR] [\fB\-sigopt nm:v\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] [\fB\-preserve_dates\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBx509\fR command is a multi purpose certificate utility. It can be used to display certificate information, convert certificates to various forms, sign certificate requests like a \*(L"mini \s-1CA\*(R"\s0 or edit certificate trust settings. .PP Since there are a large number of options they will split up into various sections. .SH "OPTIONS" .IX Header "OPTIONS" .SS "Input, Output, and General Purpose Options" .IX Subsection "Input, Output, and General Purpose Options" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format normally the command will expect an X509 certificate but this can change if other options such as \fB\-req\fR are present. The \s-1DER\s0 format is the \s-1DER\s0 encoding of the certificate and \s-1PEM\s0 is the base64 encoding of the \s-1DER\s0 encoding with header and footer lines added. The default format is \s-1PEM.\s0 .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a certificate from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write to or standard output by default. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" The digest to use. This affects any signing or display option that uses a message digest, such as the \fB\-fingerprint\fR, \fB\-signkey\fR and \fB\-CA\fR options. Any digest supported by the OpenSSL \fBdgst\fR command can be used. If not specified then \s-1SHA1\s0 is used with \fB\-fingerprint\fR or the default digest for the signing algorithm is used, typically \s-1SHA256.\s0 .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBx509\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-preserve_dates\fR" 4 .IX Item "-preserve_dates" When signing a certificate, preserve the \*(L"notBefore\*(R" and \*(L"notAfter\*(R" dates instead of adjusting them to current time and duration. Cannot be used with the \fB\-days\fR option. .SS "Display Options" .IX Subsection "Display Options" Note: the \fB\-alias\fR and \fB\-purpose\fR options are also display options but are described in the \fB\s-1TRUST SETTINGS\s0\fR section. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the certificate in text form. Full details are output including the public key, signature algorithms, issuer and subject names, serial number any extensions present and any trust settings. .IP "\fB\-ext extensions\fR" 4 .IX Item "-ext extensions" Prints out the certificate extensions in text form. Extensions are specified with a comma separated string, e.g., \*(L"subjectAltName,subjectKeyIdentifier\*(R". See the \fBx509v3_config\fR\|(5) manual page for the extension names. .IP "\fB\-certopt option\fR" 4 .IX Item "-certopt option" Customise the output format used with \fB\-text\fR. The \fBoption\fR argument can be a single option or multiple options separated by commas. The \&\fB\-certopt\fR switch may be also be used more than once to set multiple options. See the \fB\s-1TEXT OPTIONS\s0\fR section for more information. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the certificate. .IP "\fB\-pubkey\fR" 4 .IX Item "-pubkey" Outputs the certificate's SubjectPublicKeyInfo block in \s-1PEM\s0 format. .IP "\fB\-modulus\fR" 4 .IX Item "-modulus" This option prints out the value of the modulus of the public key contained in the certificate. .IP "\fB\-serial\fR" 4 .IX Item "-serial" Outputs the certificate serial number. .IP "\fB\-subject_hash\fR" 4 .IX Item "-subject_hash" Outputs the \*(L"hash\*(R" of the certificate subject name. This is used in OpenSSL to form an index to allow certificates in a directory to be looked up by subject name. .IP "\fB\-issuer_hash\fR" 4 .IX Item "-issuer_hash" Outputs the \*(L"hash\*(R" of the certificate issuer name. .IP "\fB\-ocspid\fR" 4 .IX Item "-ocspid" Outputs the \s-1OCSP\s0 hash values for the subject name and public key. .IP "\fB\-hash\fR" 4 .IX Item "-hash" Synonym for \*(L"\-subject_hash\*(R" for backward compatibility reasons. .IP "\fB\-subject_hash_old\fR" 4 .IX Item "-subject_hash_old" Outputs the \*(L"hash\*(R" of the certificate subject name using the older algorithm as used by OpenSSL before version 1.0.0. .IP "\fB\-issuer_hash_old\fR" 4 .IX Item "-issuer_hash_old" Outputs the \*(L"hash\*(R" of the certificate issuer name using the older algorithm as used by OpenSSL before version 1.0.0. .IP "\fB\-subject\fR" 4 .IX Item "-subject" Outputs the subject name. .IP "\fB\-issuer\fR" 4 .IX Item "-issuer" Outputs the issuer name. .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. The \&\fBoption\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fB\s-1NAME OPTIONS\s0\fR section for more information. .IP "\fB\-email\fR" 4 .IX Item "-email" Outputs the email address(es) if any. .IP "\fB\-ocsp_uri\fR" 4 .IX Item "-ocsp_uri" Outputs the \s-1OCSP\s0 responder address(es) if any. .IP "\fB\-startdate\fR" 4 .IX Item "-startdate" Prints out the start date of the certificate, that is the notBefore date. .IP "\fB\-enddate\fR" 4 .IX Item "-enddate" Prints out the expiry date of the certificate, that is the notAfter date. .IP "\fB\-dates\fR" 4 .IX Item "-dates" Prints out the start and expiry dates of a certificate. .IP "\fB\-checkend arg\fR" 4 .IX Item "-checkend arg" Checks if the certificate expires within the next \fBarg\fR seconds and exits nonzero if yes it will expire or zero if not. .IP "\fB\-fingerprint\fR" 4 .IX Item "-fingerprint" Calculates and outputs the digest of the \s-1DER\s0 encoded version of the entire certificate (see digest options). This is commonly called a \*(L"fingerprint\*(R". Because of the nature of message digests, the fingerprint of a certificate is unique to that certificate and two certificates with the same fingerprint can be considered to be the same. .IP "\fB\-C\fR" 4 .IX Item "-C" This outputs the certificate in the form of a C source file. .SS "Trust Settings" .IX Subsection "Trust Settings" A \fBtrusted certificate\fR is an ordinary certificate which has several additional pieces of information attached to it such as the permitted and prohibited uses of the certificate and an \*(L"alias\*(R". .PP Normally when a certificate is being verified at least one certificate must be \*(L"trusted\*(R". By default a trusted certificate must be stored locally and must be a root \s-1CA:\s0 any certificate chain ending in this \s-1CA\s0 is then usable for any purpose. .PP Trust settings currently are only used with a root \s-1CA.\s0 They allow a finer control over the purposes the root \s-1CA\s0 can be used for. For example a \s-1CA\s0 may be trusted for \s-1SSL\s0 client but not \s-1SSL\s0 server use. .PP See the description of the \fBverify\fR utility for more information on the meaning of trust settings. .PP Future versions of OpenSSL will recognize trust settings on any certificate: not just root CAs. .IP "\fB\-trustout\fR" 4 .IX Item "-trustout" This causes \fBx509\fR to output a \fBtrusted\fR certificate. An ordinary or trusted certificate can be input but by default an ordinary certificate is output and any trust settings are discarded. With the \&\fB\-trustout\fR option a trusted certificate is output. A trusted certificate is automatically output if any trust settings are modified. .IP "\fB\-setalias arg\fR" 4 .IX Item "-setalias arg" Sets the alias of the certificate. This will allow the certificate to be referred to using a nickname for example \*(L"Steve's Certificate\*(R". .IP "\fB\-alias\fR" 4 .IX Item "-alias" Outputs the certificate alias, if any. .IP "\fB\-clrtrust\fR" 4 .IX Item "-clrtrust" Clears all the permitted or trusted uses of the certificate. .IP "\fB\-clrreject\fR" 4 .IX Item "-clrreject" Clears all the prohibited or rejected uses of the certificate. .IP "\fB\-addtrust arg\fR" 4 .IX Item "-addtrust arg" Adds a trusted certificate use. Any object name can be used here but currently only \fBclientAuth\fR (\s-1SSL\s0 client use), \fBserverAuth\fR (\s-1SSL\s0 server use), \fBemailProtection\fR (S/MIME email) and \&\fBanyExtendedKeyUsage\fR are used. As of OpenSSL 1.1.0, the last of these blocks all purposes when rejected or enables all purposes when trusted. Other OpenSSL applications may define additional uses. .IP "\fB\-addreject arg\fR" 4 .IX Item "-addreject arg" Adds a prohibited use. It accepts the same values as the \fB\-addtrust\fR option. .IP "\fB\-purpose\fR" 4 .IX Item "-purpose" This option performs tests on the certificate extensions and outputs the results. For a more complete description see the \fB\s-1CERTIFICATE EXTENSIONS\s0\fR section. .SS "Signing Options" .IX Subsection "Signing Options" The \fBx509\fR utility can be used to sign certificates and requests: it can thus behave like a \*(L"mini \s-1CA\*(R".\s0 .IP "\fB\-signkey arg\fR" 4 .IX Item "-signkey arg" This option causes the input file to be self signed using the supplied private key or engine. The private key's format is specified with the \&\fB\-keyform\fR option. .Sp If the input file is a certificate it sets the issuer name to the subject name (i.e. makes it self signed) changes the public key to the supplied value and changes the start and end dates. The start date is set to the current time and the end date is set to a value determined by the \fB\-days\fR option. Any certificate extensions are retained unless the \fB\-clrext\fR option is supplied; this includes, for example, any existing key identifier extensions. .Sp If the input is a certificate request then a self signed certificate is created using the supplied private key using the subject name in the request. .IP "\fB\-sigopt nm:v\fR" 4 .IX Item "-sigopt nm:v" Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-clrext\fR" 4 .IX Item "-clrext" Delete any extensions from a certificate. This option is used when a certificate is being created from another certificate (for example with the \fB\-signkey\fR or the \fB\-CA\fR options). Normally all extensions are retained. .IP "\fB\-keyform PEM|DER|ENGINE\fR" 4 .IX Item "-keyform PEM|DER|ENGINE" Specifies the format (\s-1DER\s0 or \s-1PEM\s0) of the private key file used in the \&\fB\-signkey\fR option. .IP "\fB\-days arg\fR" 4 .IX Item "-days arg" Specifies the number of days to make a certificate valid for. The default is 30 days. Cannot be used with the \fB\-preserve_dates\fR option. .IP "\fB\-x509toreq\fR" 4 .IX Item "-x509toreq" Converts a certificate into a certificate request. The \fB\-signkey\fR option is used to pass the required private key. .IP "\fB\-req\fR" 4 .IX Item "-req" By default a certificate is expected on input. With this option a certificate request is expected instead. .IP "\fB\-set_serial n\fR" 4 .IX Item "-set_serial n" Specifies the serial number to use. This option can be used with either the \fB\-signkey\fR or \fB\-CA\fR options. If used in conjunction with the \fB\-CA\fR option the serial number file (as specified by the \fB\-CAserial\fR or \&\fB\-CAcreateserial\fR options) is not used. .Sp The serial number can be decimal or hex (if preceded by \fB0x\fR). .IP "\fB\-CA filename\fR" 4 .IX Item "-CA filename" Specifies the \s-1CA\s0 certificate to be used for signing. When this option is present \fBx509\fR behaves like a \*(L"mini \s-1CA\*(R".\s0 The input file is signed by this \&\s-1CA\s0 using this option: that is its issuer name is set to the subject name of the \s-1CA\s0 and it is digitally signed using the CAs private key. .Sp This option is normally combined with the \fB\-req\fR option. Without the \&\fB\-req\fR option the input is a certificate which must be self signed. .IP "\fB\-CAkey filename\fR" 4 .IX Item "-CAkey filename" Sets the \s-1CA\s0 private key to sign a certificate with. If this option is not specified then it is assumed that the \s-1CA\s0 private key is present in the \s-1CA\s0 certificate file. .IP "\fB\-CAserial filename\fR" 4 .IX Item "-CAserial filename" Sets the \s-1CA\s0 serial number file to use. .Sp When creating a certificate with this option, and with the \fB\-CA\fR option, the certificate serial number is stored in the given file. This file consists of one line containing an even number of hex digits with the serial number used last time. After reading this number, it is incremented and used, and the file is updated. .Sp The default filename consists of the \s-1CA\s0 certificate file base name with \&\*(L".srl\*(R" appended. For example if the \s-1CA\s0 certificate file is called \&\*(L"mycacert.pem\*(R" it expects to find a serial number file called \*(L"mycacert.srl\*(R". .Sp If the \fB\-CA\fR option is specified and neither <\-CAserial> or <\-CAcreateserial> is given and the default serial number file does not exist, a random number is generated; this is the recommended practice. .IP "\fB\-CAcreateserial\fR" 4 .IX Item "-CAcreateserial" With this option and the \fB\-CA\fR option the \s-1CA\s0 serial number file is created if it does not exist. A random number is generated, used for the certificate, and saved into the serial number file determined as described above. .IP "\fB\-extfile filename\fR" 4 .IX Item "-extfile filename" File containing certificate extensions to use. If not specified then no extensions are added to the certificate. .IP "\fB\-extensions section\fR" 4 .IX Item "-extensions section" The section to add certificate extensions from. If this option is not specified then the extensions should either be contained in the unnamed (default) section or the default section should contain a variable called \&\*(L"extensions\*(R" which contains the section to use. See the \&\fBx509v3_config\fR\|(5) manual page for details of the extension section format. .IP "\fB\-force_pubkey key\fR" 4 .IX Item "-force_pubkey key" When a certificate is created set its public key to \fBkey\fR instead of the key in the certificate or certificate request. This option is useful for creating certificates where the algorithm can't normally sign requests, for example \s-1DH.\s0 .Sp The format or \fBkey\fR can be specified using the \fB\-keyform\fR option. .SS "Name Options" .IX Subsection "Name Options" The \fBnameopt\fR command line switch determines how the subject and issuer names are displayed. If no \fBnameopt\fR switch is present the default \*(L"oneline\*(R" format is used which is compatible with previous versions of OpenSSL. Each option is described in detail below, all options can be preceded by a \fB\-\fR to turn the option off. Only the first four will normally be used. .IP "\fBcompat\fR" 4 .IX Item "compat" Use the old format. .IP "\fB\s-1RFC2253\s0\fR" 4 .IX Item "RFC2253" Displays names compatible with \s-1RFC2253\s0 equivalent to \fBesc_2253\fR, \fBesc_ctrl\fR, \&\fBesc_msb\fR, \fButf8\fR, \fBdump_nostr\fR, \fBdump_unknown\fR, \fBdump_der\fR, \&\fBsep_comma_plus\fR, \fBdn_rev\fR and \fBsname\fR. .IP "\fBoneline\fR" 4 .IX Item "oneline" A oneline format which is more readable than \s-1RFC2253.\s0 It is equivalent to specifying the \fBesc_2253\fR, \fBesc_ctrl\fR, \fBesc_msb\fR, \fButf8\fR, \fBdump_nostr\fR, \&\fBdump_der\fR, \fBuse_quote\fR, \fBsep_comma_plus_space\fR, \fBspace_eq\fR and \fBsname\fR options. This is the \fIdefault\fR of no name options are given explicitly. .IP "\fBmultiline\fR" 4 .IX Item "multiline" A multiline format. It is equivalent \fBesc_ctrl\fR, \fBesc_msb\fR, \fBsep_multiline\fR, \&\fBspace_eq\fR, \fBlname\fR and \fBalign\fR. .IP "\fBesc_2253\fR" 4 .IX Item "esc_2253" Escape the \*(L"special\*(R" characters required by \s-1RFC2253\s0 in a field. That is \&\fB,+"<>;\fR. Additionally \fB#\fR is escaped at the beginning of a string and a space character at the beginning or end of a string. .IP "\fBesc_2254\fR" 4 .IX Item "esc_2254" Escape the \*(L"special\*(R" characters required by \s-1RFC2254\s0 in a field. That is the \fB\s-1NUL\s0\fR character as well as and \fB()*\fR. .IP "\fBesc_ctrl\fR" 4 .IX Item "esc_ctrl" Escape control characters. That is those with \s-1ASCII\s0 values less than 0x20 (space) and the delete (0x7f) character. They are escaped using the \&\s-1RFC2253\s0 \eXX notation (where \s-1XX\s0 are two hex digits representing the character value). .IP "\fBesc_msb\fR" 4 .IX Item "esc_msb" Escape characters with the \s-1MSB\s0 set, that is with \s-1ASCII\s0 values larger than 127. .IP "\fBuse_quote\fR" 4 .IX Item "use_quote" Escapes some characters by surrounding the whole string with \fB"\fR characters, without the option all escaping is done with the \fB\e\fR character. .IP "\fButf8\fR" 4 .IX Item "utf8" Convert all strings to \s-1UTF8\s0 format first. This is required by \s-1RFC2253.\s0 If you are lucky enough to have a \s-1UTF8\s0 compatible terminal then the use of this option (and \fBnot\fR setting \fBesc_msb\fR) may result in the correct display of multibyte (international) characters. Is this option is not present then multibyte characters larger than 0xff will be represented using the format \eUXXXX for 16 bits and \eWXXXXXXXX for 32 bits. Also if this option is off any UTF8Strings will be converted to their character form first. .IP "\fBignore_type\fR" 4 .IX Item "ignore_type" This option does not attempt to interpret multibyte characters in any way. That is their content octets are merely dumped as though one octet represents each character. This is useful for diagnostic purposes but will result in rather odd looking output. .IP "\fBshow_type\fR" 4 .IX Item "show_type" Show the type of the \s-1ASN1\s0 character string. The type precedes the field contents. For example \*(L"\s-1BMPSTRING:\s0 Hello World\*(R". .IP "\fBdump_der\fR" 4 .IX Item "dump_der" When this option is set any fields that need to be hexdumped will be dumped using the \s-1DER\s0 encoding of the field. Otherwise just the content octets will be displayed. Both options use the \s-1RFC2253\s0 \&\fB#XXXX...\fR format. .IP "\fBdump_nostr\fR" 4 .IX Item "dump_nostr" Dump non character string types (for example \s-1OCTET STRING\s0) if this option is not set then non character string types will be displayed as though each content octet represents a single character. .IP "\fBdump_all\fR" 4 .IX Item "dump_all" Dump all fields. This option when used with \fBdump_der\fR allows the \&\s-1DER\s0 encoding of the structure to be unambiguously determined. .IP "\fBdump_unknown\fR" 4 .IX Item "dump_unknown" Dump any field whose \s-1OID\s0 is not recognised by OpenSSL. .IP "\fBsep_comma_plus\fR, \fBsep_comma_plus_space\fR, \fBsep_semi_plus_space\fR, \fBsep_multiline\fR" 4 .IX Item "sep_comma_plus, sep_comma_plus_space, sep_semi_plus_space, sep_multiline" These options determine the field separators. The first character is between RDNs and the second between multiple AVAs (multiple AVAs are very rare and their use is discouraged). The options ending in \&\*(L"space\*(R" additionally place a space after the separator to make it more readable. The \fBsep_multiline\fR uses a linefeed character for the \s-1RDN\s0 separator and a spaced \fB+\fR for the \s-1AVA\s0 separator. It also indents the fields by four characters. If no field separator is specified then \fBsep_comma_plus_space\fR is used by default. .IP "\fBdn_rev\fR" 4 .IX Item "dn_rev" Reverse the fields of the \s-1DN.\s0 This is required by \s-1RFC2253.\s0 As a side effect this also reverses the order of multiple AVAs but this is permissible. .IP "\fBnofname\fR, \fBsname\fR, \fBlname\fR, \fBoid\fR" 4 .IX Item "nofname, sname, lname, oid" These options alter how the field name is displayed. \fBnofname\fR does not display the field at all. \fBsname\fR uses the \*(L"short name\*(R" form (\s-1CN\s0 for commonName for example). \fBlname\fR uses the long form. \&\fBoid\fR represents the \s-1OID\s0 in numerical form and is useful for diagnostic purpose. .IP "\fBalign\fR" 4 .IX Item "align" Align field values for a more readable output. Only usable with \&\fBsep_multiline\fR. .IP "\fBspace_eq\fR" 4 .IX Item "space_eq" Places spaces round the \fB=\fR character which follows the field name. .SS "Text Options" .IX Subsection "Text Options" As well as customising the name output format, it is also possible to customise the actual fields printed using the \fBcertopt\fR options when the \fBtext\fR option is present. The default behaviour is to print all fields. .IP "\fBcompatible\fR" 4 .IX Item "compatible" Use the old format. This is equivalent to specifying no output options at all. .IP "\fBno_header\fR" 4 .IX Item "no_header" Don't print header information: that is the lines saying \*(L"Certificate\*(R" and \*(L"Data\*(R". .IP "\fBno_version\fR" 4 .IX Item "no_version" Don't print out the version number. .IP "\fBno_serial\fR" 4 .IX Item "no_serial" Don't print out the serial number. .IP "\fBno_signame\fR" 4 .IX Item "no_signame" Don't print out the signature algorithm used. .IP "\fBno_validity\fR" 4 .IX Item "no_validity" Don't print the validity, that is the \fBnotBefore\fR and \fBnotAfter\fR fields. .IP "\fBno_subject\fR" 4 .IX Item "no_subject" Don't print out the subject name. .IP "\fBno_issuer\fR" 4 .IX Item "no_issuer" Don't print out the issuer name. .IP "\fBno_pubkey\fR" 4 .IX Item "no_pubkey" Don't print out the public key. .IP "\fBno_sigdump\fR" 4 .IX Item "no_sigdump" Don't give a hexadecimal dump of the certificate signature. .IP "\fBno_aux\fR" 4 .IX Item "no_aux" Don't print out certificate trust information. .IP "\fBno_extensions\fR" 4 .IX Item "no_extensions" Don't print out any X509V3 extensions. .IP "\fBext_default\fR" 4 .IX Item "ext_default" Retain default extension behaviour: attempt to print out unsupported certificate extensions. .IP "\fBext_error\fR" 4 .IX Item "ext_error" Print an error message for unsupported certificate extensions. .IP "\fBext_parse\fR" 4 .IX Item "ext_parse" \&\s-1ASN1\s0 parse unsupported extensions. .IP "\fBext_dump\fR" 4 .IX Item "ext_dump" Hex dump unsupported extensions. .IP "\fBca_default\fR" 4 .IX Item "ca_default" The value used by the \fBca\fR utility, equivalent to \fBno_issuer\fR, \fBno_pubkey\fR, \&\fBno_header\fR, and \fBno_version\fR. .SH "EXAMPLES" .IX Header "EXAMPLES" Note: in these examples the '\e' means the example should be all on one line. .PP Display the contents of a certificate: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-text .Ve .PP Display the \*(L"Subject Alternative Name\*(R" extension of a certificate: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-ext subjectAltName .Ve .PP Display more extensions of a certificate: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-ext subjectAltName,nsCertType .Ve .PP Display the certificate serial number: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-serial .Ve .PP Display the certificate subject name: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-subject .Ve .PP Display the certificate subject name in \s-1RFC2253\s0 form: .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-subject \-nameopt RFC2253 .Ve .PP Display the certificate subject name in oneline form on a terminal supporting \s-1UTF8:\s0 .PP .Vb 1 \& openssl x509 \-in cert.pem \-noout \-subject \-nameopt oneline,\-esc_msb .Ve .PP Display the certificate \s-1SHA1\s0 fingerprint: .PP .Vb 1 \& openssl x509 \-sha1 \-in cert.pem \-noout \-fingerprint .Ve .PP Convert a certificate from \s-1PEM\s0 to \s-1DER\s0 format: .PP .Vb 1 \& openssl x509 \-in cert.pem \-inform PEM \-out cert.der \-outform DER .Ve .PP Convert a certificate to a certificate request: .PP .Vb 1 \& openssl x509 \-x509toreq \-in cert.pem \-out req.pem \-signkey key.pem .Ve .PP Convert a certificate request into a self signed certificate using extensions for a \s-1CA:\s0 .PP .Vb 2 \& openssl x509 \-req \-in careq.pem \-extfile openssl.cnf \-extensions v3_ca \e \& \-signkey key.pem \-out cacert.pem .Ve .PP Sign a certificate request using the \s-1CA\s0 certificate above and add user certificate extensions: .PP .Vb 2 \& openssl x509 \-req \-in req.pem \-extfile openssl.cnf \-extensions v3_usr \e \& \-CA cacert.pem \-CAkey key.pem \-CAcreateserial .Ve .PP Set a certificate to be trusted for \s-1SSL\s0 client use and change set its alias to \&\*(L"Steve's Class 1 \s-1CA\*(R"\s0 .PP .Vb 2 \& openssl x509 \-in cert.pem \-addtrust clientAuth \e \& \-setalias "Steve\*(Aqs Class 1 CA" \-out trust.pem .Ve .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\- \& \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .Ve .PP it will also handle files containing: .PP .Vb 2 \& \-\-\-\-\-BEGIN X509 CERTIFICATE\-\-\-\-\- \& \-\-\-\-\-END X509 CERTIFICATE\-\-\-\-\- .Ve .PP Trusted certificates have the lines .PP .Vb 2 \& \-\-\-\-\-BEGIN TRUSTED CERTIFICATE\-\-\-\-\- \& \-\-\-\-\-END TRUSTED CERTIFICATE\-\-\-\-\- .Ve .PP The conversion to \s-1UTF8\s0 format used with the name options assumes that T61Strings use the \s-1ISO8859\-1\s0 character set. This is wrong but Netscape and \s-1MSIE\s0 do this as do many certificates. So although this is incorrect it is more likely to display the majority of certificates correctly. .PP The \fB\-email\fR option searches the subject name and the subject alternative name extension. Only unique email addresses will be printed out: it will not print the same address more than once. .SH "CERTIFICATE EXTENSIONS" .IX Header "CERTIFICATE EXTENSIONS" The \fB\-purpose\fR option checks the certificate extensions and determines what the certificate can be used for. The actual checks done are rather complex and include various hacks and workarounds to handle broken certificates and software. .PP The same code is used when verifying untrusted certificates in chains so this section is useful if a chain is rejected by the verify code. .PP The basicConstraints extension \s-1CA\s0 flag is used to determine whether the certificate can be used as a \s-1CA.\s0 If the \s-1CA\s0 flag is true then it is a \s-1CA,\s0 if the \s-1CA\s0 flag is false then it is not a \s-1CA.\s0 \fBAll\fR CAs should have the \&\s-1CA\s0 flag set to true. .PP If the basicConstraints extension is absent then the certificate is considered to be a \*(L"possible \s-1CA\*(R"\s0 other extensions are checked according to the intended use of the certificate. A warning is given in this case because the certificate should really not be regarded as a \s-1CA:\s0 however it is allowed to be a \s-1CA\s0 to work around some broken software. .PP If the certificate is a V1 certificate (and thus has no extensions) and it is self signed it is also assumed to be a \s-1CA\s0 but a warning is again given: this is to work around the problem of Verisign roots which are V1 self signed certificates. .PP If the keyUsage extension is present then additional restraints are made on the uses of the certificate. A \s-1CA\s0 certificate \fBmust\fR have the keyCertSign bit set if the keyUsage extension is present. .PP The extended key usage extension places additional restrictions on the certificate uses. If this extension is present (whether critical or not) the key can only be used for the purposes specified. .PP A complete description of each test is given below. The comments about basicConstraints and keyUsage and V1 certificates above apply to \fBall\fR \&\s-1CA\s0 certificates. .IP "\fB\s-1SSL\s0 Client\fR" 4 .IX Item "SSL Client" The extended key usage extension must be absent or include the \*(L"web client authentication\*(R" \s-1OID.\s0 keyUsage must be absent or it must have the digitalSignature bit set. Netscape certificate type must be absent or it must have the \s-1SSL\s0 client bit set. .IP "\fB\s-1SSL\s0 Client \s-1CA\s0\fR" 4 .IX Item "SSL Client CA" The extended key usage extension must be absent or include the \*(L"web client authentication\*(R" \s-1OID.\s0 Netscape certificate type must be absent or it must have the \s-1SSL CA\s0 bit set: this is used as a work around if the basicConstraints extension is absent. .IP "\fB\s-1SSL\s0 Server\fR" 4 .IX Item "SSL Server" The extended key usage extension must be absent or include the \*(L"web server authentication\*(R" and/or one of the \s-1SGC\s0 OIDs. keyUsage must be absent or it must have the digitalSignature, the keyEncipherment set or both bits set. Netscape certificate type must be absent or have the \s-1SSL\s0 server bit set. .IP "\fB\s-1SSL\s0 Server \s-1CA\s0\fR" 4 .IX Item "SSL Server CA" The extended key usage extension must be absent or include the \*(L"web server authentication\*(R" and/or one of the \s-1SGC\s0 OIDs. Netscape certificate type must be absent or the \s-1SSL CA\s0 bit must be set: this is used as a work around if the basicConstraints extension is absent. .IP "\fBNetscape \s-1SSL\s0 Server\fR" 4 .IX Item "Netscape SSL Server" For Netscape \s-1SSL\s0 clients to connect to an \s-1SSL\s0 server it must have the keyEncipherment bit set if the keyUsage extension is present. This isn't always valid because some cipher suites use the key for digital signing. Otherwise it is the same as a normal \s-1SSL\s0 server. .IP "\fBCommon S/MIME Client Tests\fR" 4 .IX Item "Common S/MIME Client Tests" The extended key usage extension must be absent or include the \*(L"email protection\*(R" \s-1OID.\s0 Netscape certificate type must be absent or should have the S/MIME bit set. If the S/MIME bit is not set in Netscape certificate type then the \s-1SSL\s0 client bit is tolerated as an alternative but a warning is shown: this is because some Verisign certificates don't set the S/MIME bit. .IP "\fBS/MIME Signing\fR" 4 .IX Item "S/MIME Signing" In addition to the common S/MIME client tests the digitalSignature bit or the nonRepudiation bit must be set if the keyUsage extension is present. .IP "\fBS/MIME Encryption\fR" 4 .IX Item "S/MIME Encryption" In addition to the common S/MIME tests the keyEncipherment bit must be set if the keyUsage extension is present. .IP "\fBS/MIME \s-1CA\s0\fR" 4 .IX Item "S/MIME CA" The extended key usage extension must be absent or include the \*(L"email protection\*(R" \s-1OID.\s0 Netscape certificate type must be absent or must have the S/MIME \s-1CA\s0 bit set: this is used as a work around if the basicConstraints extension is absent. .IP "\fB\s-1CRL\s0 Signing\fR" 4 .IX Item "CRL Signing" The keyUsage extension must be absent or it must have the \s-1CRL\s0 signing bit set. .IP "\fB\s-1CRL\s0 Signing \s-1CA\s0\fR" 4 .IX Item "CRL Signing CA" The normal \s-1CA\s0 tests apply. Except in this case the basicConstraints extension must be present. .SH "BUGS" .IX Header "BUGS" Extensions in certificates are not transferred to certificate requests and vice versa. .PP It is possible to produce invalid certificates or requests by specifying the wrong private key or using inconsistent options in some cases: these should be checked. .PP There should be options to explicitly set such things as start and end dates rather than an offset from the current time. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBreq\fR\|(1), \fBca\fR\|(1), \fBgenrsa\fR\|(1), \&\fBgendsa\fR\|(1), \fBverify\fR\|(1), \&\fBx509v3_config\fR\|(5) .SH "HISTORY" .IX Header "HISTORY" The hash algorithm used in the \fB\-subject_hash\fR and \fB\-issuer_hash\fR options before OpenSSL 1.0.0 was based on the deprecated \s-1MD5\s0 algorithm and the encoding of the distinguished name. In OpenSSL 1.0.0 and later it is based on a canonical version of the \s-1DN\s0 using \s-1SHA1.\s0 This means that any directories using the old form must have their links rebuilt using \fBc_rehash\fR or similar. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2022 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK![ >>pkcs8.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKCS8 1" .TH PKCS8 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkcs8, pkcs8 \- PKCS#8 format private key conversion tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkcs8\fR [\fB\-help\fR] [\fB\-topk8\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-iter count\fR] [\fB\-noiter\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-nocrypt\fR] [\fB\-traditional\fR] [\fB\-v2 alg\fR] [\fB\-v2prf alg\fR] [\fB\-v1 alg\fR] [\fB\-engine id\fR] [\fB\-scrypt\fR] [\fB\-scrypt_N N\fR] [\fB\-scrypt_r r\fR] [\fB\-scrypt_p p\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkcs8\fR command processes private keys in PKCS#8 format. It can handle both unencrypted PKCS#8 PrivateKeyInfo format and EncryptedPrivateKeyInfo format with a variety of PKCS#5 (v1.5 and v2.0) and PKCS#12 algorithms. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-topk8\fR" 4 .IX Item "-topk8" Normally a PKCS#8 private key is expected on input and a private key will be written to the output file. With the \fB\-topk8\fR option the situation is reversed: it reads a private key and writes a PKCS#8 format key. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format: see \*(L"\s-1KEY FORMATS\*(R"\s0 for more details. The default format is \s-1PEM.\s0 .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format: see \*(L"\s-1KEY FORMATS\*(R"\s0 for more details. The default format is \s-1PEM.\s0 .IP "\fB\-traditional\fR" 4 .IX Item "-traditional" When this option is present and \fB\-topk8\fR is not a traditional format private key is written. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write a key to or standard output by default. If any encryption options are set then a pass phrase will be prompted for. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-iter count\fR" 4 .IX Item "-iter count" When creating new PKCS#8 containers, use a given number of iterations on the password in deriving the encryption key for the PKCS#8 output. High values increase the time required to brute-force a PKCS#8 container. .IP "\fB\-nocrypt\fR" 4 .IX Item "-nocrypt" PKCS#8 keys generated or input are normally PKCS#8 EncryptedPrivateKeyInfo structures using an appropriate password based encryption algorithm. With this option an unencrypted PrivateKeyInfo structure is expected or output. This option does not encrypt private keys at all and should only be used when absolutely necessary. Certain software such as some versions of Java code signing software used unencrypted private keys. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-v2 alg\fR" 4 .IX Item "-v2 alg" This option sets the PKCS#5 v2.0 algorithm. .Sp The \fBalg\fR argument is the encryption algorithm to use, valid values include \&\fBaes128\fR, \fBaes256\fR and \fBdes3\fR. If this option isn't specified then \fBaes256\fR is used. .IP "\fB\-v2prf alg\fR" 4 .IX Item "-v2prf alg" This option sets the \s-1PRF\s0 algorithm to use with PKCS#5 v2.0. A typical value value would be \fBhmacWithSHA256\fR. If this option isn't set then the default for the cipher is used or \fBhmacWithSHA256\fR if there is no default. .Sp Some implementations may not support custom \s-1PRF\s0 algorithms and may require the \fBhmacWithSHA1\fR option to work. .IP "\fB\-v1 alg\fR" 4 .IX Item "-v1 alg" This option indicates a PKCS#5 v1.5 or PKCS#12 algorithm should be used. Some older implementations may not support PKCS#5 v2.0 and may require this option. If not specified PKCS#5 v2.0 form is used. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBpkcs8\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-scrypt\fR" 4 .IX Item "-scrypt" Uses the \fBscrypt\fR algorithm for private key encryption using default parameters: currently N=16384, r=8 and p=1 and \s-1AES\s0 in \s-1CBC\s0 mode with a 256 bit key. These parameters can be modified using the \fB\-scrypt_N\fR, \fB\-scrypt_r\fR, \&\fB\-scrypt_p\fR and \fB\-v2\fR options. .IP "\fB\-scrypt_N N\fR \fB\-scrypt_r r\fR \fB\-scrypt_p p\fR" 4 .IX Item "-scrypt_N N -scrypt_r r -scrypt_p p" Sets the scrypt \fBN\fR, \fBr\fR or \fBp\fR parameters. .SH "KEY FORMATS" .IX Header "KEY FORMATS" Various different formats are used by the pkcs8 utility. These are detailed below. .PP If a key is being converted from PKCS#8 form (i.e. the \fB\-topk8\fR option is not used) then the input file must be in PKCS#8 format. An encrypted key is expected unless \fB\-nocrypt\fR is included. .PP If \fB\-topk8\fR is not used and \fB\s-1PEM\s0\fR mode is set the output file will be an unencrypted private key in PKCS#8 format. If the \fB\-traditional\fR option is used then a traditional format private key is written instead. .PP If \fB\-topk8\fR is not used and \fB\s-1DER\s0\fR mode is set the output file will be an unencrypted private key in traditional \s-1DER\s0 format. .PP If \fB\-topk8\fR is used then any supported private key can be used for the input file in a format specified by \fB\-inform\fR. The output file will be encrypted PKCS#8 format using the specified encryption parameters unless \fB\-nocrypt\fR is included. .SH "NOTES" .IX Header "NOTES" By default, when converting a key to PKCS#8 format, PKCS#5 v2.0 using 256 bit \&\s-1AES\s0 with \s-1HMAC\s0 and \s-1SHA256\s0 is used. .PP Some older implementations do not support PKCS#5 v2.0 format and require the older PKCS#5 v1.5 form instead, possibly also requiring insecure weak encryption algorithms such as 56 bit \s-1DES.\s0 .PP The encrypted form of a \s-1PEM\s0 encode PKCS#8 files uses the following headers and footers: .PP .Vb 2 \& \-\-\-\-\-BEGIN ENCRYPTED PRIVATE KEY\-\-\-\-\- \& \-\-\-\-\-END ENCRYPTED PRIVATE KEY\-\-\-\-\- .Ve .PP The unencrypted form uses: .PP .Vb 2 \& \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- \& \-\-\-\-\-END PRIVATE KEY\-\-\-\-\- .Ve .PP Private keys encrypted using PKCS#5 v2.0 algorithms and high iteration counts are more secure that those encrypted using the traditional SSLeay compatible formats. So if additional security is considered important the keys should be converted. .PP It is possible to write out \s-1DER\s0 encoded encrypted private keys in PKCS#8 format because the encryption details are included at an \s-1ASN1\s0 level whereas the traditional format includes them at a \s-1PEM\s0 level. .SH "PKCS#5 v1.5 and PKCS#12 algorithms." .IX Header "PKCS#5 v1.5 and PKCS#12 algorithms." Various algorithms can be used with the \fB\-v1\fR command line option, including PKCS#5 v1.5 and PKCS#12. These are described in more detail below. .IP "\fB\s-1PBE\-MD2\-DES PBE\-MD5\-DES\s0\fR" 4 .IX Item "PBE-MD2-DES PBE-MD5-DES" These algorithms were included in the original PKCS#5 v1.5 specification. They only offer 56 bits of protection since they both use \s-1DES.\s0 .IP "\fB\s-1PBE\-SHA1\-RC2\-64\s0\fR, \fB\s-1PBE\-MD2\-RC2\-64\s0\fR, \fB\s-1PBE\-MD5\-RC2\-64\s0\fR, \fB\s-1PBE\-SHA1\-DES\s0\fR" 4 .IX Item "PBE-SHA1-RC2-64, PBE-MD2-RC2-64, PBE-MD5-RC2-64, PBE-SHA1-DES" These algorithms are not mentioned in the original PKCS#5 v1.5 specification but they use the same key derivation algorithm and are supported by some software. They are mentioned in PKCS#5 v2.0. They use either 64 bit \s-1RC2\s0 or 56 bit \s-1DES.\s0 .IP "\fB\s-1PBE\-SHA1\-RC4\-128\s0\fR, \fB\s-1PBE\-SHA1\-RC4\-40\s0\fR, \fB\s-1PBE\-SHA1\-3DES\s0\fR, \fB\s-1PBE\-SHA1\-2DES\s0\fR, \fB\s-1PBE\-SHA1\-RC2\-128\s0\fR, \fB\s-1PBE\-SHA1\-RC2\-40\s0\fR" 4 .IX Item "PBE-SHA1-RC4-128, PBE-SHA1-RC4-40, PBE-SHA1-3DES, PBE-SHA1-2DES, PBE-SHA1-RC2-128, PBE-SHA1-RC2-40" These algorithms use the PKCS#12 password based encryption algorithm and allow strong encryption algorithms like triple \s-1DES\s0 or 128 bit \s-1RC2\s0 to be used. .SH "EXAMPLES" .IX Header "EXAMPLES" Convert a private key to PKCS#8 format using default parameters (\s-1AES\s0 with 256 bit key and \fBhmacWithSHA256\fR): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-out enckey.pem .Ve .PP Convert a private key to PKCS#8 unencrypted format: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-nocrypt \-out enckey.pem .Ve .PP Convert a private key to PKCS#5 v2.0 format using triple \s-1DES:\s0 .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 des3 \-out enckey.pem .Ve .PP Convert a private key to PKCS#5 v2.0 format using \s-1AES\s0 with 256 bits in \s-1CBC\s0 mode and \fBhmacWithSHA512\fR \s-1PRF:\s0 .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 aes\-256\-cbc \-v2prf hmacWithSHA512 \-out enckey.pem .Ve .PP Convert a private key to PKCS#8 using a PKCS#5 1.5 compatible algorithm (\s-1DES\s0): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v1 PBE\-MD5\-DES \-out enckey.pem .Ve .PP Convert a private key to PKCS#8 using a PKCS#12 compatible algorithm (3DES): .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-out enckey.pem \-v1 PBE\-SHA1\-3DES .Ve .PP Read a \s-1DER\s0 unencrypted PKCS#8 format private key: .PP .Vb 1 \& openssl pkcs8 \-inform DER \-nocrypt \-in key.der \-out key.pem .Ve .PP Convert a private key from any PKCS#8 encrypted format to traditional format: .PP .Vb 1 \& openssl pkcs8 \-in pk8.pem \-traditional \-out key.pem .Ve .PP Convert a private key to PKCS#8 format, encrypting with \s-1AES\-256\s0 and with one million iterations of the password: .PP .Vb 1 \& openssl pkcs8 \-in key.pem \-topk8 \-v2 aes\-256\-cbc \-iter 1000000 \-out pk8.pem .Ve .SH "STANDARDS" .IX Header "STANDARDS" Test vectors from this PKCS#5 v2.0 implementation were posted to the pkcs-tng mailing list using triple \s-1DES, DES\s0 and \s-1RC2\s0 with high iteration counts, several people confirmed that they could decrypt the private keys produced and therefore, it can be assumed that the PKCS#5 v2.0 implementation is reasonably accurate at least as far as these algorithms are concerned. .PP The format of PKCS#8 \s-1DSA\s0 (and other) private keys is not well documented: it is hidden away in PKCS#11 v2.01, section 11.9. OpenSSL's default \s-1DSA\s0 PKCS#8 private key format complies with this standard. .SH "BUGS" .IX Header "BUGS" There should be an option that prints out the encryption algorithm in use and other details such as the iteration count. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdsa\fR\|(1), \fBrsa\fR\|(1), \fBgenrsa\fR\|(1), \&\fBgendsa\fR\|(1) .SH "HISTORY" .IX Header "HISTORY" The \fB\-iter\fR option was added in OpenSSL 1.1.0. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!y$'' ecparam.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ECPARAM 1" .TH ECPARAM 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ecparam, ecparam \- EC parameter manipulation and generation .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl ecparam\fR [\fB\-help\fR] [\fB\-inform DER|PEM\fR] [\fB\-outform DER|PEM\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-noout\fR] [\fB\-text\fR] [\fB\-C\fR] [\fB\-check\fR] [\fB\-name arg\fR] [\fB\-list_curves\fR] [\fB\-conv_form arg\fR] [\fB\-param_enc arg\fR] [\fB\-no_seed\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-genkey\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to manipulate or generate \s-1EC\s0 parameter files. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN.1 DER\s0 encoded form compatible with \s-1RFC 3279\s0 EcpkParameters. The \s-1PEM\s0 form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read parameters from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option inhibits the output of the encoded version of the parameters. .IP "\fB\-text\fR" 4 .IX Item "-text" This option prints out the \s-1EC\s0 parameters in human readable form. .IP "\fB\-C\fR" 4 .IX Item "-C" This option converts the \s-1EC\s0 parameters into C code. The parameters can then be loaded by calling the \fBget_ec_group_XXX()\fR function. .IP "\fB\-check\fR" 4 .IX Item "-check" Validate the elliptic curve parameters. .IP "\fB\-name arg\fR" 4 .IX Item "-name arg" Use the \s-1EC\s0 parameters with the specified 'short' name. Use \fB\-list_curves\fR to get a list of all currently implemented \s-1EC\s0 parameters. .IP "\fB\-list_curves\fR" 4 .IX Item "-list_curves" If this options is specified \fBecparam\fR will print out a list of all currently implemented \s-1EC\s0 parameters names and exit. .IP "\fB\-conv_form\fR" 4 .IX Item "-conv_form" This specifies how the points on the elliptic curve are converted into octet strings. Possible values are: \fBcompressed\fR, \fBuncompressed\fR (the default value) and \fBhybrid\fR. For more information regarding the point conversion forms please read the X9.62 standard. \&\fBNote\fR Due to patent issues the \fBcompressed\fR option is disabled by default for binary curves and can be enabled by defining the preprocessor macro \fB\s-1OPENSSL_EC_BIN_PT_COMP\s0\fR at compile time. .IP "\fB\-param_enc arg\fR" 4 .IX Item "-param_enc arg" This specifies how the elliptic curve parameters are encoded. Possible value are: \fBnamed_curve\fR, i.e. the ec parameters are specified by an \s-1OID,\s0 or \fBexplicit\fR where the ec parameters are explicitly given (see \s-1RFC 3279\s0 for the definition of the \&\s-1EC\s0 parameters structures). The default value is \fBnamed_curve\fR. \&\fBNote\fR the \fBimplicitlyCA\fR alternative, as specified in \s-1RFC 3279,\s0 is currently not implemented in OpenSSL. .IP "\fB\-no_seed\fR" 4 .IX Item "-no_seed" This option inhibits that the 'seed' for the parameter generation is included in the ECParameters structure (see \s-1RFC 3279\s0). .IP "\fB\-genkey\fR" 4 .IX Item "-genkey" This option will generate an \s-1EC\s0 private key using the specified parameters. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBecparam\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "NOTES" .IX Header "NOTES" \&\s-1PEM\s0 format \s-1EC\s0 parameters use the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN EC PARAMETERS\-\-\-\-\- \& \-\-\-\-\-END EC PARAMETERS\-\-\-\-\- .Ve .PP OpenSSL is currently not able to generate new groups and therefore \&\fBecparam\fR can only create \s-1EC\s0 parameters from known (named) curves. .SH "EXAMPLES" .IX Header "EXAMPLES" To create \s-1EC\s0 parameters with the group 'prime192v1': .PP .Vb 1 \& openssl ecparam \-out ec_param.pem \-name prime192v1 .Ve .PP To create \s-1EC\s0 parameters with explicit parameters: .PP .Vb 1 \& openssl ecparam \-out ec_param.pem \-name prime192v1 \-param_enc explicit .Ve .PP To validate given \s-1EC\s0 parameters: .PP .Vb 1 \& openssl ecparam \-in ec_param.pem \-check .Ve .PP To create \s-1EC\s0 parameters and a private key: .PP .Vb 1 \& openssl ecparam \-out ec_key.pem \-name prime192v1 \-genkey .Ve .PP To change the point encoding to 'compressed': .PP .Vb 1 \& openssl ecparam \-in ec_in.pem \-out ec_out.pem \-conv_form compressed .Ve .PP To print out the \s-1EC\s0 parameters to standard output: .PP .Vb 1 \& openssl ecparam \-in ec_param.pem \-noout \-text .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBec\fR\|(1), \fBdsaparam\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2003\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!Mbii version.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "VERSION 1" .TH VERSION 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-version, version \- print OpenSSL version information .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl version\fR [\fB\-help\fR] [\fB\-a\fR] [\fB\-v\fR] [\fB\-b\fR] [\fB\-o\fR] [\fB\-f\fR] [\fB\-p\fR] [\fB\-d\fR] [\fB\-e\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to print out version information about OpenSSL. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-a\fR" 4 .IX Item "-a" All information, this is the same as setting all the other flags. .IP "\fB\-v\fR" 4 .IX Item "-v" The current OpenSSL version. .IP "\fB\-b\fR" 4 .IX Item "-b" The date the current version of OpenSSL was built. .IP "\fB\-o\fR" 4 .IX Item "-o" Option information: various options set when the library was built. .IP "\fB\-f\fR" 4 .IX Item "-f" Compilation flags. .IP "\fB\-p\fR" 4 .IX Item "-p" Platform setting. .IP "\fB\-d\fR" 4 .IX Item "-d" \&\s-1OPENSSLDIR\s0 setting. .IP "\fB\-e\fR" 4 .IX Item "-e" \&\s-1ENGINESDIR\s0 setting. .SH "NOTES" .IX Header "NOTES" The output of \fBopenssl version \-a\fR would typically be used when sending in a bug report. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!+{MMenc.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ENC 1" .TH ENC 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-enc, enc \- symmetric cipher routines .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl enc \-\f(BIcipher\fB\fR [\fB\-help\fR] [\fB\-list\fR] [\fB\-ciphers\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-pass arg\fR] [\fB\-e\fR] [\fB\-d\fR] [\fB\-a\fR] [\fB\-base64\fR] [\fB\-A\fR] [\fB\-k password\fR] [\fB\-kfile filename\fR] [\fB\-K key\fR] [\fB\-iv \s-1IV\s0\fR] [\fB\-S salt\fR] [\fB\-salt\fR] [\fB\-nosalt\fR] [\fB\-z\fR] [\fB\-md digest\fR] [\fB\-iter count\fR] [\fB\-pbkdf2\fR] [\fB\-p\fR] [\fB\-P\fR] [\fB\-bufsize number\fR] [\fB\-nopad\fR] [\fB\-debug\fR] [\fB\-none\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-engine id\fR] .PP \&\fBopenssl\fR \fI[cipher]\fR [\fB...\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-list\fR" 4 .IX Item "-list" List all supported ciphers. .IP "\fB\-ciphers\fR" 4 .IX Item "-ciphers" Alias of \-list to display all supported ciphers. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" The input filename, standard input by default. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" The output filename, standard output by default. .IP "\fB\-pass arg\fR" 4 .IX Item "-pass arg" The password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-e\fR" 4 .IX Item "-e" Encrypt the input data: this is the default. .IP "\fB\-d\fR" 4 .IX Item "-d" Decrypt the input data. .IP "\fB\-a\fR" 4 .IX Item "-a" Base64 process the data. This means that if encryption is taking place the data is base64 encoded after encryption. If decryption is set then the input data is base64 decoded before being decrypted. .IP "\fB\-base64\fR" 4 .IX Item "-base64" Same as \fB\-a\fR .IP "\fB\-A\fR" 4 .IX Item "-A" If the \fB\-a\fR option is set then base64 process the data on one line. .IP "\fB\-k password\fR" 4 .IX Item "-k password" The password to derive the key from. This is for compatibility with previous versions of OpenSSL. Superseded by the \fB\-pass\fR argument. .IP "\fB\-kfile filename\fR" 4 .IX Item "-kfile filename" Read the password to derive the key from the first line of \fBfilename\fR. This is for compatibility with previous versions of OpenSSL. Superseded by the \fB\-pass\fR argument. .IP "\fB\-md digest\fR" 4 .IX Item "-md digest" Use the specified digest to create the key from the passphrase. The default algorithm is sha\-256. .IP "\fB\-iter count\fR" 4 .IX Item "-iter count" Use a given number of iterations on the password in deriving the encryption key. High values increase the time required to brute-force the resulting file. This option enables the use of \s-1PBKDF2\s0 algorithm to derive the key. .IP "\fB\-pbkdf2\fR" 4 .IX Item "-pbkdf2" Use \s-1PBKDF2\s0 algorithm with default iteration count unless otherwise specified. .IP "\fB\-nosalt\fR" 4 .IX Item "-nosalt" Don't use a salt in the key derivation routines. This option \fB\s-1SHOULD NOT\s0\fR be used except for test purposes or compatibility with ancient versions of OpenSSL. .IP "\fB\-salt\fR" 4 .IX Item "-salt" Use salt (randomly generated or provide with \fB\-S\fR option) when encrypting, this is the default. .IP "\fB\-S salt\fR" 4 .IX Item "-S salt" The actual salt to use: this must be represented as a string of hex digits. .IP "\fB\-K key\fR" 4 .IX Item "-K key" The actual key to use: this must be represented as a string comprised only of hex digits. If only the key is specified, the \s-1IV\s0 must additionally specified using the \fB\-iv\fR option. When both a key and a password are specified, the key given with the \fB\-K\fR option will be used and the \s-1IV\s0 generated from the password will be taken. It does not make much sense to specify both key and password. .IP "\fB\-iv \s-1IV\s0\fR" 4 .IX Item "-iv IV" The actual \s-1IV\s0 to use: this must be represented as a string comprised only of hex digits. When only the key is specified using the \fB\-K\fR option, the \&\s-1IV\s0 must explicitly be defined. When a password is being specified using one of the other options, the \s-1IV\s0 is generated from this password. .IP "\fB\-p\fR" 4 .IX Item "-p" Print out the key and \s-1IV\s0 used. .IP "\fB\-P\fR" 4 .IX Item "-P" Print out the key and \s-1IV\s0 used then immediately exit: don't do any encryption or decryption. .IP "\fB\-bufsize number\fR" 4 .IX Item "-bufsize number" Set the buffer size for I/O. .IP "\fB\-nopad\fR" 4 .IX Item "-nopad" Disable standard block padding. .IP "\fB\-debug\fR" 4 .IX Item "-debug" Debug the BIOs used for I/O. .IP "\fB\-z\fR" 4 .IX Item "-z" Compress or decompress encrypted data using zlib after encryption or before decryption. This option exists only if OpenSSL was compiled with the zlib or zlib-dynamic option. .IP "\fB\-none\fR" 4 .IX Item "-none" Use \s-1NULL\s0 cipher (no encryption or decryption of input). .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .SH "NOTES" .IX Header "NOTES" The program can be called either as \fBopenssl cipher\fR or \&\fBopenssl enc \-cipher\fR. The first form doesn't work with engine-provided ciphers, because this form is processed before the configuration file is read and any ENGINEs loaded. Use the \fBlist\fR command to get a list of supported ciphers. .PP Engines which provide entirely new encryption algorithms (such as the ccgost engine which provides gost89 algorithm) should be configured in the configuration file. Engines specified on the command line using \-engine options can only be used for hardware-assisted implementations of ciphers which are supported by the OpenSSL core or another engine specified in the configuration file. .PP When the enc command lists supported ciphers, ciphers provided by engines, specified in the configuration files are listed too. .PP A password will be prompted for to derive the key and \s-1IV\s0 if necessary. .PP The \fB\-salt\fR option should \fB\s-1ALWAYS\s0\fR be used if the key is being derived from a password unless you want compatibility with previous versions of OpenSSL. .PP Without the \fB\-salt\fR option it is possible to perform efficient dictionary attacks on the password and to attack stream cipher encrypted data. The reason for this is that without the salt the same password always generates the same encryption key. When the salt is being used the first eight bytes of the encrypted data are reserved for the salt: it is generated at random when encrypting a file and read from the encrypted file when it is decrypted. .PP Some of the ciphers do not have large keys and others have security implications if not used correctly. A beginner is advised to just use a strong block cipher, such as \s-1AES,\s0 in \s-1CBC\s0 mode. .PP All the block ciphers normally use PKCS#5 padding, also known as standard block padding. This allows a rudimentary integrity or password check to be performed. However, since the chance of random data passing the test is better than 1 in 256 it isn't a very good test. .PP If padding is disabled then the input data must be a multiple of the cipher block length. .PP All \s-1RC2\s0 ciphers have the same key and effective key length. .PP Blowfish and \s-1RC5\s0 algorithms use a 128 bit key. .SH "SUPPORTED CIPHERS" .IX Header "SUPPORTED CIPHERS" Note that some of these ciphers can be disabled at compile time and some are available only if an appropriate engine is configured in the configuration file. The output of the \fBenc\fR command run with the \fB\-ciphers\fR option (that is \fBopenssl enc \-ciphers\fR) produces a list of ciphers, supported by your version of OpenSSL, including ones provided by configured engines. .PP The \fBenc\fR program does not support authenticated encryption modes like \s-1CCM\s0 and \s-1GCM,\s0 and will not support such modes in the future. The \fBenc\fR interface by necessity must begin streaming output (e.g., to standard output when \fB\-out\fR is not used) before the authentication tag could be validated, leading to the usage of \fBenc\fR in pipelines that begin processing untrusted data and are not capable of rolling back upon authentication failure. The \s-1AEAD\s0 modes currently in common use also suffer from catastrophic failure of confidentiality and/or integrity upon reuse of key/iv/nonce, and since \fBenc\fR places the entire burden of key/iv/nonce management upon the user, the risk of exposing \s-1AEAD\s0 modes is too great to allow. These key/iv/nonce management issues also affect other modes currently exposed in \fBenc\fR, but the failure modes are less extreme in these cases, and the functionality cannot be removed with a stable release branch. For bulk encryption of data, whether using authenticated encryption modes or other modes, \fBcms\fR\|(1) is recommended, as it provides a standard data format and performs the needed key/iv/nonce management. .PP .Vb 1 \& base64 Base 64 \& \& bf\-cbc Blowfish in CBC mode \& bf Alias for bf\-cbc \& blowfish Alias for bf\-cbc \& bf\-cfb Blowfish in CFB mode \& bf\-ecb Blowfish in ECB mode \& bf\-ofb Blowfish in OFB mode \& \& cast\-cbc CAST in CBC mode \& cast Alias for cast\-cbc \& cast5\-cbc CAST5 in CBC mode \& cast5\-cfb CAST5 in CFB mode \& cast5\-ecb CAST5 in ECB mode \& cast5\-ofb CAST5 in OFB mode \& \& chacha20 ChaCha20 algorithm \& \& des\-cbc DES in CBC mode \& des Alias for des\-cbc \& des\-cfb DES in CFB mode \& des\-ofb DES in OFB mode \& des\-ecb DES in ECB mode \& \& des\-ede\-cbc Two key triple DES EDE in CBC mode \& des\-ede Two key triple DES EDE in ECB mode \& des\-ede\-cfb Two key triple DES EDE in CFB mode \& des\-ede\-ofb Two key triple DES EDE in OFB mode \& \& des\-ede3\-cbc Three key triple DES EDE in CBC mode \& des\-ede3 Three key triple DES EDE in ECB mode \& des3 Alias for des\-ede3\-cbc \& des\-ede3\-cfb Three key triple DES EDE CFB mode \& des\-ede3\-ofb Three key triple DES EDE in OFB mode \& \& desx DESX algorithm. \& \& gost89 GOST 28147\-89 in CFB mode (provided by ccgost engine) \& gost89\-cnt \`GOST 28147\-89 in CNT mode (provided by ccgost engine) \& \& idea\-cbc IDEA algorithm in CBC mode \& idea same as idea\-cbc \& idea\-cfb IDEA in CFB mode \& idea\-ecb IDEA in ECB mode \& idea\-ofb IDEA in OFB mode \& \& rc2\-cbc 128 bit RC2 in CBC mode \& rc2 Alias for rc2\-cbc \& rc2\-cfb 128 bit RC2 in CFB mode \& rc2\-ecb 128 bit RC2 in ECB mode \& rc2\-ofb 128 bit RC2 in OFB mode \& rc2\-64\-cbc 64 bit RC2 in CBC mode \& rc2\-40\-cbc 40 bit RC2 in CBC mode \& \& rc4 128 bit RC4 \& rc4\-64 64 bit RC4 \& rc4\-40 40 bit RC4 \& \& rc5\-cbc RC5 cipher in CBC mode \& rc5 Alias for rc5\-cbc \& rc5\-cfb RC5 cipher in CFB mode \& rc5\-ecb RC5 cipher in ECB mode \& rc5\-ofb RC5 cipher in OFB mode \& \& seed\-cbc SEED cipher in CBC mode \& seed Alias for seed\-cbc \& seed\-cfb SEED cipher in CFB mode \& seed\-ecb SEED cipher in ECB mode \& seed\-ofb SEED cipher in OFB mode \& \& sm4\-cbc SM4 cipher in CBC mode \& sm4 Alias for sm4\-cbc \& sm4\-cfb SM4 cipher in CFB mode \& sm4\-ctr SM4 cipher in CTR mode \& sm4\-ecb SM4 cipher in ECB mode \& sm4\-ofb SM4 cipher in OFB mode \& \& aes\-[128|192|256]\-cbc 128/192/256 bit AES in CBC mode \& aes[128|192|256] Alias for aes\-[128|192|256]\-cbc \& aes\-[128|192|256]\-cfb 128/192/256 bit AES in 128 bit CFB mode \& aes\-[128|192|256]\-cfb1 128/192/256 bit AES in 1 bit CFB mode \& aes\-[128|192|256]\-cfb8 128/192/256 bit AES in 8 bit CFB mode \& aes\-[128|192|256]\-ctr 128/192/256 bit AES in CTR mode \& aes\-[128|192|256]\-ecb 128/192/256 bit AES in ECB mode \& aes\-[128|192|256]\-ofb 128/192/256 bit AES in OFB mode \& \& aria\-[128|192|256]\-cbc 128/192/256 bit ARIA in CBC mode \& aria[128|192|256] Alias for aria\-[128|192|256]\-cbc \& aria\-[128|192|256]\-cfb 128/192/256 bit ARIA in 128 bit CFB mode \& aria\-[128|192|256]\-cfb1 128/192/256 bit ARIA in 1 bit CFB mode \& aria\-[128|192|256]\-cfb8 128/192/256 bit ARIA in 8 bit CFB mode \& aria\-[128|192|256]\-ctr 128/192/256 bit ARIA in CTR mode \& aria\-[128|192|256]\-ecb 128/192/256 bit ARIA in ECB mode \& aria\-[128|192|256]\-ofb 128/192/256 bit ARIA in OFB mode \& \& camellia\-[128|192|256]\-cbc 128/192/256 bit Camellia in CBC mode \& camellia[128|192|256] Alias for camellia\-[128|192|256]\-cbc \& camellia\-[128|192|256]\-cfb 128/192/256 bit Camellia in 128 bit CFB mode \& camellia\-[128|192|256]\-cfb1 128/192/256 bit Camellia in 1 bit CFB mode \& camellia\-[128|192|256]\-cfb8 128/192/256 bit Camellia in 8 bit CFB mode \& camellia\-[128|192|256]\-ctr 128/192/256 bit Camellia in CTR mode \& camellia\-[128|192|256]\-ecb 128/192/256 bit Camellia in ECB mode \& camellia\-[128|192|256]\-ofb 128/192/256 bit Camellia in OFB mode .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" Just base64 encode a binary file: .PP .Vb 1 \& openssl base64 \-in file.bin \-out file.b64 .Ve .PP Decode the same file .PP .Vb 1 \& openssl base64 \-d \-in file.b64 \-out file.bin .Ve .PP Encrypt a file using \s-1AES\-128\s0 using a prompted password and \s-1PBKDF2\s0 key derivation: .PP .Vb 1 \& openssl enc \-aes128 \-pbkdf2 \-in file.txt \-out file.aes128 .Ve .PP Decrypt a file using a supplied password: .PP .Vb 2 \& openssl enc \-aes128 \-pbkdf2 \-d \-in file.aes128 \-out file.txt \e \& \-pass pass: .Ve .PP Encrypt a file then base64 encode it (so it can be sent via mail for example) using \s-1AES\-256\s0 in \s-1CTR\s0 mode and \s-1PBKDF2\s0 key derivation: .PP .Vb 1 \& openssl enc \-aes\-256\-ctr \-pbkdf2 \-a \-in file.txt \-out file.aes256 .Ve .PP Base64 decode a file then decrypt it using a password supplied in a file: .PP .Vb 2 \& openssl enc \-aes\-256\-ctr \-pbkdf2 \-d \-a \-in file.aes256 \-out file.txt \e \& \-pass file: .Ve .SH "BUGS" .IX Header "BUGS" The \fB\-A\fR option when used with large files doesn't work properly. .PP The \fBenc\fR program only supports a fixed number of algorithms with certain parameters. So if, for example, you want to use \s-1RC2\s0 with a 76 bit key or \s-1RC4\s0 with an 84 bit key you can't use this program. .SH "HISTORY" .IX Header "HISTORY" The default digest was changed from \s-1MD5\s0 to \s-1SHA256\s0 in OpenSSL 1.1.0. .PP The \fB\-list\fR option was added in OpenSSL 1.1.1e. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!H))rsa.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "RSA 1" .TH RSA 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-rsa, rsa \- RSA key processing tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBrsa\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-aes128\fR] [\fB\-aes192\fR] [\fB\-aes256\fR] [\fB\-aria128\fR] [\fB\-aria192\fR] [\fB\-aria256\fR] [\fB\-camellia128\fR] [\fB\-camellia192\fR] [\fB\-camellia256\fR] [\fB\-des\fR] [\fB\-des3\fR] [\fB\-idea\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-modulus\fR] [\fB\-check\fR] [\fB\-pubin\fR] [\fB\-pubout\fR] [\fB\-RSAPublicKey_in\fR] [\fB\-RSAPublicKey_out\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBrsa\fR command processes \s-1RSA\s0 keys. They can be converted between various forms and their components printed out. \fBNote\fR this command uses the traditional SSLeay compatible format for private key encryption: newer applications should use the more secure PKCS#8 format using the \fBpkcs8\fR utility. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN1 DER\s0 encoded form compatible with the PKCS#1 RSAPrivateKey or SubjectPublicKeyInfo format. The \fB\s-1PEM\s0\fR form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. On input PKCS#8 format private keys are also accepted. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write a key to or standard output if this option is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-passout password\fR" 4 .IX Item "-passout password" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-aes128\fR, \fB\-aes192\fR, \fB\-aes256\fR, \fB\-aria128\fR, \fB\-aria192\fR, \fB\-aria256\fR, \fB\-camellia128\fR, \fB\-camellia192\fR, \fB\-camellia256\fR, \fB\-des\fR, \fB\-des3\fR, \fB\-idea\fR" 4 .IX Item "-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea" These options encrypt the private key with the specified cipher before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the \fBrsa\fR utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with \s-1PEM\s0 format output files. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the various public or private key components in plain text in addition to the encoded version. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the key. .IP "\fB\-modulus\fR" 4 .IX Item "-modulus" This option prints out the value of the modulus of the key. .IP "\fB\-check\fR" 4 .IX Item "-check" This option checks the consistency of an \s-1RSA\s0 private key. .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" By default a private key is read from the input file: with this option a public key is read instead. .IP "\fB\-pubout\fR" 4 .IX Item "-pubout" By default a private key is output: with this option a public key will be output instead. This option is automatically set if the input is a public key. .IP "\fB\-RSAPublicKey_in\fR, \fB\-RSAPublicKey_out\fR" 4 .IX Item "-RSAPublicKey_in, -RSAPublicKey_out" Like \fB\-pubin\fR and \fB\-pubout\fR except \fBRSAPublicKey\fR format is used instead. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBrsa\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 private key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\- \& \-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\- .Ve .PP The \s-1PEM\s0 public key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\- \& \-\-\-\-\-END PUBLIC KEY\-\-\-\-\- .Ve .PP The \s-1PEM\s0 \fBRSAPublicKey\fR format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN RSA PUBLIC KEY\-\-\-\-\- \& \-\-\-\-\-END RSA PUBLIC KEY\-\-\-\-\- .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" To remove the pass phrase on an \s-1RSA\s0 private key: .PP .Vb 1 \& openssl rsa \-in key.pem \-out keyout.pem .Ve .PP To encrypt a private key using triple \s-1DES:\s0 .PP .Vb 1 \& openssl rsa \-in key.pem \-des3 \-out keyout.pem .Ve .PP To convert a private key from \s-1PEM\s0 to \s-1DER\s0 format: .PP .Vb 1 \& openssl rsa \-in key.pem \-outform DER \-out keyout.der .Ve .PP To print out the components of a private key to standard output: .PP .Vb 1 \& openssl rsa \-in key.pem \-text \-noout .Ve .PP To just output the public part of a private key: .PP .Vb 1 \& openssl rsa \-in key.pem \-pubout \-out pubkey.pem .Ve .PP Output the public part of a private key in \fBRSAPublicKey\fR format: .PP .Vb 1 \& openssl rsa \-in key.pem \-RSAPublicKey_out \-out pubkey.pem .Ve .SH "BUGS" .IX Header "BUGS" There should be an option that automatically handles .key files, without having to manually edit them. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBpkcs8\fR\|(1), \fBdsa\fR\|(1), \fBgenrsa\fR\|(1), \&\fBgendsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!|verify.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "VERIFY 1" .TH VERIFY 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-verify, verify \- Utility to verify certificates .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBverify\fR [\fB\-help\fR] [\fB\-CAfile file\fR] [\fB\-CApath directory\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-allow_proxy_certs\fR] [\fB\-attime timestamp\fR] [\fB\-check_ss_sig\fR] [\fB\-CRLfile file\fR] [\fB\-crl_download\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-engine id\fR] [\fB\-explicit_policy\fR] [\fB\-extended_crl\fR] [\fB\-ignore_critical\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-nameopt option\fR] [\fB\-no_check_time\fR] [\fB\-partial_chain\fR] [\fB\-policy arg\fR] [\fB\-policy_check\fR] [\fB\-policy_print\fR] [\fB\-purpose purpose\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_192\fR] [\fB\-trusted_first\fR] [\fB\-no_alt_chains\fR] [\fB\-untrusted file\fR] [\fB\-trusted file\fR] [\fB\-use_deltas\fR] [\fB\-verbose\fR] [\fB\-auth_level level\fR] [\fB\-verify_depth num\fR] [\fB\-verify_email email\fR] [\fB\-verify_hostname hostname\fR] [\fB\-verify_ip ip\fR] [\fB\-verify_name name\fR] [\fB\-x509_strict\fR] [\fB\-show_chain\fR] [\fB\-\fR] [certificates] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBverify\fR command verifies certificate chains. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" A \fBfile\fR of trusted certificates. The file should contain one or more certificates in \s-1PEM\s0 format. .IP "\fB\-CApath directory\fR" 4 .IX Item "-CApath directory" A directory of trusted certificates. The certificates should have names of the form: hash.0 or have symbolic links to them of this form (\*(L"hash\*(R" is the hashed certificate subject name: see the \fB\-hash\fR option of the \fBx509\fR utility). Under Unix the \fBc_rehash\fR script will automatically create symbolic links to a directory of certificates. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location. .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location. .IP "\fB\-allow_proxy_certs\fR" 4 .IX Item "-allow_proxy_certs" Allow the verification of proxy certificates. .IP "\fB\-attime timestamp\fR" 4 .IX Item "-attime timestamp" Perform validation checks using time specified by \fBtimestamp\fR and not current system time. \fBtimestamp\fR is the number of seconds since 01.01.1970 (\s-1UNIX\s0 time). .IP "\fB\-check_ss_sig\fR" 4 .IX Item "-check_ss_sig" Verify the signature of the last certificate in a chain if the certificate is supposedly self-signed. This is prohibited and will result in an error if it is a non-conforming \s-1CA\s0 certificate with key usage restrictions not including the keyCertSign bit. This verification is disabled by default because it doesn't add any security. .IP "\fB\-CRLfile file\fR" 4 .IX Item "-CRLfile file" The \fBfile\fR should contain one or more CRLs in \s-1PEM\s0 format. This option can be specified more than once to include CRLs from multiple \&\fBfiles\fR. .IP "\fB\-crl_download\fR" 4 .IX Item "-crl_download" Attempt to download \s-1CRL\s0 information for this certificate. .IP "\fB\-crl_check\fR" 4 .IX Item "-crl_check" Checks end entity certificate validity by attempting to look up a valid \s-1CRL.\s0 If a valid \s-1CRL\s0 cannot be found an error occurs. .IP "\fB\-crl_check_all\fR" 4 .IX Item "-crl_check_all" Checks the validity of \fBall\fR certificates in the chain by attempting to look up valid CRLs. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine \fBid\fR will cause \fBverify\fR\|(1) to attempt to load the specified engine. The engine will then be set as the default for all its supported algorithms. If you want to load certificates or CRLs that require engine support via any of the \fB\-trusted\fR, \fB\-untrusted\fR or \fB\-CRLfile\fR options, the \fB\-engine\fR option must be specified before those options. .IP "\fB\-explicit_policy\fR" 4 .IX Item "-explicit_policy" Set policy variable require-explicit-policy (see \s-1RFC5280\s0). .IP "\fB\-extended_crl\fR" 4 .IX Item "-extended_crl" Enable extended \s-1CRL\s0 features such as indirect CRLs and alternate \s-1CRL\s0 signing keys. .IP "\fB\-ignore_critical\fR" 4 .IX Item "-ignore_critical" Normally if an unhandled critical extension is present which is not supported by OpenSSL the certificate is rejected (as required by \s-1RFC5280\s0). If this option is set critical extensions are ignored. .IP "\fB\-inhibit_any\fR" 4 .IX Item "-inhibit_any" Set policy variable inhibit-any-policy (see \s-1RFC5280\s0). .IP "\fB\-inhibit_map\fR" 4 .IX Item "-inhibit_map" Set policy variable inhibit-policy-mapping (see \s-1RFC5280\s0). .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. The \&\fBoption\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fBx509\fR\|(1) manual page for details. .IP "\fB\-no_check_time\fR" 4 .IX Item "-no_check_time" This option suppresses checking the validity period of certificates and CRLs against the current time. If option \fB\-attime timestamp\fR is used to specify a verification time, the check is not suppressed. .IP "\fB\-partial_chain\fR" 4 .IX Item "-partial_chain" Allow verification to succeed even if a \fIcomplete\fR chain cannot be built to a self-signed trust-anchor, provided it is possible to construct a chain to a trusted certificate that might not be self-signed. .IP "\fB\-policy arg\fR" 4 .IX Item "-policy arg" Enable policy processing and add \fBarg\fR to the user-initial-policy-set (see \&\s-1RFC5280\s0). The policy \fBarg\fR can be an object name an \s-1OID\s0 in numeric form. This argument can appear more than once. .IP "\fB\-policy_check\fR" 4 .IX Item "-policy_check" Enables certificate policy processing. .IP "\fB\-policy_print\fR" 4 .IX Item "-policy_print" Print out diagnostics related to policy processing. .IP "\fB\-purpose purpose\fR" 4 .IX Item "-purpose purpose" The intended use for the certificate. If this option is not specified, \&\fBverify\fR will not consider certificate purpose during chain verification. Currently accepted uses are \fBsslclient\fR, \fBsslserver\fR, \fBnssslserver\fR, \&\fBsmimesign\fR, \fBsmimeencrypt\fR. See the \fB\s-1VERIFY OPERATION\s0\fR section for more information. .IP "\fB\-suiteB_128_only\fR, \fB\-suiteB_128\fR, \fB\-suiteB_192\fR" 4 .IX Item "-suiteB_128_only, -suiteB_128, -suiteB_192" Enable the Suite B mode operation at 128 bit Level of Security, 128 bit or 192 bit, or only 192 bit Level of Security respectively. See \s-1RFC6460\s0 for details. In particular the supported signature algorithms are reduced to support only \s-1ECDSA\s0 and \s-1SHA256\s0 or \s-1SHA384\s0 and only the elliptic curves P\-256 and P\-384. .IP "\fB\-trusted_first\fR" 4 .IX Item "-trusted_first" When constructing the certificate chain, use the trusted certificates specified via \fB\-CAfile\fR, \fB\-CApath\fR or \fB\-trusted\fR before any certificates specified via \&\fB\-untrusted\fR. This can be useful in environments with Bridge or Cross-Certified CAs. As of OpenSSL 1.1.0 this option is on by default and cannot be disabled. .IP "\fB\-no_alt_chains\fR" 4 .IX Item "-no_alt_chains" By default, unless \fB\-trusted_first\fR is specified, when building a certificate chain, if the first certificate chain found is not trusted, then OpenSSL will attempt to replace untrusted issuer certificates with certificates from the trust store to see if an alternative chain can be found that is trusted. As of OpenSSL 1.1.0, with \fB\-trusted_first\fR always on, this option has no effect. .IP "\fB\-untrusted file\fR" 4 .IX Item "-untrusted file" A \fBfile\fR of additional untrusted certificates (intermediate issuer CAs) used to construct a certificate chain from the subject certificate to a trust-anchor. The \fBfile\fR should contain one or more certificates in \s-1PEM\s0 format. This option can be specified more than once to include untrusted certificates from multiple \fBfiles\fR. .IP "\fB\-trusted file\fR" 4 .IX Item "-trusted file" A \fBfile\fR of trusted certificates, which must be self-signed, unless the \&\fB\-partial_chain\fR option is specified. The \fBfile\fR contains one or more certificates in \s-1PEM\s0 format. With this option, no additional (e.g., default) certificate lists are consulted. That is, the only trust-anchors are those listed in \fBfile\fR. This option can be specified more than once to include trusted certificates from multiple \fBfiles\fR. This option implies the \fB\-no\-CAfile\fR and \fB\-no\-CApath\fR options. This option cannot be used in combination with either of the \fB\-CAfile\fR or \&\fB\-CApath\fR options. .IP "\fB\-use_deltas\fR" 4 .IX Item "-use_deltas" Enable support for delta CRLs. .IP "\fB\-verbose\fR" 4 .IX Item "-verbose" Print extra information about the operations being performed. .IP "\fB\-auth_level level\fR" 4 .IX Item "-auth_level level" Set the certificate chain authentication security level to \fBlevel\fR. The authentication security level determines the acceptable signature and public key strength when verifying certificate chains. For a certificate chain to validate, the public keys of all the certificates must meet the specified security \fBlevel\fR. The signature algorithm security level is enforced for all the certificates in the chain except for the chain's \fItrust anchor\fR, which is either directly trusted or validated by means other than its signature. See \fBSSL_CTX_set_security_level\fR\|(3) for the definitions of the available levels. The default security level is \-1, or \*(L"not set\*(R". At security level 0 or lower all algorithms are acceptable. Security level 1 requires at least 80\-bit\-equivalent security and is broadly interoperable, though it will, for example, reject \s-1MD5\s0 signatures or \s-1RSA\s0 keys shorter than 1024 bits. .IP "\fB\-verify_depth num\fR" 4 .IX Item "-verify_depth num" Limit the certificate chain to \fBnum\fR intermediate \s-1CA\s0 certificates. A maximal depth chain can have up to \fBnum+2\fR certificates, since neither the end-entity certificate nor the trust-anchor certificate count against the \&\fB\-verify_depth\fR limit. .IP "\fB\-verify_email email\fR" 4 .IX Item "-verify_email email" Verify if the \fBemail\fR matches the email address in Subject Alternative Name or the email in the subject Distinguished Name. .IP "\fB\-verify_hostname hostname\fR" 4 .IX Item "-verify_hostname hostname" Verify if the \fBhostname\fR matches \s-1DNS\s0 name in Subject Alternative Name or Common Name in the subject certificate. .IP "\fB\-verify_ip ip\fR" 4 .IX Item "-verify_ip ip" Verify if the \fBip\fR matches the \s-1IP\s0 address in Subject Alternative Name of the subject certificate. .IP "\fB\-verify_name name\fR" 4 .IX Item "-verify_name name" Use default verification policies like trust model and required certificate policies identified by \fBname\fR. The trust model determines which auxiliary trust or reject OIDs are applicable to verifying the given certificate chain. See the \fB\-addtrust\fR and \fB\-addreject\fR options of the \fBx509\fR\|(1) command-line utility. Supported policy names include: \fBdefault\fR, \fBpkcs7\fR, \fBsmime_sign\fR, \&\fBssl_client\fR, \fBssl_server\fR. These mimics the combinations of purpose and trust settings used in \s-1SSL, CMS\s0 and S/MIME. As of OpenSSL 1.1.0, the trust model is inferred from the purpose when not specified, so the \fB\-verify_name\fR options are functionally equivalent to the corresponding \fB\-purpose\fR settings. .IP "\fB\-x509_strict\fR" 4 .IX Item "-x509_strict" For strict X.509 compliance, disable non-compliant workarounds for broken certificates. .IP "\fB\-show_chain\fR" 4 .IX Item "-show_chain" Display information about the certificate chain that has been built (if successful). Certificates in the chain that came from the untrusted list will be flagged as \*(L"untrusted\*(R". .IP "\fB\-\fR" 4 .IX Item "-" Indicates the last option. All arguments following this are assumed to be certificate files. This is useful if the first certificate filename begins with a \fB\-\fR. .IP "\fBcertificates\fR" 4 .IX Item "certificates" One or more certificates to verify. If no certificates are given, \fBverify\fR will attempt to read a certificate from standard input. Certificates must be in \s-1PEM\s0 format. .SH "VERIFY OPERATION" .IX Header "VERIFY OPERATION" The \fBverify\fR program uses the same functions as the internal \s-1SSL\s0 and S/MIME verification, therefore, this description applies to these verify operations too. .PP There is one crucial difference between the verify operations performed by the \fBverify\fR program: wherever possible an attempt is made to continue after an error whereas normally the verify operation would halt on the first error. This allows all the problems with a certificate chain to be determined. .PP The verify operation consists of a number of separate steps. .PP Firstly a certificate chain is built up starting from the supplied certificate and ending in the root \s-1CA.\s0 It is an error if the whole chain cannot be built up. The chain is built up by looking up the issuers certificate of the current certificate. If a certificate is found which is its own issuer it is assumed to be the root \&\s-1CA.\s0 .PP The process of 'looking up the issuers certificate' itself involves a number of steps. After all certificates whose subject name matches the issuer name of the current certificate are subject to further tests. The relevant authority key identifier components of the current certificate (if present) must match the subject key identifier (if present) and issuer and serial number of the candidate issuer, in addition the keyUsage extension of the candidate issuer (if present) must permit certificate signing. .PP The lookup first looks in the list of untrusted certificates and if no match is found the remaining lookups are from the trusted certificates. The root \s-1CA\s0 is always looked up in the trusted certificate list: if the certificate to verify is a root certificate then an exact match must be found in the trusted list. .PP The second operation is to check every untrusted certificate's extensions for consistency with the supplied purpose. If the \fB\-purpose\fR option is not included then no checks are done. The supplied or \*(L"leaf\*(R" certificate must have extensions compatible with the supplied purpose and all other certificates must also be valid \&\s-1CA\s0 certificates. The precise extensions required are described in more detail in the \fB\s-1CERTIFICATE EXTENSIONS\s0\fR section of the \fBx509\fR utility. .PP The third operation is to check the trust settings on the root \s-1CA.\s0 The root \s-1CA\s0 should be trusted for the supplied purpose. For compatibility with previous versions of OpenSSL, a certificate with no trust settings is considered to be valid for all purposes. .PP The final operation is to check the validity of the certificate chain. For each element in the chain, including the root \s-1CA\s0 certificate, the validity period as specified by the \f(CW\*(C`notBefore\*(C'\fR and \f(CW\*(C`notAfter\*(C'\fR fields is checked against the current system time. The \fB\-attime\fR flag may be used to use a reference time other than \*(L"now.\*(R" The certificate signature is checked as well (except for the signature of the typically self-signed root \s-1CA\s0 certificate, which is verified only if the \fB\-check_ss_sig\fR option is given). .PP If all operations complete successfully then certificate is considered valid. If any operation fails then the certificate is not valid. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" When a verify operation fails the output messages can be somewhat cryptic. The general form of the error message is: .PP .Vb 2 \& server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit) \& error 24 at 1 depth lookup:invalid CA certificate .Ve .PP The first line contains the name of the certificate being verified followed by the subject name of the certificate. The second line contains the error number and the depth. The depth is number of the certificate being verified when a problem was detected starting with zero for the certificate being verified itself then 1 for the \s-1CA\s0 that signed the certificate and so on. Finally a text version of the error number is presented. .PP A partial list of the error codes and messages is shown below, this also includes the name of the error code as defined in the header file x509_vfy.h Some of the error codes are defined but never returned: these are described as \*(L"unused\*(R". .IP "\fBX509_V_OK\fR" 4 .IX Item "X509_V_OK" The operation was successful. .IP "\fBX509_V_ERR_UNSPECIFIED\fR" 4 .IX Item "X509_V_ERR_UNSPECIFIED" Unspecified error; should not happen. .IP "\fBX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT" The issuer certificate of a looked up certificate could not be found. This normally means the list of trusted certificates is not complete. .IP "\fBX509_V_ERR_UNABLE_TO_GET_CRL\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_GET_CRL" The \s-1CRL\s0 of a certificate could not be found. .IP "\fBX509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE" The certificate signature could not be decrypted. This means that the actual signature value could not be determined rather than it not matching the expected value, this is only meaningful for \s-1RSA\s0 keys. .IP "\fBX509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE" The \s-1CRL\s0 signature could not be decrypted: this means that the actual signature value could not be determined rather than it not matching the expected value. Unused. .IP "\fBX509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY" The public key in the certificate SubjectPublicKeyInfo could not be read. .IP "\fBX509_V_ERR_CERT_SIGNATURE_FAILURE\fR" 4 .IX Item "X509_V_ERR_CERT_SIGNATURE_FAILURE" The signature of the certificate is invalid. .IP "\fBX509_V_ERR_CRL_SIGNATURE_FAILURE\fR" 4 .IX Item "X509_V_ERR_CRL_SIGNATURE_FAILURE" The signature of the certificate is invalid. .IP "\fBX509_V_ERR_CERT_NOT_YET_VALID\fR" 4 .IX Item "X509_V_ERR_CERT_NOT_YET_VALID" The certificate is not yet valid: the notBefore date is after the current time. .IP "\fBX509_V_ERR_CERT_HAS_EXPIRED\fR" 4 .IX Item "X509_V_ERR_CERT_HAS_EXPIRED" The certificate has expired: that is the notAfter date is before the current time. .IP "\fBX509_V_ERR_CRL_NOT_YET_VALID\fR" 4 .IX Item "X509_V_ERR_CRL_NOT_YET_VALID" The \s-1CRL\s0 is not yet valid. .IP "\fBX509_V_ERR_CRL_HAS_EXPIRED\fR" 4 .IX Item "X509_V_ERR_CRL_HAS_EXPIRED" The \s-1CRL\s0 has expired. .IP "\fBX509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD\fR" 4 .IX Item "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD" The certificate notBefore field contains an invalid time. .IP "\fBX509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD\fR" 4 .IX Item "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD" The certificate notAfter field contains an invalid time. .IP "\fBX509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD\fR" 4 .IX Item "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD" The \s-1CRL\s0 lastUpdate field contains an invalid time. .IP "\fBX509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD\fR" 4 .IX Item "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD" The \s-1CRL\s0 nextUpdate field contains an invalid time. .IP "\fBX509_V_ERR_OUT_OF_MEM\fR" 4 .IX Item "X509_V_ERR_OUT_OF_MEM" An error occurred trying to allocate memory. This should never happen. .IP "\fBX509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT\fR" 4 .IX Item "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT" The passed certificate is self-signed and the same certificate cannot be found in the list of trusted certificates. .IP "\fBX509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN\fR" 4 .IX Item "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN" The certificate chain could be built up using the untrusted certificates but the root could not be found locally. .IP "\fBX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY" The issuer certificate could not be found: this occurs if the issuer certificate of an untrusted certificate cannot be found. .IP "\fBX509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE" No signatures could be verified because the chain contains only one certificate and it is not self signed. .IP "\fBX509_V_ERR_CERT_CHAIN_TOO_LONG\fR" 4 .IX Item "X509_V_ERR_CERT_CHAIN_TOO_LONG" The certificate chain length is greater than the supplied maximum depth. Unused. .IP "\fBX509_V_ERR_CERT_REVOKED\fR" 4 .IX Item "X509_V_ERR_CERT_REVOKED" The certificate has been revoked. .IP "\fBX509_V_ERR_INVALID_CA\fR" 4 .IX Item "X509_V_ERR_INVALID_CA" A \s-1CA\s0 certificate is invalid. Either it is not a \s-1CA\s0 or its extensions are not consistent with the supplied purpose. .IP "\fBX509_V_ERR_PATH_LENGTH_EXCEEDED\fR" 4 .IX Item "X509_V_ERR_PATH_LENGTH_EXCEEDED" The basicConstraints pathlength parameter has been exceeded. .IP "\fBX509_V_ERR_INVALID_PURPOSE\fR" 4 .IX Item "X509_V_ERR_INVALID_PURPOSE" The supplied certificate cannot be used for the specified purpose. .IP "\fBX509_V_ERR_CERT_UNTRUSTED\fR" 4 .IX Item "X509_V_ERR_CERT_UNTRUSTED" The root \s-1CA\s0 is not marked as trusted for the specified purpose. .IP "\fBX509_V_ERR_CERT_REJECTED\fR" 4 .IX Item "X509_V_ERR_CERT_REJECTED" The root \s-1CA\s0 is marked to reject the specified purpose. .IP "\fBX509_V_ERR_SUBJECT_ISSUER_MISMATCH\fR" 4 .IX Item "X509_V_ERR_SUBJECT_ISSUER_MISMATCH" Not used as of OpenSSL 1.1.0 as a result of the deprecation of the \&\fB\-issuer_checks\fR option. .IP "\fBX509_V_ERR_AKID_SKID_MISMATCH\fR" 4 .IX Item "X509_V_ERR_AKID_SKID_MISMATCH" Not used as of OpenSSL 1.1.0 as a result of the deprecation of the \&\fB\-issuer_checks\fR option. .IP "\fBX509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH\fR" 4 .IX Item "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH" Not used as of OpenSSL 1.1.0 as a result of the deprecation of the \&\fB\-issuer_checks\fR option. .IP "\fBX509_V_ERR_KEYUSAGE_NO_CERTSIGN\fR" 4 .IX Item "X509_V_ERR_KEYUSAGE_NO_CERTSIGN" Not used as of OpenSSL 1.1.0 as a result of the deprecation of the \&\fB\-issuer_checks\fR option. .IP "\fBX509_V_ERR_UNABLE_TO_GET_CRL_ISSUER\fR" 4 .IX Item "X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER" Unable to get \s-1CRL\s0 issuer certificate. .IP "\fBX509_V_ERR_UNHANDLED_CRITICAL_EXTENSION\fR" 4 .IX Item "X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION" Unhandled critical extension. .IP "\fBX509_V_ERR_KEYUSAGE_NO_CRL_SIGN\fR" 4 .IX Item "X509_V_ERR_KEYUSAGE_NO_CRL_SIGN" Key usage does not include \s-1CRL\s0 signing. .IP "\fBX509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION\fR" 4 .IX Item "X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION" Unhandled critical \s-1CRL\s0 extension. .IP "\fBX509_V_ERR_INVALID_NON_CA\fR" 4 .IX Item "X509_V_ERR_INVALID_NON_CA" Invalid non-CA certificate has \s-1CA\s0 markings. .IP "\fBX509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED\fR" 4 .IX Item "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" Proxy path length constraint exceeded. .IP "\fBX509_V_ERR_PROXY_SUBJECT_INVALID\fR" 4 .IX Item "X509_V_ERR_PROXY_SUBJECT_INVALID" Proxy certificate subject is invalid. It \s-1MUST\s0 be the same as the issuer with a single \s-1CN\s0 component added. .IP "\fBX509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE\fR" 4 .IX Item "X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE" Key usage does not include digital signature. .IP "\fBX509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED\fR" 4 .IX Item "X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED" Proxy certificates not allowed, please use \fB\-allow_proxy_certs\fR. .IP "\fBX509_V_ERR_INVALID_EXTENSION\fR" 4 .IX Item "X509_V_ERR_INVALID_EXTENSION" Invalid or inconsistent certificate extension. .IP "\fBX509_V_ERR_INVALID_POLICY_EXTENSION\fR" 4 .IX Item "X509_V_ERR_INVALID_POLICY_EXTENSION" Invalid or inconsistent certificate policy extension. .IP "\fBX509_V_ERR_NO_EXPLICIT_POLICY\fR" 4 .IX Item "X509_V_ERR_NO_EXPLICIT_POLICY" No explicit policy. .IP "\fBX509_V_ERR_DIFFERENT_CRL_SCOPE\fR" 4 .IX Item "X509_V_ERR_DIFFERENT_CRL_SCOPE" Different \s-1CRL\s0 scope. .IP "\fBX509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE\fR" 4 .IX Item "X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE" Unsupported extension feature. .IP "\fBX509_V_ERR_UNNESTED_RESOURCE\fR" 4 .IX Item "X509_V_ERR_UNNESTED_RESOURCE" \&\s-1RFC 3779\s0 resource not subset of parent's resources. .IP "\fBX509_V_ERR_PERMITTED_VIOLATION\fR" 4 .IX Item "X509_V_ERR_PERMITTED_VIOLATION" Permitted subtree violation. .IP "\fBX509_V_ERR_EXCLUDED_VIOLATION\fR" 4 .IX Item "X509_V_ERR_EXCLUDED_VIOLATION" Excluded subtree violation. .IP "\fBX509_V_ERR_SUBTREE_MINMAX\fR" 4 .IX Item "X509_V_ERR_SUBTREE_MINMAX" Name constraints minimum and maximum not supported. .IP "\fBX509_V_ERR_APPLICATION_VERIFICATION\fR" 4 .IX Item "X509_V_ERR_APPLICATION_VERIFICATION" Application verification failure. Unused. .IP "\fBX509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE\fR" 4 .IX Item "X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE" Unsupported name constraint type. .IP "\fBX509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX\fR" 4 .IX Item "X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX" Unsupported or invalid name constraint syntax. .IP "\fBX509_V_ERR_UNSUPPORTED_NAME_SYNTAX\fR" 4 .IX Item "X509_V_ERR_UNSUPPORTED_NAME_SYNTAX" Unsupported or invalid name syntax. .IP "\fBX509_V_ERR_CRL_PATH_VALIDATION_ERROR\fR" 4 .IX Item "X509_V_ERR_CRL_PATH_VALIDATION_ERROR" \&\s-1CRL\s0 path validation error. .IP "\fBX509_V_ERR_PATH_LOOP\fR" 4 .IX Item "X509_V_ERR_PATH_LOOP" Path loop. .IP "\fBX509_V_ERR_SUITE_B_INVALID_VERSION\fR" 4 .IX Item "X509_V_ERR_SUITE_B_INVALID_VERSION" Suite B: certificate version invalid. .IP "\fBX509_V_ERR_SUITE_B_INVALID_ALGORITHM\fR" 4 .IX Item "X509_V_ERR_SUITE_B_INVALID_ALGORITHM" Suite B: invalid public key algorithm. .IP "\fBX509_V_ERR_SUITE_B_INVALID_CURVE\fR" 4 .IX Item "X509_V_ERR_SUITE_B_INVALID_CURVE" Suite B: invalid \s-1ECC\s0 curve. .IP "\fBX509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM\fR" 4 .IX Item "X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM" Suite B: invalid signature algorithm. .IP "\fBX509_V_ERR_SUITE_B_LOS_NOT_ALLOWED\fR" 4 .IX Item "X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED" Suite B: curve not allowed for this \s-1LOS.\s0 .IP "\fBX509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256\fR" 4 .IX Item "X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256" Suite B: cannot sign P\-384 with P\-256. .IP "\fBX509_V_ERR_HOSTNAME_MISMATCH\fR" 4 .IX Item "X509_V_ERR_HOSTNAME_MISMATCH" Hostname mismatch. .IP "\fBX509_V_ERR_EMAIL_MISMATCH\fR" 4 .IX Item "X509_V_ERR_EMAIL_MISMATCH" Email address mismatch. .IP "\fBX509_V_ERR_IP_ADDRESS_MISMATCH\fR" 4 .IX Item "X509_V_ERR_IP_ADDRESS_MISMATCH" \&\s-1IP\s0 address mismatch. .IP "\fBX509_V_ERR_DANE_NO_MATCH\fR" 4 .IX Item "X509_V_ERR_DANE_NO_MATCH" \&\s-1DANE TLSA\s0 authentication is enabled, but no \s-1TLSA\s0 records matched the certificate chain. This error is only possible in \fBs_client\fR\|(1). .IP "\fBX509_V_ERR_EE_KEY_TOO_SMALL\fR" 4 .IX Item "X509_V_ERR_EE_KEY_TOO_SMALL" \&\s-1EE\s0 certificate key too weak. .IP "\fBX509_ERR_CA_KEY_TOO_SMALL\fR" 4 .IX Item "X509_ERR_CA_KEY_TOO_SMALL" \&\s-1CA\s0 certificate key too weak. .IP "\fBX509_ERR_CA_MD_TOO_WEAK\fR" 4 .IX Item "X509_ERR_CA_MD_TOO_WEAK" \&\s-1CA\s0 signature digest algorithm too weak. .IP "\fBX509_V_ERR_INVALID_CALL\fR" 4 .IX Item "X509_V_ERR_INVALID_CALL" nvalid certificate verification context. .IP "\fBX509_V_ERR_STORE_LOOKUP\fR" 4 .IX Item "X509_V_ERR_STORE_LOOKUP" Issuer certificate lookup error. .IP "\fBX509_V_ERR_NO_VALID_SCTS\fR" 4 .IX Item "X509_V_ERR_NO_VALID_SCTS" Certificate Transparency required, but no valid SCTs found. .IP "\fBX509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION\fR" 4 .IX Item "X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION" Proxy subject name violation. .IP "\fBX509_V_ERR_OCSP_VERIFY_NEEDED\fR" 4 .IX Item "X509_V_ERR_OCSP_VERIFY_NEEDED" Returned by the verify callback to indicate an \s-1OCSP\s0 verification is needed. .IP "\fBX509_V_ERR_OCSP_VERIFY_FAILED\fR" 4 .IX Item "X509_V_ERR_OCSP_VERIFY_FAILED" Returned by the verify callback to indicate \s-1OCSP\s0 verification failed. .IP "\fBX509_V_ERR_OCSP_CERT_UNKNOWN\fR" 4 .IX Item "X509_V_ERR_OCSP_CERT_UNKNOWN" Returned by the verify callback to indicate that the certificate is not recognized by the \s-1OCSP\s0 responder. .SH "BUGS" .IX Header "BUGS" Although the issuer checks are a considerable improvement over the old technique they still suffer from limitations in the underlying X509_LOOKUP \&\s-1API.\s0 One consequence of this is that trusted certificates with matching subject name must either appear in a file (as specified by the \fB\-CAfile\fR option) or a directory (as specified by \fB\-CApath\fR). If they occur in both then only the certificates in the file will be recognised. .PP Previous versions of OpenSSL assume certificates with matching subject name are identical and mishandled them. .PP Previous versions of this documentation swapped the meaning of the \&\fBX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT\fR and \&\fBX509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY\fR error codes. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBx509\fR\|(1) .SH "HISTORY" .IX Header "HISTORY" The \fB\-show_chain\fR option was added in OpenSSL 1.1.0. .PP The \fB\-issuer_checks\fR option is deprecated as of OpenSSL 1.1.0 and is silently ignored. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!۲؉wwreq.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "REQ 1" .TH REQ 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-req, req \- PKCS#10 certificate request and certificate generating utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBreq\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-text\fR] [\fB\-pubkey\fR] [\fB\-noout\fR] [\fB\-verify\fR] [\fB\-modulus\fR] [\fB\-new\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-newkey rsa:bits\fR] [\fB\-newkey alg:file\fR] [\fB\-nodes\fR] [\fB\-key filename\fR] [\fB\-keyform PEM|DER\fR] [\fB\-keyout filename\fR] [\fB\-keygen_engine id\fR] [\fB\-\f(BIdigest\fB\fR] [\fB\-config filename\fR] [\fB\-multivalue\-rdn\fR] [\fB\-x509\fR] [\fB\-days n\fR] [\fB\-set_serial n\fR] [\fB\-newhdr\fR] [\fB\-addext ext\fR] [\fB\-extensions section\fR] [\fB\-reqexts section\fR] [\fB\-precert\fR] [\fB\-utf8\fR] [\fB\-nameopt\fR] [\fB\-reqopt\fR] [\fB\-subject\fR] [\fB\-subj arg\fR] [\fB\-sigopt nm:v\fR] [\fB\-batch\fR] [\fB\-verbose\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBreq\fR command primarily creates and processes certificate requests in PKCS#10 format. It can additionally create self signed certificates for use as root CAs for example. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN1 DER\s0 encoded form compatible with the PKCS#10. The \fB\s-1PEM\s0\fR form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a request from or standard input if this option is not specified. A request is only read if the creation options (\fB\-new\fR and \fB\-newkey\fR) are not specified. .IP "\fB\-sigopt nm:v\fR" 4 .IX Item "-sigopt nm:v" Pass options to the signature algorithm during sign or verify operations. Names and values of these options are algorithm-specific. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write to or standard output by default. .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the certificate request in text form. .IP "\fB\-subject\fR" 4 .IX Item "-subject" Prints out the request subject (or certificate subject if \fB\-x509\fR is specified) .IP "\fB\-pubkey\fR" 4 .IX Item "-pubkey" Outputs the public key. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the request. .IP "\fB\-modulus\fR" 4 .IX Item "-modulus" This option prints out the value of the modulus of the public key contained in the request. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verifies the signature on the request. .IP "\fB\-new\fR" 4 .IX Item "-new" This option generates a new certificate request. It will prompt the user for the relevant field values. The actual fields prompted for and their maximum and minimum sizes are specified in the configuration file and any requested extensions. .Sp If the \fB\-key\fR option is not used it will generate a new \s-1RSA\s0 private key using information specified in the configuration file. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-newkey arg\fR" 4 .IX Item "-newkey arg" This option creates a new certificate request and a new private key. The argument takes one of several forms. \fBrsa:nbits\fR, where \&\fBnbits\fR is the number of bits, generates an \s-1RSA\s0 key \fBnbits\fR in size. If \fBnbits\fR is omitted, i.e. \fB\-newkey rsa\fR specified, the default key size, specified in the configuration file is used. .Sp All other algorithms support the \fB\-newkey alg:file\fR form, where file may be an algorithm parameter file, created by the \fBgenpkey \-genparam\fR command or and X.509 certificate for a key with appropriate algorithm. .Sp \&\fBparam:file\fR generates a key using the parameter file or certificate \fBfile\fR, the algorithm is determined by the parameters. \fBalgname:file\fR use algorithm \&\fBalgname\fR and parameter file \fBfile\fR: the two algorithms must match or an error occurs. \fBalgname\fR just uses algorithm \fBalgname\fR, and parameters, if necessary should be specified via \fB\-pkeyopt\fR parameter. .Sp \&\fBdsa:filename\fR generates a \s-1DSA\s0 key using the parameters in the file \fBfilename\fR. \fBec:filename\fR generates \s-1EC\s0 key (usable both with \&\s-1ECDSA\s0 or \s-1ECDH\s0 algorithms), \fBgost2001:filename\fR generates \s-1GOST R 34.10\-2001\s0 key (requires \fBccgost\fR engine configured in the configuration file). If just \fBgost2001\fR is specified a parameter set should be specified by \fB\-pkeyopt paramset:X\fR .IP "\fB\-pkeyopt opt:value\fR" 4 .IX Item "-pkeyopt opt:value" Set the public key algorithm option \fBopt\fR to \fBvalue\fR. The precise set of options supported depends on the public key algorithm used and its implementation. See \fB\s-1KEY GENERATION OPTIONS\s0\fR in the \fBgenpkey\fR manual page for more details. .IP "\fB\-key filename\fR" 4 .IX Item "-key filename" This specifies the file to read the private key from. It also accepts PKCS#8 format private keys for \s-1PEM\s0 format files. .IP "\fB\-keyform PEM|DER\fR" 4 .IX Item "-keyform PEM|DER" The format of the private key file specified in the \fB\-key\fR argument. \s-1PEM\s0 is the default. .IP "\fB\-keyout filename\fR" 4 .IX Item "-keyout filename" This gives the filename to write the newly created private key to. If this option is not specified then the filename present in the configuration file is used. .IP "\fB\-nodes\fR" 4 .IX Item "-nodes" If this option is specified then if a private key is created it will not be encrypted. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" This specifies the message digest to sign the request. Any digest supported by the OpenSSL \fBdgst\fR command can be used. This overrides the digest algorithm specified in the configuration file. .Sp Some public key algorithms may override this choice. For instance, \s-1DSA\s0 signatures always use \s-1SHA1, GOST R 34.10\s0 signatures always use \&\s-1GOST R 34.11\-94\s0 (\fB\-md_gost94\fR), Ed25519 and Ed448 never use any digest. .IP "\fB\-config filename\fR" 4 .IX Item "-config filename" This allows an alternative configuration file to be specified. Optional; for a description of the default value, see \*(L"\s-1COMMAND SUMMARY\*(R"\s0 in \fBopenssl\fR\|(1). .IP "\fB\-subj arg\fR" 4 .IX Item "-subj arg" Sets subject name for new request or supersedes the subject name when processing a request. The arg must be formatted as \fI/type0=value0/type1=value1/type2=...\fR. Keyword characters may be escaped by \e (backslash), and whitespace is retained. Empty values are permitted, but the corresponding type will not be included in the request. .IP "\fB\-multivalue\-rdn\fR" 4 .IX Item "-multivalue-rdn" This option causes the \-subj argument to be interpreted with full support for multivalued RDNs. Example: .Sp \&\fI/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe\fR .Sp If \-multi\-rdn is not used then the \s-1UID\s0 value is \fI123456+CN=John Doe\fR. .IP "\fB\-x509\fR" 4 .IX Item "-x509" This option outputs a self signed certificate instead of a certificate request. This is typically used to generate a test certificate or a self signed root \s-1CA.\s0 The extensions added to the certificate (if any) are specified in the configuration file. Unless specified using the \fBset_serial\fR option, a large random number will be used for the serial number. .Sp If existing request is specified with the \fB\-in\fR option, it is converted to the self signed certificate otherwise new request is created. .IP "\fB\-days n\fR" 4 .IX Item "-days n" When the \fB\-x509\fR option is being used this specifies the number of days to certify the certificate for, otherwise it is ignored. \fBn\fR should be a positive integer. The default is 30 days. .IP "\fB\-set_serial n\fR" 4 .IX Item "-set_serial n" Serial number to use when outputting a self signed certificate. This may be specified as a decimal value or a hex value if preceded by \fB0x\fR. .IP "\fB\-addext ext\fR" 4 .IX Item "-addext ext" Add a specific extension to the certificate (if the \fB\-x509\fR option is present) or certificate request. The argument must have the form of a key=value pair as it would appear in a config file. .Sp This option can be given multiple times. .IP "\fB\-extensions section\fR" 4 .IX Item "-extensions section" .PD 0 .IP "\fB\-reqexts section\fR" 4 .IX Item "-reqexts section" .PD These options specify alternative sections to include certificate extensions (if the \fB\-x509\fR option is present) or certificate request extensions. This allows several different sections to be used in the same configuration file to specify requests for a variety of purposes. .IP "\fB\-precert\fR" 4 .IX Item "-precert" A poison extension will be added to the certificate, making it a \&\*(L"pre-certificate\*(R" (see \s-1RFC6962\s0). This can be submitted to Certificate Transparency logs in order to obtain signed certificate timestamps (SCTs). These SCTs can then be embedded into the pre-certificate as an extension, before removing the poison and signing the certificate. .Sp This implies the \fB\-new\fR flag. .IP "\fB\-utf8\fR" 4 .IX Item "-utf8" This option causes field values to be interpreted as \s-1UTF8\s0 strings, by default they are interpreted as \s-1ASCII.\s0 This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid \s-1UTF8\s0 strings. .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. The \&\fBoption\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fBx509\fR\|(1) manual page for details. .IP "\fB\-reqopt\fR" 4 .IX Item "-reqopt" Customise the output format used with \fB\-text\fR. The \fBoption\fR argument can be a single option or multiple options separated by commas. .Sp See discussion of the \fB\-certopt\fR parameter in the \fBx509\fR\|(1) command. .IP "\fB\-newhdr\fR" 4 .IX Item "-newhdr" Adds the word \fB\s-1NEW\s0\fR to the \s-1PEM\s0 file header and footer lines on the outputted request. Some software (Netscape certificate server) and some CAs need this. .IP "\fB\-batch\fR" 4 .IX Item "-batch" Non-interactive mode. .IP "\fB\-verbose\fR" 4 .IX Item "-verbose" Print extra details about the operations being performed. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBreq\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-keygen_engine id\fR" 4 .IX Item "-keygen_engine id" Specifies an engine (by its unique \fBid\fR string) which would be used for key generation operations. .SH "CONFIGURATION FILE FORMAT" .IX Header "CONFIGURATION FILE FORMAT" The configuration options are specified in the \fBreq\fR section of the configuration file. As with all configuration files if no value is specified in the specific section (i.e. \fBreq\fR) then the initial unnamed or \fBdefault\fR section is searched too. .PP The options available are described in detail below. .IP "\fBinput_password output_password\fR" 4 .IX Item "input_password output_password" The passwords for the input private key file (if present) and the output private key file (if one will be created). The command line options \fBpassin\fR and \fBpassout\fR override the configuration file values. .IP "\fBdefault_bits\fR" 4 .IX Item "default_bits" Specifies the default key size in bits. .Sp This option is used in conjunction with the \fB\-new\fR option to generate a new key. It can be overridden by specifying an explicit key size in the \fB\-newkey\fR option. The smallest accepted key size is 512 bits. If no key size is specified then 2048 bits is used. .IP "\fBdefault_keyfile\fR" 4 .IX Item "default_keyfile" This is the default filename to write a private key to. If not specified the key is written to standard output. This can be overridden by the \fB\-keyout\fR option. .IP "\fBoid_file\fR" 4 .IX Item "oid_file" This specifies a file containing additional \fB\s-1OBJECT IDENTIFIERS\s0\fR. Each line of the file should consist of the numerical form of the object identifier followed by white space then the short name followed by white space and finally the long name. .IP "\fBoid_section\fR" 4 .IX Item "oid_section" This specifies a section in the configuration file containing extra object identifiers. Each line should consist of the short name of the object identifier followed by \fB=\fR and the numerical form. The short and long names are the same when this option is used. .IP "\fB\s-1RANDFILE\s0\fR" 4 .IX Item "RANDFILE" At startup the specified file is loaded into the random number generator, and at exit 256 bytes will be written to it. It is used for private key generation. .IP "\fBencrypt_key\fR" 4 .IX Item "encrypt_key" If this is set to \fBno\fR then if a private key is generated it is \&\fBnot\fR encrypted. This is equivalent to the \fB\-nodes\fR command line option. For compatibility \fBencrypt_rsa_key\fR is an equivalent option. .IP "\fBdefault_md\fR" 4 .IX Item "default_md" This option specifies the digest algorithm to use. Any digest supported by the OpenSSL \fBdgst\fR command can be used. This option can be overridden on the command line. Certain signing algorithms (i.e. Ed25519 and Ed448) will ignore any digest that has been set. .IP "\fBstring_mask\fR" 4 .IX Item "string_mask" This option masks out the use of certain string types in certain fields. Most users will not need to change this option. .Sp It can be set to several values \fBdefault\fR which is also the default option uses PrintableStrings, T61Strings and BMPStrings if the \&\fBpkix\fR value is used then only PrintableStrings and BMPStrings will be used. This follows the \s-1PKIX\s0 recommendation in \s-1RFC2459.\s0 If the \&\fButf8only\fR option is used then only UTF8Strings will be used: this is the \s-1PKIX\s0 recommendation in \s-1RFC2459\s0 after 2003. Finally the \fBnombstr\fR option just uses PrintableStrings and T61Strings: certain software has problems with BMPStrings and UTF8Strings: in particular Netscape. .IP "\fBreq_extensions\fR" 4 .IX Item "req_extensions" This specifies the configuration file section containing a list of extensions to add to the certificate request. It can be overridden by the \fB\-reqexts\fR command line switch. See the \&\fBx509v3_config\fR\|(5) manual page for details of the extension section format. .IP "\fBx509_extensions\fR" 4 .IX Item "x509_extensions" This specifies the configuration file section containing a list of extensions to add to certificate generated when the \fB\-x509\fR switch is used. It can be overridden by the \fB\-extensions\fR command line switch. .IP "\fBprompt\fR" 4 .IX Item "prompt" If set to the value \fBno\fR this disables prompting of certificate fields and just takes values from the config file directly. It also changes the expected format of the \fBdistinguished_name\fR and \fBattributes\fR sections. .IP "\fButf8\fR" 4 .IX Item "utf8" If set to the value \fByes\fR then field values to be interpreted as \s-1UTF8\s0 strings, by default they are interpreted as \s-1ASCII.\s0 This means that the field values, whether prompted from a terminal or obtained from a configuration file, must be valid \s-1UTF8\s0 strings. .IP "\fBattributes\fR" 4 .IX Item "attributes" This specifies the section containing any request attributes: its format is the same as \fBdistinguished_name\fR. Typically these may contain the challengePassword or unstructuredName types. They are currently ignored by OpenSSL's request signing utilities but some CAs might want them. .IP "\fBdistinguished_name\fR" 4 .IX Item "distinguished_name" This specifies the section containing the distinguished name fields to prompt for when generating a certificate or certificate request. The format is described in the next section. .SH "DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT" .IX Header "DISTINGUISHED NAME AND ATTRIBUTE SECTION FORMAT" There are two separate formats for the distinguished name and attribute sections. If the \fBprompt\fR option is set to \fBno\fR then these sections just consist of field names and values: for example, .PP .Vb 3 \& CN=My Name \& OU=My Organization \& emailAddress=someone@somewhere.org .Ve .PP This allows external programs (e.g. \s-1GUI\s0 based) to generate a template file with all the field names and values and just pass it to \fBreq\fR. An example of this kind of configuration file is contained in the \fB\s-1EXAMPLES\s0\fR section. .PP Alternatively if the \fBprompt\fR option is absent or not set to \fBno\fR then the file contains field prompting information. It consists of lines of the form: .PP .Vb 4 \& fieldName="prompt" \& fieldName_default="default field value" \& fieldName_min= 2 \& fieldName_max= 4 .Ve .PP \&\*(L"fieldName\*(R" is the field name being used, for example commonName (or \s-1CN\s0). The \*(L"prompt\*(R" string is used to ask the user to enter the relevant details. If the user enters nothing then the default value is used if no default value is present then the field is omitted. A field can still be omitted if a default value is present if the user just enters the '.' character. .PP The number of characters entered must be between the fieldName_min and fieldName_max limits: there may be additional restrictions based on the field being used (for example countryName can only ever be two characters long and must fit in a PrintableString). .PP Some fields (such as organizationName) can be used more than once in a \s-1DN.\s0 This presents a problem because configuration files will not recognize the same name occurring twice. To avoid this problem if the fieldName contains some characters followed by a full stop they will be ignored. So for example a second organizationName can be input by calling it \*(L"1.organizationName\*(R". .PP The actual permitted field names are any object identifier short or long names. These are compiled into OpenSSL and include the usual values such as commonName, countryName, localityName, organizationName, organizationalUnitName, stateOrProvinceName. Additionally emailAddress is included as well as name, surname, givenName, initials, and dnQualifier. .PP Additional object identifiers can be defined with the \fBoid_file\fR or \&\fBoid_section\fR options in the configuration file. Any additional fields will be treated as though they were a DirectoryString. .SH "EXAMPLES" .IX Header "EXAMPLES" Examine and verify certificate request: .PP .Vb 1 \& openssl req \-in req.pem \-text \-verify \-noout .Ve .PP Create a private key and then generate a certificate request from it: .PP .Vb 2 \& openssl genrsa \-out key.pem 2048 \& openssl req \-new \-key key.pem \-out req.pem .Ve .PP The same but just using req: .PP .Vb 1 \& openssl req \-newkey rsa:2048 \-keyout key.pem \-out req.pem .Ve .PP Generate a self signed root certificate: .PP .Vb 1 \& openssl req \-x509 \-newkey rsa:2048 \-keyout key.pem \-out req.pem .Ve .PP Example of a file pointed to by the \fBoid_file\fR option: .PP .Vb 2 \& 1.2.3.4 shortName A longer Name \& 1.2.3.6 otherName Other longer Name .Ve .PP Example of a section pointed to by \fBoid_section\fR making use of variable expansion: .PP .Vb 2 \& testoid1=1.2.3.5 \& testoid2=${testoid1}.6 .Ve .PP Sample configuration file prompting for field values: .PP .Vb 6 \& [ req ] \& default_bits = 2048 \& default_keyfile = privkey.pem \& distinguished_name = req_distinguished_name \& attributes = req_attributes \& req_extensions = v3_ca \& \& dirstring_type = nobmp \& \& [ req_distinguished_name ] \& countryName = Country Name (2 letter code) \& countryName_default = AU \& countryName_min = 2 \& countryName_max = 2 \& \& localityName = Locality Name (eg, city) \& \& organizationalUnitName = Organizational Unit Name (eg, section) \& \& commonName = Common Name (eg, YOUR name) \& commonName_max = 64 \& \& emailAddress = Email Address \& emailAddress_max = 40 \& \& [ req_attributes ] \& challengePassword = A challenge password \& challengePassword_min = 4 \& challengePassword_max = 20 \& \& [ v3_ca ] \& \& subjectKeyIdentifier=hash \& authorityKeyIdentifier=keyid:always,issuer:always \& basicConstraints = critical, CA:true .Ve .PP Sample configuration containing all field values: .PP .Vb 1 \& RANDFILE = $ENV::HOME/.rnd \& \& [ req ] \& default_bits = 2048 \& default_keyfile = keyfile.pem \& distinguished_name = req_distinguished_name \& attributes = req_attributes \& prompt = no \& output_password = mypass \& \& [ req_distinguished_name ] \& C = GB \& ST = Test State or Province \& L = Test Locality \& O = Organization Name \& OU = Organizational Unit Name \& CN = Common Name \& emailAddress = test@email.address \& \& [ req_attributes ] \& challengePassword = A challenge password .Ve .PP Example of giving the most common attributes (subject and extensions) on the command line: .PP .Vb 4 \& openssl req \-new \-subj "/C=GB/CN=foo" \e \& \-addext "subjectAltName = DNS:foo.co.uk" \e \& \-addext "certificatePolicies = 1.2.3.4" \e \& \-newkey rsa:2048 \-keyout key.pem \-out req.pem .Ve .SH "NOTES" .IX Header "NOTES" The header and footer lines in the \fB\s-1PEM\s0\fR format are normally: .PP .Vb 2 \& \-\-\-\-\-BEGIN CERTIFICATE REQUEST\-\-\-\-\- \& \-\-\-\-\-END CERTIFICATE REQUEST\-\-\-\-\- .Ve .PP some software (some versions of Netscape certificate server) instead needs: .PP .Vb 2 \& \-\-\-\-\-BEGIN NEW CERTIFICATE REQUEST\-\-\-\-\- \& \-\-\-\-\-END NEW CERTIFICATE REQUEST\-\-\-\-\- .Ve .PP which is produced with the \fB\-newhdr\fR option but is otherwise compatible. Either form is accepted transparently on input. .PP The certificate requests generated by \fBXenroll\fR with \s-1MSIE\s0 have extensions added. It includes the \fBkeyUsage\fR extension which determines the type of key (signature only or general purpose) and any additional OIDs entered by the script in an extendedKeyUsage extension. .SH "DIAGNOSTICS" .IX Header "DIAGNOSTICS" The following messages are frequently asked about: .PP .Vb 2 \& Using configuration from /some/path/openssl.cnf \& Unable to load config info .Ve .PP This is followed some time later by... .PP .Vb 2 \& unable to find \*(Aqdistinguished_name\*(Aq in config \& problems making Certificate Request .Ve .PP The first error message is the clue: it can't find the configuration file! Certain operations (like examining a certificate request) don't need a configuration file so its use isn't enforced. Generation of certificates or requests however does need a configuration file. This could be regarded as a bug. .PP Another puzzling message is this: .PP .Vb 2 \& Attributes: \& a0:00 .Ve .PP this is displayed when no attributes are present and the request includes the correct empty \fB\s-1SET OF\s0\fR structure (the \s-1DER\s0 encoding of which is 0xa0 0x00). If you just see: .PP .Vb 1 \& Attributes: .Ve .PP then the \fB\s-1SET OF\s0\fR is missing and the encoding is technically invalid (but it is tolerated). See the description of the command line option \fB\-asn1\-kludge\fR for more information. .SH "BUGS" .IX Header "BUGS" OpenSSL's handling of T61Strings (aka TeletexStrings) is broken: it effectively treats them as \s-1ISO\-8859\-1\s0 (Latin 1), Netscape and \s-1MSIE\s0 have similar behaviour. This can cause problems if you need characters that aren't available in PrintableStrings and you don't want to or can't use BMPStrings. .PP As a consequence of the T61String handling the only correct way to represent accented characters in OpenSSL is to use a BMPString: unfortunately Netscape currently chokes on these. If you have to use accented characters with Netscape and \s-1MSIE\s0 then you currently need to use the invalid T61String form. .PP The current prompting is not very friendly. It doesn't allow you to confirm what you've just entered. Other things like extensions in certificate requests are statically defined in the configuration file. Some of these: like an email address in subjectAltName should be input by the user. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBx509\fR\|(1), \fBca\fR\|(1), \fBgenrsa\fR\|(1), \&\fBgendsa\fR\|(1), \fBconfig\fR\|(5), \&\fBx509v3_config\fR\|(5) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!Ȉh#h# sess_id.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SESS_ID 1" .TH SESS_ID 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-sess_id, sess_id \- SSL/TLS session handling utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBsess_id\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER|NSS\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-context \s-1ID\s0\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBsess_id\fR process the encoded version of the \s-1SSL\s0 session structure and optionally prints out \s-1SSL\s0 session details (for example the \s-1SSL\s0 session master key) in human readable format. Since this is a diagnostic tool that needs some knowledge of the \s-1SSL\s0 protocol to use properly, most users will not need to use it. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN1 DER\s0 encoded format containing session details. The precise format can vary from one version to the next. The \fB\s-1PEM\s0\fR form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. .IP "\fB\-outform DER|PEM|NSS\fR" 4 .IX Item "-outform DER|PEM|NSS" This specifies the output format. The \fB\s-1PEM\s0\fR and \fB\s-1DER\s0\fR options have the same meaning and default as the \fB\-inform\fR option. The \fB\s-1NSS\s0\fR option outputs the session id and the master key in \s-1NSS\s0 keylog format. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read session information from or standard input by default. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write session information to or standard output if this option is not specified. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the various public or private key components in plain text in addition to the encoded version. .IP "\fB\-cert\fR" 4 .IX Item "-cert" If a certificate is present in the session it will be output using this option, if the \fB\-text\fR option is also present then it will be printed out in text form. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the session. .IP "\fB\-context \s-1ID\s0\fR" 4 .IX Item "-context ID" This option can set the session id so the output session information uses the supplied \s-1ID.\s0 The \s-1ID\s0 can be any string of characters. This option won't normally be used. .SH "OUTPUT" .IX Header "OUTPUT" Typical output: .PP .Vb 10 \& SSL\-Session: \& Protocol : TLSv1 \& Cipher : 0016 \& Session\-ID: 871E62626C554CE95488823752CBD5F3673A3EF3DCE9C67BD916C809914B40ED \& Session\-ID\-ctx: 01000000 \& Master\-Key: A7CEFC571974BE02CAC305269DC59F76EA9F0B180CB6642697A68251F2D2BB57E51DBBB4C7885573192AE9AEE220FACD \& Key\-Arg : None \& Start Time: 948459261 \& Timeout : 300 (sec) \& Verify return code 0 (ok) .Ve .PP These are described below in more detail. .IP "\fBProtocol\fR" 4 .IX Item "Protocol" This is the protocol in use TLSv1.3, TLSv1.2, TLSv1.1, TLSv1 or SSLv3. .IP "\fBCipher\fR" 4 .IX Item "Cipher" The cipher used this is the actual raw \s-1SSL\s0 or \s-1TLS\s0 cipher code, see the \s-1SSL\s0 or \s-1TLS\s0 specifications for more information. .IP "\fBSession-ID\fR" 4 .IX Item "Session-ID" The \s-1SSL\s0 session \s-1ID\s0 in hex format. .IP "\fBSession-ID-ctx\fR" 4 .IX Item "Session-ID-ctx" The session \s-1ID\s0 context in hex format. .IP "\fBMaster-Key\fR" 4 .IX Item "Master-Key" This is the \s-1SSL\s0 session master key. .IP "\fBStart Time\fR" 4 .IX Item "Start Time" This is the session start time represented as an integer in standard Unix format. .IP "\fBTimeout\fR" 4 .IX Item "Timeout" The timeout in seconds. .IP "\fBVerify return code\fR" 4 .IX Item "Verify return code" This is the return code when an \s-1SSL\s0 client certificate is verified. .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 encoded session format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN SSL SESSION PARAMETERS\-\-\-\-\- \& \-\-\-\-\-END SSL SESSION PARAMETERS\-\-\-\-\- .Ve .PP Since the \s-1SSL\s0 session output contains the master key it is possible to read the contents of an encrypted session using this information. Therefore, appropriate security precautions should be taken if the information is being output by a \*(L"real\*(R" application. This is however strongly discouraged and should only be used for debugging purposes. .SH "BUGS" .IX Header "BUGS" The cipher and start time should be printed out in human readable form. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBciphers\fR\|(1), \fBs_server\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!Yb<\<\smime.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SMIME 1" .TH SMIME 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-smime, smime \- S/MIME utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBsmime\fR [\fB\-help\fR] [\fB\-encrypt\fR] [\fB\-decrypt\fR] [\fB\-sign\fR] [\fB\-resign\fR] [\fB\-verify\fR] [\fB\-pk7out\fR] [\fB\-binary\fR] [\fB\-crlfeol\fR] [\fB\-\f(BIcipher\fB\fR] [\fB\-in file\fR] [\fB\-CAfile file\fR] [\fB\-CApath dir\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-attime timestamp\fR] [\fB\-check_ss_sig\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-explicit_policy\fR] [\fB\-extended_crl\fR] [\fB\-ignore_critical\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-partial_chain\fR] [\fB\-policy arg\fR] [\fB\-policy_check\fR] [\fB\-policy_print\fR] [\fB\-purpose purpose\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_192\fR] [\fB\-trusted_first\fR] [\fB\-no_alt_chains\fR] [\fB\-use_deltas\fR] [\fB\-auth_level num\fR] [\fB\-verify_depth num\fR] [\fB\-verify_email email\fR] [\fB\-verify_hostname hostname\fR] [\fB\-verify_ip ip\fR] [\fB\-verify_name name\fR] [\fB\-x509_strict\fR] [\fB\-certfile file\fR] [\fB\-signer file\fR] [\fB\-recip file\fR] [\fB\-inform SMIME|PEM|DER\fR] [\fB\-passin arg\fR] [\fB\-inkey file_or_id\fR] [\fB\-out file\fR] [\fB\-outform SMIME|PEM|DER\fR] [\fB\-content file\fR] [\fB\-to addr\fR] [\fB\-from ad\fR] [\fB\-subject s\fR] [\fB\-text\fR] [\fB\-indef\fR] [\fB\-noindef\fR] [\fB\-stream\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-md digest\fR] [cert.pem]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBsmime\fR command handles S/MIME mail. It can encrypt, decrypt, sign and verify S/MIME messages. .SH "OPTIONS" .IX Header "OPTIONS" There are six operation options that set the type of operation to be performed. The meaning of the other options varies according to the operation type. .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-encrypt\fR" 4 .IX Item "-encrypt" Encrypt mail for the given recipient certificates. Input file is the message to be encrypted. The output file is the encrypted mail in \s-1MIME\s0 format. .Sp Note that no revocation check is done for the recipient cert, so if that key has been compromised, others may be able to decrypt the text. .IP "\fB\-decrypt\fR" 4 .IX Item "-decrypt" Decrypt mail using the supplied certificate and private key. Expects an encrypted mail message in \s-1MIME\s0 format for the input file. The decrypted mail is written to the output file. .IP "\fB\-sign\fR" 4 .IX Item "-sign" Sign mail using the supplied certificate and private key. Input file is the message to be signed. The signed message in \s-1MIME\s0 format is written to the output file. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verify signed mail. Expects a signed mail message on input and outputs the signed data. Both clear text and opaque signing is supported. .IP "\fB\-pk7out\fR" 4 .IX Item "-pk7out" Takes an input message and writes out a \s-1PEM\s0 encoded PKCS#7 structure. .IP "\fB\-resign\fR" 4 .IX Item "-resign" Resign a message: take an existing message and one or more new signers. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" The input message to be encrypted or signed or the \s-1MIME\s0 message to be decrypted or verified. .IP "\fB\-inform SMIME|PEM|DER\fR" 4 .IX Item "-inform SMIME|PEM|DER" This specifies the input format for the PKCS#7 structure. The default is \fB\s-1SMIME\s0\fR which reads an S/MIME format message. \fB\s-1PEM\s0\fR and \fB\s-1DER\s0\fR format change this to expect \s-1PEM\s0 and \s-1DER\s0 format PKCS#7 structures instead. This currently only affects the input format of the PKCS#7 structure, if no PKCS#7 structure is being input (for example with \&\fB\-encrypt\fR or \fB\-sign\fR) this option has no effect. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" The message text that has been decrypted or verified or the output \s-1MIME\s0 format message that has been signed or verified. .IP "\fB\-outform SMIME|PEM|DER\fR" 4 .IX Item "-outform SMIME|PEM|DER" This specifies the output format for the PKCS#7 structure. The default is \fB\s-1SMIME\s0\fR which write an S/MIME format message. \fB\s-1PEM\s0\fR and \fB\s-1DER\s0\fR format change this to write \s-1PEM\s0 and \s-1DER\s0 format PKCS#7 structures instead. This currently only affects the output format of the PKCS#7 structure, if no PKCS#7 structure is being output (for example with \&\fB\-verify\fR or \fB\-decrypt\fR) this option has no effect. .IP "\fB\-stream \-indef \-noindef\fR" 4 .IX Item "-stream -indef -noindef" The \fB\-stream\fR and \fB\-indef\fR options are equivalent and enable streaming I/O for encoding operations. This permits single pass processing of data without the need to hold the entire contents in memory, potentially supporting very large files. Streaming is automatically set for S/MIME signing with detached data if the output format is \fB\s-1SMIME\s0\fR it is currently off by default for all other operations. .IP "\fB\-noindef\fR" 4 .IX Item "-noindef" Disable streaming I/O where it would produce and indefinite length constructed encoding. This option currently has no effect. In future streaming will be enabled by default on all relevant operations and this option will disable it. .IP "\fB\-content filename\fR" 4 .IX Item "-content filename" This specifies a file containing the detached content, this is only useful with the \fB\-verify\fR command. This is only usable if the PKCS#7 structure is using the detached signature form where the content is not included. This option will override any content if the input format is S/MIME and it uses the multipart/signed \s-1MIME\s0 content type. .IP "\fB\-text\fR" 4 .IX Item "-text" This option adds plain text (text/plain) \s-1MIME\s0 headers to the supplied message if encrypting or signing. If decrypting or verifying it strips off text headers: if the decrypted or verified message is not of \s-1MIME\s0 type text/plain then an error occurs. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" A file containing trusted \s-1CA\s0 certificates, only used with \fB\-verify\fR. .IP "\fB\-CApath dir\fR" 4 .IX Item "-CApath dir" A directory containing trusted \s-1CA\s0 certificates, only used with \&\fB\-verify\fR. This directory must be a standard certificate directory: that is a hash of each subject name (using \fBx509 \-hash\fR) should be linked to each certificate. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location. .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location. .IP "\fB\-md digest\fR" 4 .IX Item "-md digest" Digest algorithm to use when signing or resigning. If not present then the default digest algorithm for the signing key will be used (usually \s-1SHA1\s0). .IP "\fB\-\f(BIcipher\fB\fR" 4 .IX Item "-cipher" The encryption algorithm to use. For example \s-1DES\s0 (56 bits) \- \fB\-des\fR, triple \s-1DES\s0 (168 bits) \- \fB\-des3\fR, \&\fBEVP_get_cipherbyname()\fR function) can also be used preceded by a dash, for example \fB\-aes\-128\-cbc\fR. See \fBenc\fR for list of ciphers supported by your version of OpenSSL. .Sp If not specified triple \s-1DES\s0 is used. Only used with \fB\-encrypt\fR. .IP "\fB\-nointern\fR" 4 .IX Item "-nointern" When verifying a message normally certificates (if any) included in the message are searched for the signing certificate. With this option only the certificates specified in the \fB\-certfile\fR option are used. The supplied certificates can still be used as untrusted CAs however. .IP "\fB\-noverify\fR" 4 .IX Item "-noverify" Do not verify the signers certificate of a signed message. .IP "\fB\-nochain\fR" 4 .IX Item "-nochain" Do not do chain verification of signers certificates: that is don't use the certificates in the signed message as untrusted CAs. .IP "\fB\-nosigs\fR" 4 .IX Item "-nosigs" Don't try to verify the signatures on the message. .IP "\fB\-nocerts\fR" 4 .IX Item "-nocerts" When signing a message the signer's certificate is normally included with this option it is excluded. This will reduce the size of the signed message but the verifier must have a copy of the signers certificate available locally (passed using the \fB\-certfile\fR option for example). .IP "\fB\-noattr\fR" 4 .IX Item "-noattr" Normally when a message is signed a set of attributes are included which include the signing time and supported symmetric algorithms. With this option they are not included. .IP "\fB\-binary\fR" 4 .IX Item "-binary" Normally the input message is converted to \*(L"canonical\*(R" format which is effectively using \s-1CR\s0 and \s-1LF\s0 as end of line: as required by the S/MIME specification. When this option is present no translation occurs. This is useful when handling binary data which may not be in \s-1MIME\s0 format. .IP "\fB\-crlfeol\fR" 4 .IX Item "-crlfeol" Normally the output file uses a single \fB\s-1LF\s0\fR as end of line. When this option is present \fB\s-1CRLF\s0\fR is used instead. .IP "\fB\-nodetach\fR" 4 .IX Item "-nodetach" When signing a message use opaque signing: this form is more resistant to translation by mail relays but it cannot be read by mail agents that do not support S/MIME. Without this option cleartext signing with the \s-1MIME\s0 type multipart/signed is used. .IP "\fB\-certfile file\fR" 4 .IX Item "-certfile file" Allows additional certificates to be specified. When signing these will be included with the message. When verifying these will be searched for the signers certificates. The certificates should be in \s-1PEM\s0 format. .IP "\fB\-signer file\fR" 4 .IX Item "-signer file" A signing certificate when signing or resigning a message, this option can be used multiple times if more than one signer is required. If a message is being verified then the signers certificates will be written to this file if the verification was successful. .IP "\fB\-recip file\fR" 4 .IX Item "-recip file" The recipients certificate when decrypting a message. This certificate must match one of the recipients of the message or an error occurs. .IP "\fB\-inkey file_or_id\fR" 4 .IX Item "-inkey file_or_id" The private key to use when signing or decrypting. This must match the corresponding certificate. If this option is not specified then the private key must be included in the certificate file specified with the \fB\-recip\fR or \fB\-signer\fR file. When signing this option can be used multiple times to specify successive keys. If no engine is used, the argument is taken as a file; if an engine is specified, the argument is given to the engine as a key identifier. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The private key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fBcert.pem...\fR" 4 .IX Item "cert.pem..." One or more certificates of message recipients: used when encrypting a message. .IP "\fB\-to, \-from, \-subject\fR" 4 .IX Item "-to, -from, -subject" The relevant mail headers. These are included outside the signed portion of a message so they may be included manually. If signing then many S/MIME mail clients check the signers certificate's email address matches that specified in the From: address. .IP "\fB\-attime\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR" 4 .IX Item "-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict" Set various options of certificate chain verification. See \&\fBverify\fR\|(1) manual page for details. .SH "NOTES" .IX Header "NOTES" The \s-1MIME\s0 message must be sent without any blank lines between the headers and the output. Some mail programs will automatically add a blank line. Piping the mail directly to sendmail is one way to achieve the correct format. .PP The supplied message to be signed or encrypted must include the necessary \s-1MIME\s0 headers or many S/MIME clients won't display it properly (if at all). You can use the \fB\-text\fR option to automatically add plain text headers. .PP A \*(L"signed and encrypted\*(R" message is one where a signed message is then encrypted. This can be produced by encrypting an already signed message: see the examples section. .PP This version of the program only allows one signer per message but it will verify multiple signers on received messages. Some S/MIME clients choke if a message contains multiple signers. It is possible to sign messages \*(L"in parallel\*(R" by signing an already signed message. .PP The options \fB\-encrypt\fR and \fB\-decrypt\fR reflect common usage in S/MIME clients. Strictly speaking these process PKCS#7 enveloped data: PKCS#7 encrypted data is used for other purposes. .PP The \fB\-resign\fR option uses an existing message digest when adding a new signer. This means that attributes must be present in at least one existing signer using the same message digest or this operation will fail. .PP The \fB\-stream\fR and \fB\-indef\fR options enable streaming I/O support. As a result the encoding is \s-1BER\s0 using indefinite length constructed encoding and no longer \s-1DER.\s0 Streaming is supported for the \fB\-encrypt\fR operation and the \&\fB\-sign\fR operation if the content is not detached. .PP Streaming is always used for the \fB\-sign\fR operation with detached data but since the content is no longer part of the PKCS#7 structure the encoding remains \s-1DER.\s0 .SH "EXIT CODES" .IX Header "EXIT CODES" .IP "0" 4 The operation was completely successfully. .IP "1" 4 .IX Item "1" An error occurred parsing the command options. .IP "2" 4 .IX Item "2" One of the input files could not be read. .IP "3" 4 .IX Item "3" An error occurred creating the PKCS#7 file or when reading the \s-1MIME\s0 message. .IP "4" 4 .IX Item "4" An error occurred decrypting or verifying the message. .IP "5" 4 .IX Item "5" The message was verified correctly but an error occurred writing out the signers certificates. .SH "EXAMPLES" .IX Header "EXAMPLES" Create a cleartext signed message: .PP .Vb 2 \& openssl smime \-sign \-in message.txt \-text \-out mail.msg \e \& \-signer mycert.pem .Ve .PP Create an opaque signed message: .PP .Vb 2 \& openssl smime \-sign \-in message.txt \-text \-out mail.msg \-nodetach \e \& \-signer mycert.pem .Ve .PP Create a signed message, include some additional certificates and read the private key from another file: .PP .Vb 2 \& openssl smime \-sign \-in in.txt \-text \-out mail.msg \e \& \-signer mycert.pem \-inkey mykey.pem \-certfile mycerts.pem .Ve .PP Create a signed message with two signers: .PP .Vb 2 \& openssl smime \-sign \-in message.txt \-text \-out mail.msg \e \& \-signer mycert.pem \-signer othercert.pem .Ve .PP Send a signed message under Unix directly to sendmail, including headers: .PP .Vb 3 \& openssl smime \-sign \-in in.txt \-text \-signer mycert.pem \e \& \-from steve@openssl.org \-to someone@somewhere \e \& \-subject "Signed message" | sendmail someone@somewhere .Ve .PP Verify a message and extract the signer's certificate if successful: .PP .Vb 1 \& openssl smime \-verify \-in mail.msg \-signer user.pem \-out signedtext.txt .Ve .PP Send encrypted mail using triple \s-1DES:\s0 .PP .Vb 3 \& openssl smime \-encrypt \-in in.txt \-from steve@openssl.org \e \& \-to someone@somewhere \-subject "Encrypted message" \e \& \-des3 user.pem \-out mail.msg .Ve .PP Sign and encrypt mail: .PP .Vb 4 \& openssl smime \-sign \-in ml.txt \-signer my.pem \-text \e \& | openssl smime \-encrypt \-out mail.msg \e \& \-from steve@openssl.org \-to someone@somewhere \e \& \-subject "Signed and Encrypted message" \-des3 user.pem .Ve .PP Note: the encryption command does not include the \fB\-text\fR option because the message being encrypted already has \s-1MIME\s0 headers. .PP Decrypt mail: .PP .Vb 1 \& openssl smime \-decrypt \-in mail.msg \-recip mycert.pem \-inkey key.pem .Ve .PP The output from Netscape form signing is a PKCS#7 structure with the detached signature format. You can use this program to verify the signature by line wrapping the base64 encoded structure and surrounding it with: .PP .Vb 2 \& \-\-\-\-\-BEGIN PKCS7\-\-\-\-\- \& \-\-\-\-\-END PKCS7\-\-\-\-\- .Ve .PP and using the command: .PP .Vb 1 \& openssl smime \-verify \-inform PEM \-in signature.pem \-content content.txt .Ve .PP Alternatively you can base64 decode the signature and use: .PP .Vb 1 \& openssl smime \-verify \-inform DER \-in signature.der \-content content.txt .Ve .PP Create an encrypted message using 128 bit Camellia: .PP .Vb 1 \& openssl smime \-encrypt \-in plain.txt \-camellia128 \-out mail.msg cert.pem .Ve .PP Add a signer to an existing message: .PP .Vb 1 \& openssl smime \-resign \-in mail.msg \-signer newsign.pem \-out mail2.msg .Ve .SH "BUGS" .IX Header "BUGS" The \s-1MIME\s0 parser isn't very clever: it seems to handle most messages that I've thrown at it but it may choke on others. .PP The code currently will only write out the signer's certificate to a file: if the signer has a separate encryption certificate this must be manually extracted. There should be some heuristic that determines the correct encryption certificate. .PP Ideally a database should be maintained of a certificates for each email address. .PP The code doesn't currently take note of the permitted symmetric encryption algorithms as supplied in the SMIMECapabilities signed attribute. This means the user has to manually include the correct encryption algorithm. It should store the list of permitted ciphers in a database and only use those. .PP No revocation checking is done on the signer's certificate. .PP The current code can only handle S/MIME v2 messages, the more complex S/MIME v3 structures may cause parsing errors. .SH "HISTORY" .IX Header "HISTORY" The use of multiple \fB\-signer\fR options and the \fB\-resign\fR command were first added in OpenSSL 1.0.0 .PP The \-no_alt_chains option was added in OpenSSL 1.1.0. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!V{,,tsget.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "TSGET 1" .TH TSGET 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-tsget, tsget \- Time Stamping HTTP/HTTPS client .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBtsget\fR \&\fB\-h\fR server_url [\fB\-e\fR extension] [\fB\-o\fR output] [\fB\-v\fR] [\fB\-d\fR] [\fB\-k\fR private_key.pem] [\fB\-p\fR key_password] [\fB\-c\fR client_cert.pem] [\fB\-C\fR CA_certs.pem] [\fB\-P\fR CA_path] [\fB\-r\fR file:file...] [\fB\-g\fR EGD_socket] [request]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBtsget\fR command can be used for sending a timestamp request, as specified in \fB\s-1RFC 3161\s0\fR, to a timestamp server over \s-1HTTP\s0 or \s-1HTTPS\s0 and storing the timestamp response in a file. This tool cannot be used for creating the requests and verifying responses, you can use the OpenSSL \fB\fBts\fB\|(1)\fR command to do that. \fBtsget\fR can send several requests to the server without closing the \s-1TCP\s0 connection if more than one requests are specified on the command line. .PP The tool sends the following \s-1HTTP\s0 request for each timestamp request: .PP .Vb 7 \& POST url HTTP/1.1 \& User\-Agent: OpenTSA tsget.pl/ \& Host: : \& Pragma: no\-cache \& Content\-Type: application/timestamp\-query \& Accept: application/timestamp\-reply \& Content\-Length: length of body \& \& ...binary request specified by the user... .Ve .PP \&\fBtsget\fR expects a response of type application/timestamp\-reply, which is written to a file without any interpretation. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-h\fR server_url" 4 .IX Item "-h server_url" The \s-1URL\s0 of the \s-1HTTP/HTTPS\s0 server listening for timestamp requests. .IP "\fB\-e\fR extension" 4 .IX Item "-e extension" If the \fB\-o\fR option is not given this argument specifies the extension of the output files. The base name of the output file will be the same as those of the input files. Default extension is '.tsr'. (Optional) .IP "\fB\-o\fR output" 4 .IX Item "-o output" This option can be specified only when just one request is sent to the server. The timestamp response will be written to the given output file. '\-' means standard output. In case of multiple timestamp requests or the absence of this argument the names of the output files will be derived from the names of the input files and the default or specified extension argument. (Optional) .IP "\fB\-v\fR" 4 .IX Item "-v" The name of the currently processed request is printed on standard error. (Optional) .IP "\fB\-d\fR" 4 .IX Item "-d" Switches on verbose mode for the underlying \fBcurl\fR library. You can see detailed debug messages for the connection. (Optional) .IP "\fB\-k\fR private_key.pem" 4 .IX Item "-k private_key.pem" (\s-1HTTPS\s0) In case of certificate-based client authentication over \s-1HTTPS\s0 must contain the private key of the user. The private key file can optionally be protected by a passphrase. The \fB\-c\fR option must also be specified. (Optional) .IP "\fB\-p\fR key_password" 4 .IX Item "-p key_password" (\s-1HTTPS\s0) Specifies the passphrase for the private key specified by the \fB\-k\fR argument. If this option is omitted and the key is passphrase protected \fBtsget\fR will ask for it. (Optional) .IP "\fB\-c\fR client_cert.pem" 4 .IX Item "-c client_cert.pem" (\s-1HTTPS\s0) In case of certificate-based client authentication over \s-1HTTPS\s0 must contain the X.509 certificate of the user. The \fB\-k\fR option must also be specified. If this option is not specified no certificate-based client authentication will take place. (Optional) .IP "\fB\-C\fR CA_certs.pem" 4 .IX Item "-C CA_certs.pem" (\s-1HTTPS\s0) The trusted \s-1CA\s0 certificate store. The certificate chain of the peer's certificate must include one of the \s-1CA\s0 certificates specified in this file. Either option \fB\-C\fR or option \fB\-P\fR must be given in case of \s-1HTTPS.\s0 (Optional) .IP "\fB\-P\fR CA_path" 4 .IX Item "-P CA_path" (\s-1HTTPS\s0) The path containing the trusted \s-1CA\s0 certificates to verify the peer's certificate. The directory must be prepared with the \fBc_rehash\fR OpenSSL utility. Either option \fB\-C\fR or option \fB\-P\fR must be given in case of \&\s-1HTTPS.\s0 (Optional) .IP "\fB\-rand\fR file:file..." 4 .IX Item "-rand file:file..." The files containing random data for seeding the random number generator. Multiple files can be specified, the separator is \fB;\fR for MS-Windows, \fB,\fR for \s-1VMS\s0 and \fB:\fR for all other platforms. (Optional) .IP "\fB\-g\fR EGD_socket" 4 .IX Item "-g EGD_socket" The name of an \s-1EGD\s0 socket to get random data from. (Optional) .IP "[request]..." 4 .IX Item "[request]..." List of files containing \fB\s-1RFC 3161\s0\fR DER-encoded timestamp requests. If no requests are specified only one request will be sent to the server and it will be read from the standard input. (Optional) .SH "ENVIRONMENT VARIABLES" .IX Header "ENVIRONMENT VARIABLES" The \fB\s-1TSGET\s0\fR environment variable can optionally contain default arguments. The content of this variable is added to the list of command line arguments. .SH "EXAMPLES" .IX Header "EXAMPLES" The examples below presume that \fBfile1.tsq\fR and \fBfile2.tsq\fR contain valid timestamp requests, tsa.opentsa.org listens at port 8080 for \s-1HTTP\s0 requests and at port 8443 for \s-1HTTPS\s0 requests, the \s-1TSA\s0 service is available at the /tsa absolute path. .PP Get a timestamp response for file1.tsq over \s-1HTTP,\s0 output is written to file1.tsr: .PP .Vb 1 \& tsget \-h http://tsa.opentsa.org:8080/tsa file1.tsq .Ve .PP Get a timestamp response for file1.tsq and file2.tsq over \s-1HTTP\s0 showing progress, output is written to file1.reply and file2.reply respectively: .PP .Vb 2 \& tsget \-h http://tsa.opentsa.org:8080/tsa \-v \-e .reply \e \& file1.tsq file2.tsq .Ve .PP Create a timestamp request, write it to file3.tsq, send it to the server and write the response to file3.tsr: .PP .Vb 3 \& openssl ts \-query \-data file3.txt \-cert | tee file3.tsq \e \& | tsget \-h http://tsa.opentsa.org:8080/tsa \e \& \-o file3.tsr .Ve .PP Get a timestamp response for file1.tsq over \s-1HTTPS\s0 without client authentication: .PP .Vb 2 \& tsget \-h https://tsa.opentsa.org:8443/tsa \e \& \-C cacerts.pem file1.tsq .Ve .PP Get a timestamp response for file1.tsq over \s-1HTTPS\s0 with certificate-based client authentication (it will ask for the passphrase if client_key.pem is protected): .PP .Vb 2 \& tsget \-h https://tsa.opentsa.org:8443/tsa \-C cacerts.pem \e \& \-k client_key.pem \-c client_cert.pem file1.tsq .Ve .PP You can shorten the previous command line if you make use of the \fB\s-1TSGET\s0\fR environment variable. The following commands do the same as the previous example: .PP .Vb 4 \& TSGET=\*(Aq\-h https://tsa.opentsa.org:8443/tsa \-C cacerts.pem \e \& \-k client_key.pem \-c client_cert.pem\*(Aq \& export TSGET \& tsget file1.tsq .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBopenssl\fR\|(1), \fBts\fR\|(1), \fBcurl\fR\|(1), \&\fB\s-1RFC 3161\s0\fR .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!z ccms.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CMS 1" .TH CMS 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-cms, cms \- CMS utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBcms\fR [\fB\-help\fR] [\fB\-encrypt\fR] [\fB\-decrypt\fR] [\fB\-sign\fR] [\fB\-verify\fR] [\fB\-cmsout\fR] [\fB\-resign\fR] [\fB\-data_create\fR] [\fB\-data_out\fR] [\fB\-digest_create\fR] [\fB\-digest_verify\fR] [\fB\-compress\fR] [\fB\-uncompress\fR] [\fB\-EncryptedData_encrypt\fR] [\fB\-sign_receipt\fR] [\fB\-verify_receipt receipt\fR] [\fB\-in filename\fR] [\fB\-inform SMIME|PEM|DER\fR] [\fB\-rctform SMIME|PEM|DER\fR] [\fB\-out filename\fR] [\fB\-outform SMIME|PEM|DER\fR] [\fB\-stream \-indef \-noindef\fR] [\fB\-noindef\fR] [\fB\-content filename\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-print\fR] [\fB\-CAfile file\fR] [\fB\-CApath dir\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-attime timestamp\fR] [\fB\-check_ss_sig\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-explicit_policy\fR] [\fB\-extended_crl\fR] [\fB\-ignore_critical\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-no_check_time\fR] [\fB\-partial_chain\fR] [\fB\-policy arg\fR] [\fB\-policy_check\fR] [\fB\-policy_print\fR] [\fB\-purpose purpose\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_192\fR] [\fB\-trusted_first\fR] [\fB\-no_alt_chains\fR] [\fB\-use_deltas\fR] [\fB\-auth_level num\fR] [\fB\-verify_depth num\fR] [\fB\-verify_email email\fR] [\fB\-verify_hostname hostname\fR] [\fB\-verify_ip ip\fR] [\fB\-verify_name name\fR] [\fB\-x509_strict\fR] [\fB\-md digest\fR] [\fB\-\f(BIcipher\fB\fR] [\fB\-nointern\fR] [\fB\-noverify\fR] [\fB\-nocerts\fR] [\fB\-noattr\fR] [\fB\-nosmimecap\fR] [\fB\-binary\fR] [\fB\-crlfeol\fR] [\fB\-asciicrlf\fR] [\fB\-nodetach\fR] [\fB\-certfile file\fR] [\fB\-certsout file\fR] [\fB\-signer file\fR] [\fB\-recip file\fR] [\fB\-keyid\fR] [\fB\-receipt_request_all\fR] [\fB\-receipt_request_first\fR] [\fB\-receipt_request_from emailaddress\fR] [\fB\-receipt_request_to emailaddress\fR] [\fB\-receipt_request_print\fR] [\fB\-secretkey key\fR] [\fB\-secretkeyid id\fR] [\fB\-econtent_type type\fR] [\fB\-inkey file\fR] [\fB\-keyopt name:parameter\fR] [\fB\-passin arg\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fBcert.pem...\fR] [\fB\-to addr\fR] [\fB\-from addr\fR] [\fB\-subject subj\fR] [cert.pem]... .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBcms\fR command handles S/MIME v3.1 mail. It can encrypt, decrypt, sign and verify, compress and uncompress S/MIME messages. .SH "OPTIONS" .IX Header "OPTIONS" There are fourteen operation options that set the type of operation to be performed. The meaning of the other options varies according to the operation type. .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-encrypt\fR" 4 .IX Item "-encrypt" Encrypt mail for the given recipient certificates. Input file is the message to be encrypted. The output file is the encrypted mail in \s-1MIME\s0 format. The actual \s-1CMS\s0 type is EnvelopedData. .Sp Note that no revocation check is done for the recipient cert, so if that key has been compromised, others may be able to decrypt the text. .IP "\fB\-decrypt\fR" 4 .IX Item "-decrypt" Decrypt mail using the supplied certificate and private key. Expects an encrypted mail message in \s-1MIME\s0 format for the input file. The decrypted mail is written to the output file. .IP "\fB\-debug_decrypt\fR" 4 .IX Item "-debug_decrypt" This option sets the \fB\s-1CMS_DEBUG_DECRYPT\s0\fR flag. This option should be used with caution: see the notes section below. .IP "\fB\-sign\fR" 4 .IX Item "-sign" Sign mail using the supplied certificate and private key. Input file is the message to be signed. The signed message in \s-1MIME\s0 format is written to the output file. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verify signed mail. Expects a signed mail message on input and outputs the signed data. Both clear text and opaque signing is supported. .IP "\fB\-cmsout\fR" 4 .IX Item "-cmsout" Takes an input message and writes out a \s-1PEM\s0 encoded \s-1CMS\s0 structure. .IP "\fB\-resign\fR" 4 .IX Item "-resign" Resign a message: take an existing message and one or more new signers. .IP "\fB\-data_create\fR" 4 .IX Item "-data_create" Create a \s-1CMS\s0 \fBData\fR type. .IP "\fB\-data_out\fR" 4 .IX Item "-data_out" \&\fBData\fR type and output the content. .IP "\fB\-digest_create\fR" 4 .IX Item "-digest_create" Create a \s-1CMS\s0 \fBDigestedData\fR type. .IP "\fB\-digest_verify\fR" 4 .IX Item "-digest_verify" Verify a \s-1CMS\s0 \fBDigestedData\fR type and output the content. .IP "\fB\-compress\fR" 4 .IX Item "-compress" Create a \s-1CMS\s0 \fBCompressedData\fR type. OpenSSL must be compiled with \fBzlib\fR support for this option to work, otherwise it will output an error. .IP "\fB\-uncompress\fR" 4 .IX Item "-uncompress" Uncompress a \s-1CMS\s0 \fBCompressedData\fR type and output the content. OpenSSL must be compiled with \fBzlib\fR support for this option to work, otherwise it will output an error. .IP "\fB\-EncryptedData_encrypt\fR" 4 .IX Item "-EncryptedData_encrypt" Encrypt content using supplied symmetric key and algorithm using a \s-1CMS\s0 \&\fBEncryptedData\fR type and output the content. .IP "\fB\-sign_receipt\fR" 4 .IX Item "-sign_receipt" Generate and output a signed receipt for the supplied message. The input message \fBmust\fR contain a signed receipt request. Functionality is otherwise similar to the \fB\-sign\fR operation. .IP "\fB\-verify_receipt receipt\fR" 4 .IX Item "-verify_receipt receipt" Verify a signed receipt in filename \fBreceipt\fR. The input message \fBmust\fR contain the original receipt request. Functionality is otherwise similar to the \fB\-verify\fR operation. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" The input message to be encrypted or signed or the message to be decrypted or verified. .IP "\fB\-inform SMIME|PEM|DER\fR" 4 .IX Item "-inform SMIME|PEM|DER" This specifies the input format for the \s-1CMS\s0 structure. The default is \fB\s-1SMIME\s0\fR which reads an S/MIME format message. \fB\s-1PEM\s0\fR and \fB\s-1DER\s0\fR format change this to expect \s-1PEM\s0 and \s-1DER\s0 format \s-1CMS\s0 structures instead. This currently only affects the input format of the \s-1CMS\s0 structure, if no \s-1CMS\s0 structure is being input (for example with \&\fB\-encrypt\fR or \fB\-sign\fR) this option has no effect. .IP "\fB\-rctform SMIME|PEM|DER\fR" 4 .IX Item "-rctform SMIME|PEM|DER" Specify the format for a signed receipt for use with the \fB\-receipt_verify\fR operation. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" The message text that has been decrypted or verified or the output \s-1MIME\s0 format message that has been signed or verified. .IP "\fB\-outform SMIME|PEM|DER\fR" 4 .IX Item "-outform SMIME|PEM|DER" This specifies the output format for the \s-1CMS\s0 structure. The default is \fB\s-1SMIME\s0\fR which writes an S/MIME format message. \fB\s-1PEM\s0\fR and \fB\s-1DER\s0\fR format change this to write \s-1PEM\s0 and \s-1DER\s0 format \s-1CMS\s0 structures instead. This currently only affects the output format of the \s-1CMS\s0 structure, if no \s-1CMS\s0 structure is being output (for example with \&\fB\-verify\fR or \fB\-decrypt\fR) this option has no effect. .IP "\fB\-stream \-indef \-noindef\fR" 4 .IX Item "-stream -indef -noindef" The \fB\-stream\fR and \fB\-indef\fR options are equivalent and enable streaming I/O for encoding operations. This permits single pass processing of data without the need to hold the entire contents in memory, potentially supporting very large files. Streaming is automatically set for S/MIME signing with detached data if the output format is \fB\s-1SMIME\s0\fR it is currently off by default for all other operations. .IP "\fB\-noindef\fR" 4 .IX Item "-noindef" Disable streaming I/O where it would produce and indefinite length constructed encoding. This option currently has no effect. In future streaming will be enabled by default on all relevant operations and this option will disable it. .IP "\fB\-content filename\fR" 4 .IX Item "-content filename" This specifies a file containing the detached content, this is only useful with the \fB\-verify\fR command. This is only usable if the \s-1CMS\s0 structure is using the detached signature form where the content is not included. This option will override any content if the input format is S/MIME and it uses the multipart/signed \s-1MIME\s0 content type. .IP "\fB\-text\fR" 4 .IX Item "-text" This option adds plain text (text/plain) \s-1MIME\s0 headers to the supplied message if encrypting or signing. If decrypting or verifying it strips off text headers: if the decrypted or verified message is not of \s-1MIME\s0 type text/plain then an error occurs. .IP "\fB\-noout\fR" 4 .IX Item "-noout" For the \fB\-cmsout\fR operation do not output the parsed \s-1CMS\s0 structure. This is useful when combined with the \fB\-print\fR option or if the syntax of the \s-1CMS\s0 structure is being checked. .IP "\fB\-print\fR" 4 .IX Item "-print" For the \fB\-cmsout\fR operation print out all fields of the \s-1CMS\s0 structure. This is mainly useful for testing purposes. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" A file containing trusted \s-1CA\s0 certificates, only used with \fB\-verify\fR. .IP "\fB\-CApath dir\fR" 4 .IX Item "-CApath dir" A directory containing trusted \s-1CA\s0 certificates, only used with \&\fB\-verify\fR. This directory must be a standard certificate directory: that is a hash of each subject name (using \fBx509 \-hash\fR) should be linked to each certificate. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location .IP "\fB\-md digest\fR" 4 .IX Item "-md digest" Digest algorithm to use when signing or resigning. If not present then the default digest algorithm for the signing key will be used (usually \s-1SHA1\s0). .IP "\fB\-\f(BIcipher\fB\fR" 4 .IX Item "-cipher" The encryption algorithm to use. For example triple \s-1DES\s0 (168 bits) \- \fB\-des3\fR or 256 bit \s-1AES\s0 \- \fB\-aes256\fR. Any standard algorithm name (as used by the \&\fBEVP_get_cipherbyname()\fR function) can also be used preceded by a dash, for example \fB\-aes\-128\-cbc\fR. See \fBenc\fR\|(1) for a list of ciphers supported by your version of OpenSSL. .Sp If not specified triple \s-1DES\s0 is used. Only used with \fB\-encrypt\fR and \&\fB\-EncryptedData_create\fR commands. .IP "\fB\-nointern\fR" 4 .IX Item "-nointern" When verifying a message normally certificates (if any) included in the message are searched for the signing certificate. With this option only the certificates specified in the \fB\-certfile\fR option are used. The supplied certificates can still be used as untrusted CAs however. .IP "\fB\-noverify\fR" 4 .IX Item "-noverify" Do not verify the signers certificate of a signed message. .IP "\fB\-nocerts\fR" 4 .IX Item "-nocerts" When signing a message the signer's certificate is normally included with this option it is excluded. This will reduce the size of the signed message but the verifier must have a copy of the signers certificate available locally (passed using the \fB\-certfile\fR option for example). .IP "\fB\-noattr\fR" 4 .IX Item "-noattr" Normally when a message is signed a set of attributes are included which include the signing time and supported symmetric algorithms. With this option they are not included. .IP "\fB\-nosmimecap\fR" 4 .IX Item "-nosmimecap" Exclude the list of supported algorithms from signed attributes, other options such as signing time and content type are still included. .IP "\fB\-binary\fR" 4 .IX Item "-binary" Normally the input message is converted to \*(L"canonical\*(R" format which is effectively using \s-1CR\s0 and \s-1LF\s0 as end of line: as required by the S/MIME specification. When this option is present no translation occurs. This is useful when handling binary data which may not be in \s-1MIME\s0 format. .IP "\fB\-crlfeol\fR" 4 .IX Item "-crlfeol" Normally the output file uses a single \fB\s-1LF\s0\fR as end of line. When this option is present \fB\s-1CRLF\s0\fR is used instead. .IP "\fB\-asciicrlf\fR" 4 .IX Item "-asciicrlf" When signing use \s-1ASCII CRLF\s0 format canonicalisation. This strips trailing whitespace from all lines, deletes trailing blank lines at \s-1EOF\s0 and sets the encapsulated content type. This option is normally used with detached content and an output signature format of \s-1DER.\s0 This option is not normally needed when verifying as it is enabled automatically if the encapsulated content format is detected. .IP "\fB\-nodetach\fR" 4 .IX Item "-nodetach" When signing a message use opaque signing: this form is more resistant to translation by mail relays but it cannot be read by mail agents that do not support S/MIME. Without this option cleartext signing with the \s-1MIME\s0 type multipart/signed is used. .IP "\fB\-certfile file\fR" 4 .IX Item "-certfile file" Allows additional certificates to be specified. When signing these will be included with the message. When verifying these will be searched for the signers certificates. The certificates should be in \s-1PEM\s0 format. .IP "\fB\-certsout file\fR" 4 .IX Item "-certsout file" Any certificates contained in the message are written to \fBfile\fR. .IP "\fB\-signer file\fR" 4 .IX Item "-signer file" A signing certificate when signing or resigning a message, this option can be used multiple times if more than one signer is required. If a message is being verified then the signers certificates will be written to this file if the verification was successful. .IP "\fB\-recip file\fR" 4 .IX Item "-recip file" When decrypting a message this specifies the recipients certificate. The certificate must match one of the recipients of the message or an error occurs. .Sp When encrypting a message this option may be used multiple times to specify each recipient. This form \fBmust\fR be used if customised parameters are required (for example to specify RSA-OAEP). .Sp Only certificates carrying \s-1RSA,\s0 Diffie-Hellman or \s-1EC\s0 keys are supported by this option. .IP "\fB\-keyid\fR" 4 .IX Item "-keyid" Use subject key identifier to identify certificates instead of issuer name and serial number. The supplied certificate \fBmust\fR include a subject key identifier extension. Supported by \fB\-sign\fR and \fB\-encrypt\fR options. .IP "\fB\-receipt_request_all\fR, \fB\-receipt_request_first\fR" 4 .IX Item "-receipt_request_all, -receipt_request_first" For \fB\-sign\fR option include a signed receipt request. Indicate requests should be provided by all recipient or first tier recipients (those mailed directly and not from a mailing list). Ignored it \fB\-receipt_request_from\fR is included. .IP "\fB\-receipt_request_from emailaddress\fR" 4 .IX Item "-receipt_request_from emailaddress" For \fB\-sign\fR option include a signed receipt request. Add an explicit email address where receipts should be supplied. .IP "\fB\-receipt_request_to emailaddress\fR" 4 .IX Item "-receipt_request_to emailaddress" Add an explicit email address where signed receipts should be sent to. This option \fBmust\fR but supplied if a signed receipt it requested. .IP "\fB\-receipt_request_print\fR" 4 .IX Item "-receipt_request_print" For the \fB\-verify\fR operation print out the contents of any signed receipt requests. .IP "\fB\-secretkey key\fR" 4 .IX Item "-secretkey key" Specify symmetric key to use. The key must be supplied in hex format and be consistent with the algorithm used. Supported by the \fB\-EncryptedData_encrypt\fR \&\fB\-EncryptedData_decrypt\fR, \fB\-encrypt\fR and \fB\-decrypt\fR options. When used with \fB\-encrypt\fR or \fB\-decrypt\fR the supplied key is used to wrap or unwrap the content encryption key using an \s-1AES\s0 key in the \fBKEKRecipientInfo\fR type. .IP "\fB\-secretkeyid id\fR" 4 .IX Item "-secretkeyid id" The key identifier for the supplied symmetric key for \fBKEKRecipientInfo\fR type. This option \fBmust\fR be present if the \fB\-secretkey\fR option is used with \&\fB\-encrypt\fR. With \fB\-decrypt\fR operations the \fBid\fR is used to locate the relevant key if it is not supplied then an attempt is used to decrypt any \&\fBKEKRecipientInfo\fR structures. .IP "\fB\-econtent_type type\fR" 4 .IX Item "-econtent_type type" Set the encapsulated content type to \fBtype\fR if not supplied the \fBData\fR type is used. The \fBtype\fR argument can be any valid \s-1OID\s0 name in either text or numerical format. .IP "\fB\-inkey file\fR" 4 .IX Item "-inkey file" The private key to use when signing or decrypting. This must match the corresponding certificate. If this option is not specified then the private key must be included in the certificate file specified with the \fB\-recip\fR or \fB\-signer\fR file. When signing this option can be used multiple times to specify successive keys. .IP "\fB\-keyopt name:opt\fR" 4 .IX Item "-keyopt name:opt" For signing and encryption this option can be used multiple times to set customised parameters for the preceding key or certificate. It can currently be used to set RSA-PSS for signing, RSA-OAEP for encryption or to modify default parameters for \s-1ECDH.\s0 .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The private key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fBcert.pem...\fR" 4 .IX Item "cert.pem..." One or more certificates of message recipients: used when encrypting a message. .IP "\fB\-to, \-from, \-subject\fR" 4 .IX Item "-to, -from, -subject" The relevant mail headers. These are included outside the signed portion of a message so they may be included manually. If signing then many S/MIME mail clients check the signers certificate's email address matches that specified in the From: address. .IP "\fB\-attime\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-no_check_time\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR" 4 .IX Item "-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict" Set various certificate chain validation options. See the \&\fBverify\fR\|(1) manual page for details. .SH "NOTES" .IX Header "NOTES" The \s-1MIME\s0 message must be sent without any blank lines between the headers and the output. Some mail programs will automatically add a blank line. Piping the mail directly to sendmail is one way to achieve the correct format. .PP The supplied message to be signed or encrypted must include the necessary \s-1MIME\s0 headers or many S/MIME clients won't display it properly (if at all). You can use the \fB\-text\fR option to automatically add plain text headers. .PP A \*(L"signed and encrypted\*(R" message is one where a signed message is then encrypted. This can be produced by encrypting an already signed message: see the examples section. .PP This version of the program only allows one signer per message but it will verify multiple signers on received messages. Some S/MIME clients choke if a message contains multiple signers. It is possible to sign messages \*(L"in parallel\*(R" by signing an already signed message. .PP The options \fB\-encrypt\fR and \fB\-decrypt\fR reflect common usage in S/MIME clients. Strictly speaking these process \s-1CMS\s0 enveloped data: \s-1CMS\s0 encrypted data is used for other purposes. .PP The \fB\-resign\fR option uses an existing message digest when adding a new signer. This means that attributes must be present in at least one existing signer using the same message digest or this operation will fail. .PP The \fB\-stream\fR and \fB\-indef\fR options enable streaming I/O support. As a result the encoding is \s-1BER\s0 using indefinite length constructed encoding and no longer \s-1DER.\s0 Streaming is supported for the \fB\-encrypt\fR operation and the \&\fB\-sign\fR operation if the content is not detached. .PP Streaming is always used for the \fB\-sign\fR operation with detached data but since the content is no longer part of the \s-1CMS\s0 structure the encoding remains \s-1DER.\s0 .PP If the \fB\-decrypt\fR option is used without a recipient certificate then an attempt is made to locate the recipient by trying each potential recipient in turn using the supplied private key. To thwart the \s-1MMA\s0 attack (Bleichenbacher's attack on \s-1PKCS\s0 #1 v1.5 \s-1RSA\s0 padding) all recipients are tried whether they succeed or not and if no recipients match the message is \*(L"decrypted\*(R" using a random key which will typically output garbage. The \fB\-debug_decrypt\fR option can be used to disable the \s-1MMA\s0 attack protection and return an error if no recipient can be found: this option should be used with caution. For a fuller description see \fBCMS_decrypt\fR\|(3)). .SH "EXIT CODES" .IX Header "EXIT CODES" .IP "0" 4 The operation was completely successfully. .IP "1" 4 .IX Item "1" An error occurred parsing the command options. .IP "2" 4 .IX Item "2" One of the input files could not be read. .IP "3" 4 .IX Item "3" An error occurred creating the \s-1CMS\s0 file or when reading the \s-1MIME\s0 message. .IP "4" 4 .IX Item "4" An error occurred decrypting or verifying the message. .IP "5" 4 .IX Item "5" The message was verified correctly but an error occurred writing out the signers certificates. .SH "COMPATIBILITY WITH PKCS#7 format." .IX Header "COMPATIBILITY WITH PKCS#7 format." The \fBsmime\fR utility can only process the older \fBPKCS#7\fR format. The \fBcms\fR utility supports Cryptographic Message Syntax format. Use of some features will result in messages which cannot be processed by applications which only support the older format. These are detailed below. .PP The use of the \fB\-keyid\fR option with \fB\-sign\fR or \fB\-encrypt\fR. .PP The \fB\-outform \s-1PEM\s0\fR option uses different headers. .PP The \fB\-compress\fR option. .PP The \fB\-secretkey\fR option when used with \fB\-encrypt\fR. .PP The use of \s-1PSS\s0 with \fB\-sign\fR. .PP The use of \s-1OAEP\s0 or non-RSA keys with \fB\-encrypt\fR. .PP Additionally the \fB\-EncryptedData_create\fR and \fB\-data_create\fR type cannot be processed by the older \fBsmime\fR command. .SH "EXAMPLES" .IX Header "EXAMPLES" Create a cleartext signed message: .PP .Vb 2 \& openssl cms \-sign \-in message.txt \-text \-out mail.msg \e \& \-signer mycert.pem .Ve .PP Create an opaque signed message .PP .Vb 2 \& openssl cms \-sign \-in message.txt \-text \-out mail.msg \-nodetach \e \& \-signer mycert.pem .Ve .PP Create a signed message, include some additional certificates and read the private key from another file: .PP .Vb 2 \& openssl cms \-sign \-in in.txt \-text \-out mail.msg \e \& \-signer mycert.pem \-inkey mykey.pem \-certfile mycerts.pem .Ve .PP Create a signed message with two signers, use key identifier: .PP .Vb 2 \& openssl cms \-sign \-in message.txt \-text \-out mail.msg \e \& \-signer mycert.pem \-signer othercert.pem \-keyid .Ve .PP Send a signed message under Unix directly to sendmail, including headers: .PP .Vb 3 \& openssl cms \-sign \-in in.txt \-text \-signer mycert.pem \e \& \-from steve@openssl.org \-to someone@somewhere \e \& \-subject "Signed message" | sendmail someone@somewhere .Ve .PP Verify a message and extract the signer's certificate if successful: .PP .Vb 1 \& openssl cms \-verify \-in mail.msg \-signer user.pem \-out signedtext.txt .Ve .PP Send encrypted mail using triple \s-1DES:\s0 .PP .Vb 3 \& openssl cms \-encrypt \-in in.txt \-from steve@openssl.org \e \& \-to someone@somewhere \-subject "Encrypted message" \e \& \-des3 user.pem \-out mail.msg .Ve .PP Sign and encrypt mail: .PP .Vb 4 \& openssl cms \-sign \-in ml.txt \-signer my.pem \-text \e \& | openssl cms \-encrypt \-out mail.msg \e \& \-from steve@openssl.org \-to someone@somewhere \e \& \-subject "Signed and Encrypted message" \-des3 user.pem .Ve .PP Note: the encryption command does not include the \fB\-text\fR option because the message being encrypted already has \s-1MIME\s0 headers. .PP Decrypt mail: .PP .Vb 1 \& openssl cms \-decrypt \-in mail.msg \-recip mycert.pem \-inkey key.pem .Ve .PP The output from Netscape form signing is a PKCS#7 structure with the detached signature format. You can use this program to verify the signature by line wrapping the base64 encoded structure and surrounding it with: .PP .Vb 2 \& \-\-\-\-\-BEGIN PKCS7\-\-\-\-\- \& \-\-\-\-\-END PKCS7\-\-\-\-\- .Ve .PP and using the command, .PP .Vb 1 \& openssl cms \-verify \-inform PEM \-in signature.pem \-content content.txt .Ve .PP alternatively you can base64 decode the signature and use .PP .Vb 1 \& openssl cms \-verify \-inform DER \-in signature.der \-content content.txt .Ve .PP Create an encrypted message using 128 bit Camellia: .PP .Vb 1 \& openssl cms \-encrypt \-in plain.txt \-camellia128 \-out mail.msg cert.pem .Ve .PP Add a signer to an existing message: .PP .Vb 1 \& openssl cms \-resign \-in mail.msg \-signer newsign.pem \-out mail2.msg .Ve .PP Sign mail using RSA-PSS: .PP .Vb 2 \& openssl cms \-sign \-in message.txt \-text \-out mail.msg \e \& \-signer mycert.pem \-keyopt rsa_padding_mode:pss .Ve .PP Create encrypted mail using RSA-OAEP: .PP .Vb 2 \& openssl cms \-encrypt \-in plain.txt \-out mail.msg \e \& \-recip cert.pem \-keyopt rsa_padding_mode:oaep .Ve .PP Use \s-1SHA256 KDF\s0 with an \s-1ECDH\s0 certificate: .PP .Vb 2 \& openssl cms \-encrypt \-in plain.txt \-out mail.msg \e \& \-recip ecdhcert.pem \-keyopt ecdh_kdf_md:sha256 .Ve .SH "BUGS" .IX Header "BUGS" The \s-1MIME\s0 parser isn't very clever: it seems to handle most messages that I've thrown at it but it may choke on others. .PP The code currently will only write out the signer's certificate to a file: if the signer has a separate encryption certificate this must be manually extracted. There should be some heuristic that determines the correct encryption certificate. .PP Ideally a database should be maintained of a certificates for each email address. .PP The code doesn't currently take note of the permitted symmetric encryption algorithms as supplied in the SMIMECapabilities signed attribute. this means the user has to manually include the correct encryption algorithm. It should store the list of permitted ciphers in a database and only use those. .PP No revocation checking is done on the signer's certificate. .PP The \fB\-binary\fR option does not work correctly when processing text input which (contrary to the S/MIME specification) uses \s-1LF\s0 rather than \s-1CRLF\s0 line endings. .SH "HISTORY" .IX Header "HISTORY" The use of multiple \fB\-signer\fR options and the \fB\-resign\fR command were first added in OpenSSL 1.0.0. .PP The \fBkeyopt\fR option was added in OpenSSL 1.0.2. .PP Support for RSA-OAEP and RSA-PSS was added in OpenSSL 1.0.2. .PP The use of non-RSA keys with \fB\-encrypt\fR and \fB\-decrypt\fR was added in OpenSSL 1.0.2. .PP The \-no_alt_chains option was added in OpenSSL 1.0.2b. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2008\-2022 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!K>#>#pkey.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKEY 1" .TH PKEY 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkey, pkey \- public or private key processing tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkey\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-traditional\fR] [\fB\-\f(BIcipher\fB\fR] [\fB\-text\fR] [\fB\-text_pub\fR] [\fB\-noout\fR] [\fB\-pubin\fR] [\fB\-pubout\fR] [\fB\-engine id\fR] [\fB\-check\fR] [\fB\-pubcheck\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkey\fR command processes public or private keys. They can be converted between various forms and their components printed out. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format \s-1DER\s0 or \s-1PEM.\s0 The default format is \s-1PEM.\s0 .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write a key to or standard output if this option is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-passout password\fR" 4 .IX Item "-passout password" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-traditional\fR" 4 .IX Item "-traditional" Normally a private key is written using standard format: this is PKCS#8 form with the appropriate encryption algorithm (if any). If the \fB\-traditional\fR option is specified then the older \*(L"traditional\*(R" format is used instead. .IP "\fB\-\f(BIcipher\fB\fR" 4 .IX Item "-cipher" These options encrypt the private key with the supplied cipher. Any algorithm name accepted by \fBEVP_get_cipherbyname()\fR is acceptable such as \fBdes3\fR. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the various public or private key components in plain text in addition to the encoded version. .IP "\fB\-text_pub\fR" 4 .IX Item "-text_pub" Print out only public key components even if a private key is being processed. .IP "\fB\-noout\fR" 4 .IX Item "-noout" Do not output the encoded version of the key. .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" By default a private key is read from the input file: with this option a public key is read instead. .IP "\fB\-pubout\fR" 4 .IX Item "-pubout" By default a private key is output: with this option a public key will be output instead. This option is automatically set if the input is a public key. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBpkey\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-check\fR" 4 .IX Item "-check" This option checks the consistency of a key pair for both public and private components. .IP "\fB\-pubcheck\fR" 4 .IX Item "-pubcheck" This option checks the correctness of either a public key or the public component of a key pair. .SH "EXAMPLES" .IX Header "EXAMPLES" To remove the pass phrase on an \s-1RSA\s0 private key: .PP .Vb 1 \& openssl pkey \-in key.pem \-out keyout.pem .Ve .PP To encrypt a private key using triple \s-1DES:\s0 .PP .Vb 1 \& openssl pkey \-in key.pem \-des3 \-out keyout.pem .Ve .PP To convert a private key from \s-1PEM\s0 to \s-1DER\s0 format: .PP .Vb 1 \& openssl pkey \-in key.pem \-outform DER \-out keyout.der .Ve .PP To print out the components of a private key to standard output: .PP .Vb 1 \& openssl pkey \-in key.pem \-text \-noout .Ve .PP To print out the public components of a private key to standard output: .PP .Vb 1 \& openssl pkey \-in key.pem \-text_pub \-noout .Ve .PP To just output the public part of a private key: .PP .Vb 1 \& openssl pkey \-in key.pem \-pubout \-out pubkey.pem .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBgenpkey\fR\|(1), \fBrsa\fR\|(1), \fBpkcs8\fR\|(1), \&\fBdsa\fR\|(1), \fBgenrsa\fR\|(1), \fBgendsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!饲 pkeyparam.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PKEYPARAM 1" .TH PKEYPARAM 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-pkeyparam, pkeyparam \- public key algorithm parameter processing tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBpkeyparam\fR [\fB\-help\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-engine id\fR] [\fB\-check\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBpkeyparam\fR command processes public key algorithm parameters. They can be checked for correctness and their components printed out. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read parameters from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write parameters to or standard output if this option is not specified. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the parameters in plain text in addition to the encoded version. .IP "\fB\-noout\fR" 4 .IX Item "-noout" Do not output the encoded version of the parameters. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBpkeyparam\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-check\fR" 4 .IX Item "-check" This option checks the correctness of parameters. .SH "EXAMPLES" .IX Header "EXAMPLES" Print out text version of parameters: .PP .Vb 1 \& openssl pkeyparam \-in param.pem \-text .Ve .SH "NOTES" .IX Header "NOTES" There are no \fB\-inform\fR or \fB\-outform\fR options for this command because only \&\s-1PEM\s0 format is supported because the key type is determined by the \s-1PEM\s0 headers. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBgenpkey\fR\|(1), \fBrsa\fR\|(1), \fBpkcs8\fR\|(1), \&\fBdsa\fR\|(1), \fBgenrsa\fR\|(1), \fBgendsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006\-2019 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK! lsrand.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "RAND 1" .TH RAND 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-rand, rand \- generate pseudo\-random bytes .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl rand\fR [\fB\-help\fR] [\fB\-out\fR \fIfile\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-base64\fR] [\fB\-hex\fR] \&\fInum\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command generates \fInum\fR random bytes using a cryptographically secure pseudo random number generator (\s-1CSPRNG\s0). .PP The random bytes are generated using the \fBRAND_bytes\fR\|(3) function, which provides a security level of 256 bits, provided it managed to seed itself successfully from a trusted operating system entropy source. Otherwise, the command will fail with a nonzero error code. For more details, see \fBRAND_bytes\fR\|(3), \s-1\fBRAND\s0\fR\|(7), and \s-1\fBRAND_DRBG\s0\fR\|(7). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out file\fR" 4 .IX Item "-out file" Write to \fIfile\fR instead of standard output. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. Explicitly specifying a seed file is in general not necessary, see the \&\*(L"\s-1NOTES\*(R"\s0 section for more information. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-base64\fR" 4 .IX Item "-base64" Perform base64 encoding on the output. .IP "\fB\-hex\fR" 4 .IX Item "-hex" Show the output as a hex string. .SH "NOTES" .IX Header "NOTES" Prior to OpenSSL 1.1.1, it was common for applications to store information about the state of the random-number generator in a file that was loaded at startup and rewritten upon exit. On modern operating systems, this is generally no longer necessary as OpenSSL will seed itself from a trusted entropy source provided by the operating system. The \fB\-rand\fR and \&\fB\-writerand\fR flags are still supported for special platforms or circumstances that might require them. .PP It is generally an error to use the same seed file more than once and every use of \fB\-rand\fR should be paired with \fB\-writerand\fR. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBRAND_bytes\fR\|(3), \&\s-1\fBRAND\s0\fR\|(7), \&\s-1\fBRAND_DRBG\s0\fR\|(7) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!g6// s_server.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "S_SERVER 1" .TH S_SERVER 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-s_server, s_server \- SSL/TLS server program .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBs_server\fR [\fB\-help\fR] [\fB\-port +int\fR] [\fB\-accept val\fR] [\fB\-unix val\fR] [\fB\-4\fR] [\fB\-6\fR] [\fB\-unlink\fR] [\fB\-context val\fR] [\fB\-verify int\fR] [\fB\-Verify int\fR] [\fB\-cert infile\fR] [\fB\-nameopt val\fR] [\fB\-naccept +int\fR] [\fB\-serverinfo val\fR] [\fB\-certform PEM|DER\fR] [\fB\-key infile\fR] [\fB\-keyform format\fR] [\fB\-pass val\fR] [\fB\-dcert infile\fR] [\fB\-dcertform PEM|DER\fR] [\fB\-dkey infile\fR] [\fB\-dkeyform PEM|DER\fR] [\fB\-dpass val\fR] [\fB\-nbio_test\fR] [\fB\-crlf\fR] [\fB\-debug\fR] [\fB\-msg\fR] [\fB\-msgfile outfile\fR] [\fB\-state\fR] [\fB\-CAfile infile\fR] [\fB\-CApath dir\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-nocert\fR] [\fB\-quiet\fR] [\fB\-no_resume_ephemeral\fR] [\fB\-www\fR] [\fB\-WWW\fR] [\fB\-servername\fR] [\fB\-servername_fatal\fR] [\fB\-cert2 infile\fR] [\fB\-key2 infile\fR] [\fB\-tlsextdebug\fR] [\fB\-HTTP\fR] [\fB\-id_prefix val\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-keymatexport val\fR] [\fB\-keymatexportlen +int\fR] [\fB\-CRL infile\fR] [\fB\-crl_download\fR] [\fB\-cert_chain infile\fR] [\fB\-dcert_chain infile\fR] [\fB\-chainCApath dir\fR] [\fB\-verifyCApath dir\fR] [\fB\-no_cache\fR] [\fB\-ext_cache\fR] [\fB\-CRLform PEM|DER\fR] [\fB\-verify_return_error\fR] [\fB\-verify_quiet\fR] [\fB\-build_chain\fR] [\fB\-chainCAfile infile\fR] [\fB\-verifyCAfile infile\fR] [\fB\-ign_eof\fR] [\fB\-no_ign_eof\fR] [\fB\-status\fR] [\fB\-status_verbose\fR] [\fB\-status_timeout int\fR] [\fB\-status_url val\fR] [\fB\-status_file infile\fR] [\fB\-trace\fR] [\fB\-security_debug\fR] [\fB\-security_debug_verbose\fR] [\fB\-brief\fR] [\fB\-rev\fR] [\fB\-async\fR] [\fB\-ssl_config val\fR] [\fB\-max_send_frag +int\fR] [\fB\-split_send_frag +int\fR] [\fB\-max_pipelines +int\fR] [\fB\-read_buf +int\fR] [\fB\-no_ssl3\fR] [\fB\-no_tls1\fR] [\fB\-no_tls1_1\fR] [\fB\-no_tls1_2\fR] [\fB\-no_tls1_3\fR] [\fB\-bugs\fR] [\fB\-no_comp\fR] [\fB\-comp\fR] [\fB\-no_ticket\fR] [\fB\-num_tickets\fR] [\fB\-serverpref\fR] [\fB\-legacy_renegotiation\fR] [\fB\-no_renegotiation\fR] [\fB\-legacy_server_connect\fR] [\fB\-no_resumption_on_reneg\fR] [\fB\-no_legacy_server_connect\fR] [\fB\-allow_no_dhe_kex\fR] [\fB\-prioritize_chacha\fR] [\fB\-strict\fR] [\fB\-sigalgs val\fR] [\fB\-client_sigalgs val\fR] [\fB\-groups val\fR] [\fB\-curves val\fR] [\fB\-named_curve val\fR] [\fB\-cipher val\fR] [\fB\-ciphersuites val\fR] [\fB\-dhparam infile\fR] [\fB\-record_padding val\fR] [\fB\-debug_broken_protocol\fR] [\fB\-policy val\fR] [\fB\-purpose val\fR] [\fB\-verify_name val\fR] [\fB\-verify_depth int\fR] [\fB\-auth_level int\fR] [\fB\-attime intmax\fR] [\fB\-verify_hostname val\fR] [\fB\-verify_email val\fR] [\fB\-verify_ip\fR] [\fB\-ignore_critical\fR] [\fB\-issuer_checks\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-policy_check\fR] [\fB\-explicit_policy\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-x509_strict\fR] [\fB\-extended_crl\fR] [\fB\-use_deltas\fR] [\fB\-policy_print\fR] [\fB\-check_ss_sig\fR] [\fB\-trusted_first\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_192\fR] [\fB\-partial_chain\fR] [\fB\-no_alt_chains\fR] [\fB\-no_check_time\fR] [\fB\-allow_proxy_certs\fR] [\fB\-xkey\fR] [\fB\-xcert\fR] [\fB\-xchain\fR] [\fB\-xchain_build\fR] [\fB\-xcertform PEM|DER\fR] [\fB\-xkeyform PEM|DER\fR] [\fB\-nbio\fR] [\fB\-psk_identity val\fR] [\fB\-psk_hint val\fR] [\fB\-psk val\fR] [\fB\-psk_session file\fR] [\fB\-srpvfile infile\fR] [\fB\-srpuserseed val\fR] [\fB\-ssl3\fR] [\fB\-tls1\fR] [\fB\-tls1_1\fR] [\fB\-tls1_2\fR] [\fB\-tls1_3\fR] [\fB\-dtls\fR] [\fB\-timeout\fR] [\fB\-mtu +int\fR] [\fB\-listen\fR] [\fB\-dtls1\fR] [\fB\-dtls1_2\fR] [\fB\-sctp\fR] [\fB\-sctp_label_bug\fR] [\fB\-no_dhe\fR] [\fB\-nextprotoneg val\fR] [\fB\-use_srtp val\fR] [\fB\-alpn val\fR] [\fB\-engine val\fR] [\fB\-keylogfile outfile\fR] [\fB\-max_early_data int\fR] [\fB\-early_data\fR] [\fB\-anti_replay\fR] [\fB\-no_anti_replay\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBs_server\fR command implements a generic \s-1SSL/TLS\s0 server which listens for connections on a given port using \s-1SSL/TLS.\s0 .SH "OPTIONS" .IX Header "OPTIONS" In addition to the options below the \fBs_server\fR utility also supports the common and server only options documented in the \*(L"Supported Command Line Commands\*(R" section of the \fBSSL_CONF_cmd\fR\|(3) manual page. .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-port +int\fR" 4 .IX Item "-port +int" The \s-1TCP\s0 port to listen on for connections. If not specified 4433 is used. .IP "\fB\-accept val\fR" 4 .IX Item "-accept val" The optional \s-1TCP\s0 host and port to listen on for connections. If not specified, *:4433 is used. .IP "\fB\-unix val\fR" 4 .IX Item "-unix val" Unix domain socket to accept on. .IP "\fB\-4\fR" 4 .IX Item "-4" Use IPv4 only. .IP "\fB\-6\fR" 4 .IX Item "-6" Use IPv6 only. .IP "\fB\-unlink\fR" 4 .IX Item "-unlink" For \-unix, unlink any existing socket first. .IP "\fB\-context val\fR" 4 .IX Item "-context val" Sets the \s-1SSL\s0 context id. It can be given any string value. If this option is not present a default value will be used. .IP "\fB\-verify int\fR, \fB\-Verify int\fR" 4 .IX Item "-verify int, -Verify int" The verify depth to use. This specifies the maximum length of the client certificate chain and makes the server request a certificate from the client. With the \fB\-verify\fR option a certificate is requested but the client does not have to send one, with the \fB\-Verify\fR option the client must supply a certificate or an error occurs. .Sp If the cipher suite cannot request a client certificate (for example an anonymous cipher suite or \s-1PSK\s0) this option has no effect. .IP "\fB\-cert infile\fR" 4 .IX Item "-cert infile" The certificate to use, most servers cipher suites require the use of a certificate and some require a certificate with a certain public key type: for example the \s-1DSS\s0 cipher suites require a certificate containing a \s-1DSS\s0 (\s-1DSA\s0) key. If not specified then the filename \*(L"server.pem\*(R" will be used. .IP "\fB\-cert_chain\fR" 4 .IX Item "-cert_chain" A file containing trusted certificates to use when attempting to build the client/server certificate chain related to the certificate specified via the \&\fB\-cert\fR option. .IP "\fB\-build_chain\fR" 4 .IX Item "-build_chain" Specify whether the application should build the certificate chain to be provided to the client. .IP "\fB\-nameopt val\fR" 4 .IX Item "-nameopt val" Option which determines how the subject or issuer names are displayed. The \&\fBval\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fBx509\fR\|(1) manual page for details. .IP "\fB\-naccept +int\fR" 4 .IX Item "-naccept +int" The server will exit after receiving the specified number of connections, default unlimited. .IP "\fB\-serverinfo val\fR" 4 .IX Item "-serverinfo val" A file containing one or more blocks of \s-1PEM\s0 data. Each \s-1PEM\s0 block must encode a \s-1TLS\s0 ServerHello extension (2 bytes type, 2 bytes length, followed by \*(L"length\*(R" bytes of extension data). If the client sends an empty \s-1TLS\s0 ClientHello extension matching the type, the corresponding ServerHello extension will be returned. .IP "\fB\-certform PEM|DER\fR" 4 .IX Item "-certform PEM|DER" The certificate format to use: \s-1DER\s0 or \s-1PEM. PEM\s0 is the default. .IP "\fB\-key infile\fR" 4 .IX Item "-key infile" The private key to use. If not specified then the certificate file will be used. .IP "\fB\-keyform format\fR" 4 .IX Item "-keyform format" The private format to use: \s-1DER\s0 or \s-1PEM. PEM\s0 is the default. .IP "\fB\-pass val\fR" 4 .IX Item "-pass val" The private key password source. For more information about the format of \fBval\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-dcert infile\fR, \fB\-dkey infile\fR" 4 .IX Item "-dcert infile, -dkey infile" Specify an additional certificate and private key, these behave in the same manner as the \fB\-cert\fR and \fB\-key\fR options except there is no default if they are not specified (no additional certificate and key is used). As noted above some cipher suites require a certificate containing a key of a certain type. Some cipher suites need a certificate carrying an \s-1RSA\s0 key and some a \s-1DSS\s0 (\s-1DSA\s0) key. By using \s-1RSA\s0 and \s-1DSS\s0 certificates and keys a server can support clients which only support \s-1RSA\s0 or \s-1DSS\s0 cipher suites by using an appropriate certificate. .IP "\fB\-dcert_chain\fR" 4 .IX Item "-dcert_chain" A file containing trusted certificates to use when attempting to build the server certificate chain when a certificate specified via the \fB\-dcert\fR option is in use. .IP "\fB\-dcertform PEM|DER\fR, \fB\-dkeyform PEM|DER\fR, \fB\-dpass val\fR" 4 .IX Item "-dcertform PEM|DER, -dkeyform PEM|DER, -dpass val" Additional certificate and private key format and passphrase respectively. .IP "\fB\-xkey infile\fR, \fB\-xcert infile\fR, \fB\-xchain\fR" 4 .IX Item "-xkey infile, -xcert infile, -xchain" Specify an extra certificate, private key and certificate chain. These behave in the same manner as the \fB\-cert\fR, \fB\-key\fR and \fB\-cert_chain\fR options. When specified, the callback returning the first valid chain will be in use by the server. .IP "\fB\-xchain_build\fR" 4 .IX Item "-xchain_build" Specify whether the application should build the certificate chain to be provided to the client for the extra certificates provided via \fB\-xkey infile\fR, \&\fB\-xcert infile\fR, \fB\-xchain\fR options. .IP "\fB\-xcertform PEM|DER\fR, \fB\-xkeyform PEM|DER\fR" 4 .IX Item "-xcertform PEM|DER, -xkeyform PEM|DER" Extra certificate and private key format respectively. .IP "\fB\-nbio_test\fR" 4 .IX Item "-nbio_test" Tests non blocking I/O. .IP "\fB\-crlf\fR" 4 .IX Item "-crlf" This option translated a line feed from the terminal into \s-1CR+LF.\s0 .IP "\fB\-debug\fR" 4 .IX Item "-debug" Print extensive debugging information including a hex dump of all traffic. .IP "\fB\-msg\fR" 4 .IX Item "-msg" Show all protocol messages with hex dump. .IP "\fB\-msgfile outfile\fR" 4 .IX Item "-msgfile outfile" File to send output of \fB\-msg\fR or \fB\-trace\fR to, default standard output. .IP "\fB\-state\fR" 4 .IX Item "-state" Prints the \s-1SSL\s0 session states. .IP "\fB\-CAfile infile\fR" 4 .IX Item "-CAfile infile" A file containing trusted certificates to use during client authentication and to use when attempting to build the server certificate chain. The list is also used in the list of acceptable client CAs passed to the client when a certificate is requested. .IP "\fB\-CApath dir\fR" 4 .IX Item "-CApath dir" The directory to use for client certificate verification. This directory must be in \*(L"hash format\*(R", see \fBverify\fR\|(1) for more information. These are also used when building the server certificate chain. .IP "\fB\-chainCApath dir\fR" 4 .IX Item "-chainCApath dir" The directory to use for building the chain provided to the client. This directory must be in \*(L"hash format\*(R", see \fBverify\fR\|(1) for more information. .IP "\fB\-chainCAfile file\fR" 4 .IX Item "-chainCAfile file" A file containing trusted certificates to use when attempting to build the server certificate chain. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location. .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location. .IP "\fB\-nocert\fR" 4 .IX Item "-nocert" If this option is set then no certificate is used. This restricts the cipher suites available to the anonymous ones (currently just anonymous \&\s-1DH\s0). .IP "\fB\-quiet\fR" 4 .IX Item "-quiet" Inhibit printing of session and certificate information. .IP "\fB\-www\fR" 4 .IX Item "-www" Sends a status message back to the client when it connects. This includes information about the ciphers used and various session parameters. The output is in \s-1HTML\s0 format so this option will normally be used with a web browser. Cannot be used in conjunction with \fB\-early_data\fR. .IP "\fB\-WWW\fR" 4 .IX Item "-WWW" Emulates a simple web server. Pages will be resolved relative to the current directory, for example if the \s-1URL\s0 https://myhost/page.html is requested the file ./page.html will be loaded. Cannot be used in conjunction with \fB\-early_data\fR. .IP "\fB\-tlsextdebug\fR" 4 .IX Item "-tlsextdebug" Print a hex dump of any \s-1TLS\s0 extensions received from the server. .IP "\fB\-HTTP\fR" 4 .IX Item "-HTTP" Emulates a simple web server. Pages will be resolved relative to the current directory, for example if the \s-1URL\s0 https://myhost/page.html is requested the file ./page.html will be loaded. The files loaded are assumed to contain a complete and correct \s-1HTTP\s0 response (lines that are part of the \s-1HTTP\s0 response line and headers must end with \s-1CRLF\s0). Cannot be used in conjunction with \fB\-early_data\fR. .IP "\fB\-id_prefix val\fR" 4 .IX Item "-id_prefix val" Generate \s-1SSL/TLS\s0 session IDs prefixed by \fBval\fR. This is mostly useful for testing any \s-1SSL/TLS\s0 code (e.g. proxies) that wish to deal with multiple servers, when each of which might be generating a unique range of session IDs (e.g. with a certain prefix). .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-verify_return_error\fR" 4 .IX Item "-verify_return_error" Verification errors normally just print a message but allow the connection to continue, for debugging purposes. If this option is used, then verification errors close the connection. .IP "\fB\-status\fR" 4 .IX Item "-status" Enables certificate status request support (aka \s-1OCSP\s0 stapling). .IP "\fB\-status_verbose\fR" 4 .IX Item "-status_verbose" Enables certificate status request support (aka \s-1OCSP\s0 stapling) and gives a verbose printout of the \s-1OCSP\s0 response. .IP "\fB\-status_timeout int\fR" 4 .IX Item "-status_timeout int" Sets the timeout for \s-1OCSP\s0 response to \fBint\fR seconds. .IP "\fB\-status_url val\fR" 4 .IX Item "-status_url val" Sets a fallback responder \s-1URL\s0 to use if no responder \s-1URL\s0 is present in the server certificate. Without this option an error is returned if the server certificate does not contain a responder address. .IP "\fB\-status_file infile\fR" 4 .IX Item "-status_file infile" Overrides any \s-1OCSP\s0 responder URLs from the certificate and always provides the \&\s-1OCSP\s0 Response stored in the file. The file must be in \s-1DER\s0 format. .IP "\fB\-trace\fR" 4 .IX Item "-trace" Show verbose trace output of protocol messages. OpenSSL needs to be compiled with \fBenable-ssl-trace\fR for this option to work. .IP "\fB\-brief\fR" 4 .IX Item "-brief" Provide a brief summary of connection parameters instead of the normal verbose output. .IP "\fB\-rev\fR" 4 .IX Item "-rev" Simple test server which just reverses the text received from the client and sends it back to the server. Also sets \fB\-brief\fR. Cannot be used in conjunction with \fB\-early_data\fR. .IP "\fB\-async\fR" 4 .IX Item "-async" Switch on asynchronous mode. Cryptographic operations will be performed asynchronously. This will only have an effect if an asynchronous capable engine is also used via the \fB\-engine\fR option. For test purposes the dummy async engine (dasync) can be used (if available). .IP "\fB\-max_send_frag +int\fR" 4 .IX Item "-max_send_frag +int" The maximum size of data fragment to send. See \fBSSL_CTX_set_max_send_fragment\fR\|(3) for further information. .IP "\fB\-split_send_frag +int\fR" 4 .IX Item "-split_send_frag +int" The size used to split data for encrypt pipelines. If more data is written in one go than this value then it will be split into multiple pipelines, up to the maximum number of pipelines defined by max_pipelines. This only has an effect if a suitable cipher suite has been negotiated, an engine that supports pipelining has been loaded, and max_pipelines is greater than 1. See \&\fBSSL_CTX_set_split_send_fragment\fR\|(3) for further information. .IP "\fB\-max_pipelines +int\fR" 4 .IX Item "-max_pipelines +int" The maximum number of encrypt/decrypt pipelines to be used. This will only have an effect if an engine has been loaded that supports pipelining (e.g. the dasync engine) and a suitable cipher suite has been negotiated. The default value is 1. See \fBSSL_CTX_set_max_pipelines\fR\|(3) for further information. .IP "\fB\-read_buf +int\fR" 4 .IX Item "-read_buf +int" The default read buffer size to be used for connections. This will only have an effect if the buffer size is larger than the size that would otherwise be used and pipelining is in use (see \fBSSL_CTX_set_default_read_buffer_len\fR\|(3) for further information). .IP "\fB\-ssl2\fR, \fB\-ssl3\fR, \fB\-tls1\fR, \fB\-tls1_1\fR, \fB\-tls1_2\fR, \fB\-tls1_3\fR, \fB\-no_ssl2\fR, \fB\-no_ssl3\fR, \fB\-no_tls1\fR, \fB\-no_tls1_1\fR, \fB\-no_tls1_2\fR, \fB\-no_tls1_3\fR" 4 .IX Item "-ssl2, -ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl2, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3" These options require or disable the use of the specified \s-1SSL\s0 or \s-1TLS\s0 protocols. By default \fBs_server\fR will negotiate the highest mutually supported protocol version. When a specific \s-1TLS\s0 version is required, only that version will be accepted from the client. Note that not all protocols and flags may be available, depending on how OpenSSL was built. .IP "\fB\-bugs\fR" 4 .IX Item "-bugs" There are several known bugs in \s-1SSL\s0 and \s-1TLS\s0 implementations. Adding this option enables various workarounds. .IP "\fB\-no_comp\fR" 4 .IX Item "-no_comp" Disable negotiation of \s-1TLS\s0 compression. \&\s-1TLS\s0 compression is not recommended and is off by default as of OpenSSL 1.1.0. .IP "\fB\-comp\fR" 4 .IX Item "-comp" Enable negotiation of \s-1TLS\s0 compression. This option was introduced in OpenSSL 1.1.0. \&\s-1TLS\s0 compression is not recommended and is off by default as of OpenSSL 1.1.0. .IP "\fB\-no_ticket\fR" 4 .IX Item "-no_ticket" Disable RFC4507bis session ticket support. This option has no effect if TLSv1.3 is negotiated. See \fB\-num_tickets\fR. .IP "\fB\-num_tickets\fR" 4 .IX Item "-num_tickets" Control the number of tickets that will be sent to the client after a full handshake in TLSv1.3. The default number of tickets is 2. This option does not affect the number of tickets sent after a resumption handshake. .IP "\fB\-serverpref\fR" 4 .IX Item "-serverpref" Use the server's cipher preferences, rather than the client's preferences. .IP "\fB\-prioritize_chacha\fR" 4 .IX Item "-prioritize_chacha" Prioritize ChaCha ciphers when preferred by clients. Requires \fB\-serverpref\fR. .IP "\fB\-no_resumption_on_reneg\fR" 4 .IX Item "-no_resumption_on_reneg" Set the \fB\s-1SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION\s0\fR option. .IP "\fB\-client_sigalgs val\fR" 4 .IX Item "-client_sigalgs val" Signature algorithms to support for client certificate authentication (colon-separated list). .IP "\fB\-named_curve val\fR" 4 .IX Item "-named_curve val" Specifies the elliptic curve to use. \s-1NOTE:\s0 this is single curve, not a list. For a list of all possible curves, use: .Sp .Vb 1 \& $ openssl ecparam \-list_curves .Ve .IP "\fB\-cipher val\fR" 4 .IX Item "-cipher val" This allows the list of TLSv1.2 and below ciphersuites used by the server to be modified. This list is combined with any TLSv1.3 ciphersuites that have been configured. When the client sends a list of supported ciphers the first client cipher also included in the server list is used. Because the client specifies the preference order, the order of the server cipherlist is irrelevant. See the \fBciphers\fR command for more information. .IP "\fB\-ciphersuites val\fR" 4 .IX Item "-ciphersuites val" This allows the list of TLSv1.3 ciphersuites used by the server to be modified. This list is combined with any TLSv1.2 and below ciphersuites that have been configured. When the client sends a list of supported ciphers the first client cipher also included in the server list is used. Because the client specifies the preference order, the order of the server cipherlist is irrelevant. See the \fBciphers\fR command for more information. The format for this list is a simple colon (\*(L":\*(R") separated list of TLSv1.3 ciphersuite names. .IP "\fB\-dhparam infile\fR" 4 .IX Item "-dhparam infile" The \s-1DH\s0 parameter file to use. The ephemeral \s-1DH\s0 cipher suites generate keys using a set of \s-1DH\s0 parameters. If not specified then an attempt is made to load the parameters from the server certificate file. If this fails then a static set of parameters hard coded into the \fBs_server\fR program will be used. .IP "\fB\-attime\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-no_check_time\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR" 4 .IX Item "-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict" Set different peer certificate verification options. See the \fBverify\fR\|(1) manual page for details. .IP "\fB\-crl_check\fR, \fB\-crl_check_all\fR" 4 .IX Item "-crl_check, -crl_check_all" Check the peer certificate has not been revoked by its \s-1CA.\s0 The \s-1CRL\s0(s) are appended to the certificate file. With the \fB\-crl_check_all\fR option all CRLs of all CAs in the chain are checked. .IP "\fB\-nbio\fR" 4 .IX Item "-nbio" Turns on non blocking I/O. .IP "\fB\-psk_identity val\fR" 4 .IX Item "-psk_identity val" Expect the client to send \s-1PSK\s0 identity \fBval\fR when using a \s-1PSK\s0 cipher suite, and warn if they do not. By default, the expected \s-1PSK\s0 identity is the string \*(L"Client_identity\*(R". .IP "\fB\-psk_hint val\fR" 4 .IX Item "-psk_hint val" Use the \s-1PSK\s0 identity hint \fBval\fR when using a \s-1PSK\s0 cipher suite. .IP "\fB\-psk val\fR" 4 .IX Item "-psk val" Use the \s-1PSK\s0 key \fBval\fR when using a \s-1PSK\s0 cipher suite. The key is given as a hexadecimal number without leading 0x, for example \-psk 1a2b3c4d. This option must be provided in order to use a \s-1PSK\s0 cipher. .IP "\fB\-psk_session file\fR" 4 .IX Item "-psk_session file" Use the pem encoded \s-1SSL_SESSION\s0 data stored in \fBfile\fR as the basis of a \s-1PSK.\s0 Note that this will only work if TLSv1.3 is negotiated. .IP "\fB\-listen\fR" 4 .IX Item "-listen" This option can only be used in conjunction with one of the \s-1DTLS\s0 options above. With this option \fBs_server\fR will listen on a \s-1UDP\s0 port for incoming connections. Any ClientHellos that arrive will be checked to see if they have a cookie in them or not. Any without a cookie will be responded to with a HelloVerifyRequest. If a ClientHello with a cookie is received then \fBs_server\fR will connect to that peer and complete the handshake. .IP "\fB\-dtls\fR, \fB\-dtls1\fR, \fB\-dtls1_2\fR" 4 .IX Item "-dtls, -dtls1, -dtls1_2" These options make \fBs_server\fR use \s-1DTLS\s0 protocols instead of \s-1TLS.\s0 With \fB\-dtls\fR, \fBs_server\fR will negotiate any supported \s-1DTLS\s0 protocol version, whilst \fB\-dtls1\fR and \fB\-dtls1_2\fR will only support DTLSv1.0 and DTLSv1.2 respectively. .IP "\fB\-sctp\fR" 4 .IX Item "-sctp" Use \s-1SCTP\s0 for the transport protocol instead of \s-1UDP\s0 in \s-1DTLS.\s0 Must be used in conjunction with \fB\-dtls\fR, \fB\-dtls1\fR or \fB\-dtls1_2\fR. This option is only available where OpenSSL has support for \s-1SCTP\s0 enabled. .IP "\fB\-sctp_label_bug\fR" 4 .IX Item "-sctp_label_bug" Use the incorrect behaviour of older OpenSSL implementations when computing endpoint-pair shared secrets for \s-1DTLS/SCTP.\s0 This allows communication with older broken implementations but breaks interoperability with correct implementations. Must be used in conjunction with \fB\-sctp\fR. This option is only available where OpenSSL has support for \s-1SCTP\s0 enabled. .IP "\fB\-no_dhe\fR" 4 .IX Item "-no_dhe" If this option is set then no \s-1DH\s0 parameters will be loaded effectively disabling the ephemeral \s-1DH\s0 cipher suites. .IP "\fB\-alpn val\fR, \fB\-nextprotoneg val\fR" 4 .IX Item "-alpn val, -nextprotoneg val" These flags enable the Application-Layer Protocol Negotiation or Next Protocol Negotiation (\s-1NPN\s0) extension, respectively. \s-1ALPN\s0 is the \&\s-1IETF\s0 standard and replaces \s-1NPN.\s0 The \fBval\fR list is a comma-separated list of supported protocol names. The list should contain the most desirable protocols first. Protocol names are printable \s-1ASCII\s0 strings, for example \*(L"http/1.1\*(R" or \&\*(L"spdy/3\*(R". The flag \fB\-nextprotoneg\fR cannot be specified if \fB\-tls1_3\fR is used. .IP "\fB\-engine val\fR" 4 .IX Item "-engine val" Specifying an engine (by its unique id string in \fBval\fR) will cause \fBs_server\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-keylogfile outfile\fR" 4 .IX Item "-keylogfile outfile" Appends \s-1TLS\s0 secrets to the specified keylog file such that external programs (like Wireshark) can decrypt \s-1TLS\s0 connections. .IP "\fB\-max_early_data int\fR" 4 .IX Item "-max_early_data int" Change the default maximum early data bytes that are specified for new sessions and any incoming early data (when used in conjunction with the \fB\-early_data\fR flag). The default value is approximately 16k. The argument must be an integer greater than or equal to 0. .IP "\fB\-early_data\fR" 4 .IX Item "-early_data" Accept early data where possible. Cannot be used in conjunction with \fB\-www\fR, \&\fB\-WWW\fR, \fB\-HTTP\fR or \fB\-rev\fR. .IP "\fB\-anti_replay\fR, \fB\-no_anti_replay\fR" 4 .IX Item "-anti_replay, -no_anti_replay" Switches replay protection on or off, respectively. Replay protection is on by default unless overridden by a configuration file. When it is on, OpenSSL will automatically detect if a session ticket has been used more than once, TLSv1.3 has been negotiated, and early data is enabled on the server. A full handshake is forced if a session ticket is used a second or subsequent time. Any early data that was sent will be rejected. .SH "CONNECTED COMMANDS" .IX Header "CONNECTED COMMANDS" If a connection request is established with an \s-1SSL\s0 client and neither the \&\fB\-www\fR nor the \fB\-WWW\fR option has been used then normally any data received from the client is displayed and any key presses will be sent to the client. .PP Certain commands are also recognized which perform special operations. These commands are a letter which must appear at the start of a line. They are listed below. .IP "\fBq\fR" 4 .IX Item "q" End the current \s-1SSL\s0 connection but still accept new connections. .IP "\fBQ\fR" 4 .IX Item "Q" End the current \s-1SSL\s0 connection and exit. .IP "\fBr\fR" 4 .IX Item "r" Renegotiate the \s-1SSL\s0 session (TLSv1.2 and below only). .IP "\fBR\fR" 4 .IX Item "R" Renegotiate the \s-1SSL\s0 session and request a client certificate (TLSv1.2 and below only). .IP "\fBP\fR" 4 .IX Item "P" Send some plain text down the underlying \s-1TCP\s0 connection: this should cause the client to disconnect due to a protocol violation. .IP "\fBS\fR" 4 .IX Item "S" Print out some session cache status information. .IP "\fBB\fR" 4 .IX Item "B" Send a heartbeat message to the client (\s-1DTLS\s0 only) .IP "\fBk\fR" 4 .IX Item "k" Send a key update message to the client (TLSv1.3 only) .IP "\fBK\fR" 4 .IX Item "K" Send a key update message to the client and request one back (TLSv1.3 only) .IP "\fBc\fR" 4 .IX Item "c" Send a certificate request to the client (TLSv1.3 only) .SH "NOTES" .IX Header "NOTES" \&\fBs_server\fR can be used to debug \s-1SSL\s0 clients. To accept connections from a web browser the command: .PP .Vb 1 \& openssl s_server \-accept 443 \-www .Ve .PP can be used for example. .PP Although specifying an empty list of CAs when requesting a client certificate is strictly speaking a protocol violation, some \s-1SSL\s0 clients interpret this to mean any \s-1CA\s0 is acceptable. This is useful for debugging purposes. .PP The session parameters can printed out using the \fBsess_id\fR program. .SH "BUGS" .IX Header "BUGS" Because this program has a lot of options and also because some of the techniques used are rather old, the C source of \fBs_server\fR is rather hard to read and not a model of how things should be done. A typical \s-1SSL\s0 server program would be much simpler. .PP The output of common ciphers is wrong: it just gives the list of ciphers that OpenSSL recognizes and the client supports. .PP There should be a way for the \fBs_server\fR program to print out details of any unknown cipher suites a client says it supports. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBSSL_CONF_cmd\fR\|(3), \fBsess_id\fR\|(1), \fBs_client\fR\|(1), \fBciphers\fR\|(1) \&\fBSSL_CTX_set_max_send_fragment\fR\|(3), \&\fBSSL_CTX_set_split_send_fragment\fR\|(3), \&\fBSSL_CTX_set_max_pipelines\fR\|(3) .SH "HISTORY" .IX Header "HISTORY" The \-no_alt_chains option was added in OpenSSL 1.1.0. .PP The \&\-allow\-no\-dhe\-kex and \-prioritize_chacha options were added in OpenSSL 1.1.1. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!MEBB dsaparam.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DSAPARAM 1" .TH DSAPARAM 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-dsaparam, dsaparam \- DSA parameter manipulation and generation .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl dsaparam\fR [\fB\-help\fR] [\fB\-inform DER|PEM\fR] [\fB\-outform DER|PEM\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-noout\fR] [\fB\-text\fR] [\fB\-C\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-genkey\fR] [\fB\-engine id\fR] [\fBnumbits\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to manipulate or generate \s-1DSA\s0 parameter files. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option uses an \s-1ASN1 DER\s0 encoded form compatible with \s-1RFC2459\s0 (\s-1PKIX\s0) DSS-Parms that is a \s-1SEQUENCE\s0 consisting of p, q and g respectively. The \s-1PEM\s0 form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read parameters from or standard input if this option is not specified. If the \fBnumbits\fR parameter is included then this option will be ignored. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename parameters to. Standard output is used if this option is not present. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option inhibits the output of the encoded version of the parameters. .IP "\fB\-text\fR" 4 .IX Item "-text" This option prints out the \s-1DSA\s0 parameters in human readable form. .IP "\fB\-C\fR" 4 .IX Item "-C" This option converts the parameters into C code. The parameters can then be loaded by calling the \fBget_dsaXXX()\fR function. .IP "\fB\-genkey\fR" 4 .IX Item "-genkey" This option will generate a \s-1DSA\s0 either using the specified or generated parameters. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fBnumbits\fR" 4 .IX Item "numbits" This option specifies that a parameter set should be generated of size \&\fBnumbits\fR. It must be the last option. If this option is included then the input file (if any) is ignored. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBdsaparam\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "NOTES" .IX Header "NOTES" \&\s-1PEM\s0 format \s-1DSA\s0 parameters use the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN DSA PARAMETERS\-\-\-\-\- \& \-\-\-\-\-END DSA PARAMETERS\-\-\-\-\- .Ve .PP \&\s-1DSA\s0 parameter generation is a slow process and as a result the same set of \&\s-1DSA\s0 parameters is often used to generate several distinct keys. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBgendsa\fR\|(1), \fBdsa\fR\|(1), \fBgenrsa\fR\|(1), \&\fBrsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!0c0c0s_time.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "S_TIME 1" .TH S_TIME 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-s_time, s_time \- SSL/TLS performance timing program .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBs_time\fR [\fB\-help\fR] [\fB\-connect host:port\fR] [\fB\-www page\fR] [\fB\-cert filename\fR] [\fB\-key filename\fR] [\fB\-CApath directory\fR] [\fB\-CAfile filename\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-reuse\fR] [\fB\-new\fR] [\fB\-verify depth\fR] [\fB\-nameopt option\fR] [\fB\-time seconds\fR] [\fB\-ssl3\fR] [\fB\-bugs\fR] [\fB\-cipher cipherlist\fR] [\fB\-ciphersuites val\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBs_time\fR command implements a generic \s-1SSL/TLS\s0 client which connects to a remote host using \s-1SSL/TLS.\s0 It can request a page from the server and includes the time to transfer the payload data in its timing measurements. It measures the number of connections within a given timeframe, the amount of data transferred (if any), and calculates the average time spent for one connection. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-connect host:port\fR" 4 .IX Item "-connect host:port" This specifies the host and optional port to connect to. .IP "\fB\-www page\fR" 4 .IX Item "-www page" This specifies the page to \s-1GET\s0 from the server. A value of '/' gets the index.htm[l] page. If this parameter is not specified, then \fBs_time\fR will only perform the handshake to establish \s-1SSL\s0 connections but not transfer any payload data. .IP "\fB\-cert certname\fR" 4 .IX Item "-cert certname" The certificate to use, if one is requested by the server. The default is not to use a certificate. The file is in \s-1PEM\s0 format. .IP "\fB\-key keyfile\fR" 4 .IX Item "-key keyfile" The private key to use. If not specified then the certificate file will be used. The file is in \s-1PEM\s0 format. .IP "\fB\-verify depth\fR" 4 .IX Item "-verify depth" The verify depth to use. This specifies the maximum length of the server certificate chain and turns on server certificate verification. Currently the verify operation continues after errors so all the problems with a certificate chain can be seen. As a side effect the connection will never fail due to a server certificate verify failure. .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. The \&\fBoption\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fBx509\fR\|(1) manual page for details. .IP "\fB\-CApath directory\fR" 4 .IX Item "-CApath directory" The directory to use for server certificate verification. This directory must be in \*(L"hash format\*(R", see \fBverify\fR for more information. These are also used when building the client certificate chain. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" A file containing trusted certificates to use during server authentication and to use when attempting to build the client certificate chain. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location .IP "\fB\-new\fR" 4 .IX Item "-new" Performs the timing test using a new session \s-1ID\s0 for each connection. If neither \fB\-new\fR nor \fB\-reuse\fR are specified, they are both on by default and executed in sequence. .IP "\fB\-reuse\fR" 4 .IX Item "-reuse" Performs the timing test using the same session \s-1ID\s0; this can be used as a test that session caching is working. If neither \fB\-new\fR nor \fB\-reuse\fR are specified, they are both on by default and executed in sequence. .IP "\fB\-ssl3\fR" 4 .IX Item "-ssl3" This option disables the use of \s-1SSL\s0 version 3. By default the initial handshake uses a method which should be compatible with all servers and permit them to use \s-1SSL\s0 v3 or \s-1TLS\s0 as appropriate. .Sp The timing program is not as rich in options to turn protocols on and off as the \fBs_client\fR\|(1) program and may not connect to all servers. Unfortunately there are a lot of ancient and broken servers in use which cannot handle this technique and will fail to connect. Some servers only work if \s-1TLS\s0 is turned off with the \fB\-ssl3\fR option. .Sp Note that this option may not be available, depending on how OpenSSL was built. .IP "\fB\-bugs\fR" 4 .IX Item "-bugs" There are several known bugs in \s-1SSL\s0 and \s-1TLS\s0 implementations. Adding this option enables various workarounds. .IP "\fB\-cipher cipherlist\fR" 4 .IX Item "-cipher cipherlist" This allows the TLSv1.2 and below cipher list sent by the client to be modified. This list will be combined with any TLSv1.3 ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See \&\fBciphers\fR\|(1) for more information. .IP "\fB\-ciphersuites val\fR" 4 .IX Item "-ciphersuites val" This allows the TLSv1.3 ciphersuites sent by the client to be modified. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See \&\fBciphers\fR\|(1) for more information. The format for this list is a simple colon (\*(L":\*(R") separated list of TLSv1.3 ciphersuite names. .IP "\fB\-time length\fR" 4 .IX Item "-time length" Specifies how long (in seconds) \fBs_time\fR should establish connections and optionally transfer payload data from a server. Server and client performance and the link speed determine how many connections \fBs_time\fR can establish. .SH "NOTES" .IX Header "NOTES" \&\fBs_time\fR can be used to measure the performance of an \s-1SSL\s0 connection. To connect to an \s-1SSL HTTP\s0 server and get the default page the command .PP .Vb 1 \& openssl s_time \-connect servername:443 \-www / \-CApath yourdir \-CAfile yourfile.pem \-cipher commoncipher [\-ssl3] .Ve .PP would typically be used (https uses port 443). 'commoncipher' is a cipher to which both client and server can agree, see the \fBciphers\fR\|(1) command for details. .PP If the handshake fails then there are several possible causes, if it is nothing obvious like no client certificate then the \fB\-bugs\fR and \&\fB\-ssl3\fR options can be tried in case it is a buggy server. In particular you should play with these options \fBbefore\fR submitting a bug report to an OpenSSL mailing list. .PP A frequent problem when attempting to get client certificates working is that a web client complains it has no certificates or gives an empty list to choose from. This is normally because the server is not sending the clients certificate authority in its \*(L"acceptable \s-1CA\s0 list\*(R" when it requests a certificate. By using \fBs_client\fR\|(1) the \s-1CA\s0 list can be viewed and checked. However, some servers only request client authentication after a specific \s-1URL\s0 is requested. To obtain the list in this case it is necessary to use the \fB\-prexit\fR option of \fBs_client\fR\|(1) and send an \s-1HTTP\s0 request for an appropriate page. .PP If a certificate is specified on the command line using the \fB\-cert\fR option it will not be used unless the server specifically requests a client certificate. Therefore, merely including a client certificate on the command line is no guarantee that the certificate works. .SH "BUGS" .IX Header "BUGS" Because this program does not have all the options of the \&\fBs_client\fR\|(1) program to turn protocols on and off, you may not be able to measure the performance of all protocols with all servers. .PP The \fB\-verify\fR option should really exit if the server verification fails. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBs_client\fR\|(1), \fBs_server\fR\|(1), \fBciphers\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2004\-2020 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!q""spkac.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SPKAC 1" .TH SPKAC 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-spkac, spkac \- SPKAC printing and generating utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBspkac\fR [\fB\-help\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-key keyfile\fR] [\fB\-keyform PEM|DER|ENGINE\fR] [\fB\-passin arg\fR] [\fB\-challenge string\fR] [\fB\-pubkey\fR] [\fB\-spkac spkacname\fR] [\fB\-spksect section\fR] [\fB\-noout\fR] [\fB\-verify\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBspkac\fR command processes Netscape signed public key and challenge (\s-1SPKAC\s0) files. It can print out their contents, verify the signature and produce its own SPKACs from a supplied private key. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read from or standard input if this option is not specified. Ignored if the \fB\-key\fR option is used. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write to or standard output by default. .IP "\fB\-key keyfile\fR" 4 .IX Item "-key keyfile" Create an \s-1SPKAC\s0 file using the private key in \fBkeyfile\fR. The \&\fB\-in\fR, \fB\-noout\fR, \fB\-spksect\fR and \fB\-verify\fR options are ignored if present. .IP "\fB\-keyform PEM|DER|ENGINE\fR" 4 .IX Item "-keyform PEM|DER|ENGINE" Whether the key format is \s-1PEM, DER,\s0 or an engine-backed key. The default is \s-1PEM.\s0 .IP "\fB\-passin password\fR" 4 .IX Item "-passin password" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-challenge string\fR" 4 .IX Item "-challenge string" Specifies the challenge string if an \s-1SPKAC\s0 is being created. .IP "\fB\-spkac spkacname\fR" 4 .IX Item "-spkac spkacname" Allows an alternative name form the variable containing the \&\s-1SPKAC.\s0 The default is \*(L"\s-1SPKAC\*(R".\s0 This option affects both generated and input \s-1SPKAC\s0 files. .IP "\fB\-spksect section\fR" 4 .IX Item "-spksect section" Allows an alternative name form the section containing the \&\s-1SPKAC.\s0 The default is the default section. .IP "\fB\-noout\fR" 4 .IX Item "-noout" Don't output the text version of the \s-1SPKAC\s0 (not used if an \&\s-1SPKAC\s0 is being created). .IP "\fB\-pubkey\fR" 4 .IX Item "-pubkey" Output the public key of an \s-1SPKAC\s0 (not used if an \s-1SPKAC\s0 is being created). .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verifies the digital signature on the supplied \s-1SPKAC.\s0 .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBspkac\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "EXAMPLES" .IX Header "EXAMPLES" Print out the contents of an \s-1SPKAC:\s0 .PP .Vb 1 \& openssl spkac \-in spkac.cnf .Ve .PP Verify the signature of an \s-1SPKAC:\s0 .PP .Vb 1 \& openssl spkac \-in spkac.cnf \-noout \-verify .Ve .PP Create an \s-1SPKAC\s0 using the challenge string \*(L"hello\*(R": .PP .Vb 1 \& openssl spkac \-key key.pem \-challenge hello \-out spkac.cnf .Ve .PP Example of an \s-1SPKAC,\s0 (long lines split up for clarity): .PP .Vb 6 \& SPKAC=MIG5MGUwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\e \& 1cCoq2Wa3Ixs47uI7FPVwHVIPDx5yso105Y6zpozam135a\e \& 8R0CpoRvkkigIyXfcCjiVi5oWk+6FfPaD03uPFoQIDAQAB\e \& FgVoZWxsbzANBgkqhkiG9w0BAQQFAANBAFpQtY/FojdwkJ\e \& h1bEIYuc2EeM2KHTWPEepWYeawvHD0gQ3DngSC75YCWnnD\e \& dq+NQ3F+X4deMx9AaEglZtULwV4= .Ve .SH "NOTES" .IX Header "NOTES" A created \s-1SPKAC\s0 with suitable \s-1DN\s0 components appended can be fed into the \fBca\fR utility. .PP SPKACs are typically generated by Netscape when a form is submitted containing the \fB\s-1KEYGEN\s0\fR tag as part of the certificate enrollment process. .PP The challenge string permits a primitive form of proof of possession of private key. By checking the \s-1SPKAC\s0 signature and a random challenge string some guarantee is given that the user knows the private key corresponding to the public key being certified. This is important in some applications. Without this it is possible for a previous \s-1SPKAC\s0 to be used in a \*(L"replay attack\*(R". .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBca\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!j\T\T openssl.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "OPENSSL 1" .TH OPENSSL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl \- OpenSSL command line tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \&\fIcommand\fR [ \fIcommand_opts\fR ] [ \fIcommand_args\fR ] .PP \&\fBopenssl\fR \fBlist\fR [ \fBstandard-commands\fR | \fBdigest-commands\fR | \fBcipher-commands\fR | \fBcipher-algorithms\fR | \fBdigest-algorithms\fR | \fBpublic-key-algorithms\fR] .PP \&\fBopenssl\fR \fBno\-\fR\fI\s-1XXX\s0\fR [ \fIarbitrary options\fR ] .SH "DESCRIPTION" .IX Header "DESCRIPTION" OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (\s-1SSL\s0 v2/v3) and Transport Layer Security (\s-1TLS\s0 v1) network protocols and related cryptography standards required by them. .PP The \fBopenssl\fR program is a command line tool for using the various cryptography functions of OpenSSL's \fBcrypto\fR library from the shell. It can be used for .PP .Vb 8 \& o Creation and management of private keys, public keys and parameters \& o Public key cryptographic operations \& o Creation of X.509 certificates, CSRs and CRLs \& o Calculation of Message Digests \& o Encryption and Decryption with Ciphers \& o SSL/TLS Client and Server Tests \& o Handling of S/MIME signed or encrypted mail \& o Time Stamp requests, generation and verification .Ve .SH "COMMAND SUMMARY" .IX Header "COMMAND SUMMARY" The \fBopenssl\fR program provides a rich variety of commands (\fIcommand\fR in the \&\s-1SYNOPSIS\s0 above), each of which often has a wealth of options and arguments (\fIcommand_opts\fR and \fIcommand_args\fR in the \s-1SYNOPSIS\s0). .PP Detailed documentation and use cases for most standard subcommands are available (e.g., \fBx509\fR\|(1) or \fBopenssl\-x509\fR\|(1)). .PP Many commands use an external configuration file for some or all of their arguments and have a \fB\-config\fR option to specify that file. The environment variable \fB\s-1OPENSSL_CONF\s0\fR can be used to specify the location of the file. If the environment variable is not specified, then the file is named \&\fBopenssl.cnf\fR in the default certificate storage area, whose value depends on the configuration flags specified when the OpenSSL was built. .PP The list parameters \fBstandard-commands\fR, \fBdigest-commands\fR, and \fBcipher-commands\fR output a list (one entry per line) of the names of all standard commands, message digest commands, or cipher commands, respectively, that are available in the present \fBopenssl\fR utility. .PP The list parameters \fBcipher-algorithms\fR and \&\fBdigest-algorithms\fR list all cipher and message digest names, one entry per line. Aliases are listed as: .PP .Vb 1 \& from => to .Ve .PP The list parameter \fBpublic-key-algorithms\fR lists all supported public key algorithms. .PP The command \fBno\-\fR\fI\s-1XXX\s0\fR tests whether a command of the specified name is available. If no command named \fI\s-1XXX\s0\fR exists, it returns 0 (success) and prints \fBno\-\fR\fI\s-1XXX\s0\fR; otherwise it returns 1 and prints \fI\s-1XXX\s0\fR. In both cases, the output goes to \fBstdout\fR and nothing is printed to \fBstderr\fR. Additional command line arguments are always ignored. Since for each cipher there is a command of the same name, this provides an easy way for shell scripts to test for the availability of ciphers in the \fBopenssl\fR program. (\fBno\-\fR\fI\s-1XXX\s0\fR is not able to detect pseudo-commands such as \fBquit\fR, \&\fBlist\fR, or \fBno\-\fR\fI\s-1XXX\s0\fR itself.) .SS "Standard Commands" .IX Subsection "Standard Commands" .IP "\fBasn1parse\fR" 4 .IX Item "asn1parse" Parse an \s-1ASN.1\s0 sequence. .IP "\fBca\fR" 4 .IX Item "ca" Certificate Authority (\s-1CA\s0) Management. .IP "\fBciphers\fR" 4 .IX Item "ciphers" Cipher Suite Description Determination. .IP "\fBcms\fR" 4 .IX Item "cms" \&\s-1CMS\s0 (Cryptographic Message Syntax) utility. .IP "\fBcrl\fR" 4 .IX Item "crl" Certificate Revocation List (\s-1CRL\s0) Management. .IP "\fBcrl2pkcs7\fR" 4 .IX Item "crl2pkcs7" \&\s-1CRL\s0 to PKCS#7 Conversion. .IP "\fBdgst\fR" 4 .IX Item "dgst" Message Digest Calculation. .IP "\fBdh\fR" 4 .IX Item "dh" Diffie-Hellman Parameter Management. Obsoleted by \fBdhparam\fR\|(1). .IP "\fBdhparam\fR" 4 .IX Item "dhparam" Generation and Management of Diffie-Hellman Parameters. Superseded by \&\fBgenpkey\fR\|(1) and \fBpkeyparam\fR\|(1). .IP "\fBdsa\fR" 4 .IX Item "dsa" \&\s-1DSA\s0 Data Management. .IP "\fBdsaparam\fR" 4 .IX Item "dsaparam" \&\s-1DSA\s0 Parameter Generation and Management. Superseded by \&\fBgenpkey\fR\|(1) and \fBpkeyparam\fR\|(1). .IP "\fBec\fR" 4 .IX Item "ec" \&\s-1EC\s0 (Elliptic curve) key processing. .IP "\fBecparam\fR" 4 .IX Item "ecparam" \&\s-1EC\s0 parameter manipulation and generation. .IP "\fBenc\fR" 4 .IX Item "enc" Encoding with Ciphers. .IP "\fBengine\fR" 4 .IX Item "engine" Engine (loadable module) information and manipulation. .IP "\fBerrstr\fR" 4 .IX Item "errstr" Error Number to Error String Conversion. .IP "\fBgendh\fR" 4 .IX Item "gendh" Generation of Diffie-Hellman Parameters. Obsoleted by \fBdhparam\fR\|(1). .IP "\fBgendsa\fR" 4 .IX Item "gendsa" Generation of \s-1DSA\s0 Private Key from Parameters. Superseded by \&\fBgenpkey\fR\|(1) and \fBpkey\fR\|(1). .IP "\fBgenpkey\fR" 4 .IX Item "genpkey" Generation of Private Key or Parameters. .IP "\fBgenrsa\fR" 4 .IX Item "genrsa" Generation of \s-1RSA\s0 Private Key. Superseded by \fBgenpkey\fR\|(1). .IP "\fBnseq\fR" 4 .IX Item "nseq" Create or examine a Netscape certificate sequence. .IP "\fBocsp\fR" 4 .IX Item "ocsp" Online Certificate Status Protocol utility. .IP "\fBpasswd\fR" 4 .IX Item "passwd" Generation of hashed passwords. .IP "\fBpkcs12\fR" 4 .IX Item "pkcs12" PKCS#12 Data Management. .IP "\fBpkcs7\fR" 4 .IX Item "pkcs7" PKCS#7 Data Management. .IP "\fBpkcs8\fR" 4 .IX Item "pkcs8" PKCS#8 format private key conversion tool. .IP "\fBpkey\fR" 4 .IX Item "pkey" Public and private key management. .IP "\fBpkeyparam\fR" 4 .IX Item "pkeyparam" Public key algorithm parameter management. .IP "\fBpkeyutl\fR" 4 .IX Item "pkeyutl" Public key algorithm cryptographic operation utility. .IP "\fBprime\fR" 4 .IX Item "prime" Compute prime numbers. .IP "\fBrand\fR" 4 .IX Item "rand" Generate pseudo-random bytes. .IP "\fBrehash\fR" 4 .IX Item "rehash" Create symbolic links to certificate and \s-1CRL\s0 files named by the hash values. .IP "\fBreq\fR" 4 .IX Item "req" PKCS#10 X.509 Certificate Signing Request (\s-1CSR\s0) Management. .IP "\fBrsa\fR" 4 .IX Item "rsa" \&\s-1RSA\s0 key management. .IP "\fBrsautl\fR" 4 .IX Item "rsautl" \&\s-1RSA\s0 utility for signing, verification, encryption, and decryption. Superseded by \fBpkeyutl\fR\|(1). .IP "\fBs_client\fR" 4 .IX Item "s_client" This implements a generic \s-1SSL/TLS\s0 client which can establish a transparent connection to a remote server speaking \s-1SSL/TLS.\s0 It's intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL \fBssl\fR library. .IP "\fBs_server\fR" 4 .IX Item "s_server" This implements a generic \s-1SSL/TLS\s0 server which accepts connections from remote clients speaking \s-1SSL/TLS.\s0 It's intended for testing purposes only and provides only rudimentary interface functionality but internally uses mostly all functionality of the OpenSSL \fBssl\fR library. It provides both an own command line oriented protocol for testing \s-1SSL\s0 functions and a simple \s-1HTTP\s0 response facility to emulate an SSL/TLS\-aware webserver. .IP "\fBs_time\fR" 4 .IX Item "s_time" \&\s-1SSL\s0 Connection Timer. .IP "\fBsess_id\fR" 4 .IX Item "sess_id" \&\s-1SSL\s0 Session Data Management. .IP "\fBsmime\fR" 4 .IX Item "smime" S/MIME mail processing. .IP "\fBspeed\fR" 4 .IX Item "speed" Algorithm Speed Measurement. .IP "\fBspkac\fR" 4 .IX Item "spkac" \&\s-1SPKAC\s0 printing and generating utility. .IP "\fBsrp\fR" 4 .IX Item "srp" Maintain \s-1SRP\s0 password file. .IP "\fBstoreutl\fR" 4 .IX Item "storeutl" Utility to list and display certificates, keys, CRLs, etc. .IP "\fBts\fR" 4 .IX Item "ts" Time Stamping Authority tool (client/server). .IP "\fBverify\fR" 4 .IX Item "verify" X.509 Certificate Verification. .IP "\fBversion\fR" 4 .IX Item "version" OpenSSL Version Information. .IP "\fBx509\fR" 4 .IX Item "x509" X.509 Certificate Data Management. .SS "Message Digest Commands" .IX Subsection "Message Digest Commands" .IP "\fBblake2b512\fR" 4 .IX Item "blake2b512" BLAKE2b\-512 Digest .IP "\fBblake2s256\fR" 4 .IX Item "blake2s256" BLAKE2s\-256 Digest .IP "\fBmd2\fR" 4 .IX Item "md2" \&\s-1MD2\s0 Digest .IP "\fBmd4\fR" 4 .IX Item "md4" \&\s-1MD4\s0 Digest .IP "\fBmd5\fR" 4 .IX Item "md5" \&\s-1MD5\s0 Digest .IP "\fBmdc2\fR" 4 .IX Item "mdc2" \&\s-1MDC2\s0 Digest .IP "\fBrmd160\fR" 4 .IX Item "rmd160" \&\s-1RMD\-160\s0 Digest .IP "\fBsha1\fR" 4 .IX Item "sha1" \&\s-1SHA\-1\s0 Digest .IP "\fBsha224\fR" 4 .IX Item "sha224" \&\s-1SHA\-2 224\s0 Digest .IP "\fBsha256\fR" 4 .IX Item "sha256" \&\s-1SHA\-2 256\s0 Digest .IP "\fBsha384\fR" 4 .IX Item "sha384" \&\s-1SHA\-2 384\s0 Digest .IP "\fBsha512\fR" 4 .IX Item "sha512" \&\s-1SHA\-2 512\s0 Digest .IP "\fBsha3\-224\fR" 4 .IX Item "sha3-224" \&\s-1SHA\-3 224\s0 Digest .IP "\fBsha3\-256\fR" 4 .IX Item "sha3-256" \&\s-1SHA\-3 256\s0 Digest .IP "\fBsha3\-384\fR" 4 .IX Item "sha3-384" \&\s-1SHA\-3 384\s0 Digest .IP "\fBsha3\-512\fR" 4 .IX Item "sha3-512" \&\s-1SHA\-3 512\s0 Digest .IP "\fBshake128\fR" 4 .IX Item "shake128" \&\s-1SHA\-3 SHAKE128\s0 Digest .IP "\fBshake256\fR" 4 .IX Item "shake256" \&\s-1SHA\-3 SHAKE256\s0 Digest .IP "\fBsm3\fR" 4 .IX Item "sm3" \&\s-1SM3\s0 Digest .SS "Encoding and Cipher Commands" .IX Subsection "Encoding and Cipher Commands" The following aliases provide convenient access to the most used encodings and ciphers. .PP Depending on how OpenSSL was configured and built, not all ciphers listed here may be present. See \fBenc\fR\|(1) for more information and command usage. .IP "\fBaes128\fR, \fBaes\-128\-cbc\fR, \fBaes\-128\-cfb\fR, \fBaes\-128\-ctr\fR, \fBaes\-128\-ecb\fR, \fBaes\-128\-ofb\fR" 4 .IX Item "aes128, aes-128-cbc, aes-128-cfb, aes-128-ctr, aes-128-ecb, aes-128-ofb" \&\s-1AES\-128\s0 Cipher .IP "\fBaes192\fR, \fBaes\-192\-cbc\fR, \fBaes\-192\-cfb\fR, \fBaes\-192\-ctr\fR, \fBaes\-192\-ecb\fR, \fBaes\-192\-ofb\fR" 4 .IX Item "aes192, aes-192-cbc, aes-192-cfb, aes-192-ctr, aes-192-ecb, aes-192-ofb" \&\s-1AES\-192\s0 Cipher .IP "\fBaes256\fR, \fBaes\-256\-cbc\fR, \fBaes\-256\-cfb\fR, \fBaes\-256\-ctr\fR, \fBaes\-256\-ecb\fR, \fBaes\-256\-ofb\fR" 4 .IX Item "aes256, aes-256-cbc, aes-256-cfb, aes-256-ctr, aes-256-ecb, aes-256-ofb" \&\s-1AES\-256\s0 Cipher .IP "\fBaria128\fR, \fBaria\-128\-cbc\fR, \fBaria\-128\-cfb\fR, \fBaria\-128\-ctr\fR, \fBaria\-128\-ecb\fR, \fBaria\-128\-ofb\fR" 4 .IX Item "aria128, aria-128-cbc, aria-128-cfb, aria-128-ctr, aria-128-ecb, aria-128-ofb" Aria\-128 Cipher .IP "\fBaria192\fR, \fBaria\-192\-cbc\fR, \fBaria\-192\-cfb\fR, \fBaria\-192\-ctr\fR, \fBaria\-192\-ecb\fR, \fBaria\-192\-ofb\fR" 4 .IX Item "aria192, aria-192-cbc, aria-192-cfb, aria-192-ctr, aria-192-ecb, aria-192-ofb" Aria\-192 Cipher .IP "\fBaria256\fR, \fBaria\-256\-cbc\fR, \fBaria\-256\-cfb\fR, \fBaria\-256\-ctr\fR, \fBaria\-256\-ecb\fR, \fBaria\-256\-ofb\fR" 4 .IX Item "aria256, aria-256-cbc, aria-256-cfb, aria-256-ctr, aria-256-ecb, aria-256-ofb" Aria\-256 Cipher .IP "\fBbase64\fR" 4 .IX Item "base64" Base64 Encoding .IP "\fBbf\fR, \fBbf-cbc\fR, \fBbf-cfb\fR, \fBbf-ecb\fR, \fBbf-ofb\fR" 4 .IX Item "bf, bf-cbc, bf-cfb, bf-ecb, bf-ofb" Blowfish Cipher .IP "\fBcamellia128\fR, \fBcamellia\-128\-cbc\fR, \fBcamellia\-128\-cfb\fR, \fBcamellia\-128\-ctr\fR, \fBcamellia\-128\-ecb\fR, \fBcamellia\-128\-ofb\fR" 4 .IX Item "camellia128, camellia-128-cbc, camellia-128-cfb, camellia-128-ctr, camellia-128-ecb, camellia-128-ofb" Camellia\-128 Cipher .IP "\fBcamellia192\fR, \fBcamellia\-192\-cbc\fR, \fBcamellia\-192\-cfb\fR, \fBcamellia\-192\-ctr\fR, \fBcamellia\-192\-ecb\fR, \fBcamellia\-192\-ofb\fR" 4 .IX Item "camellia192, camellia-192-cbc, camellia-192-cfb, camellia-192-ctr, camellia-192-ecb, camellia-192-ofb" Camellia\-192 Cipher .IP "\fBcamellia256\fR, \fBcamellia\-256\-cbc\fR, \fBcamellia\-256\-cfb\fR, \fBcamellia\-256\-ctr\fR, \fBcamellia\-256\-ecb\fR, \fBcamellia\-256\-ofb\fR" 4 .IX Item "camellia256, camellia-256-cbc, camellia-256-cfb, camellia-256-ctr, camellia-256-ecb, camellia-256-ofb" Camellia\-256 Cipher .IP "\fBcast\fR, \fBcast-cbc\fR" 4 .IX Item "cast, cast-cbc" \&\s-1CAST\s0 Cipher .IP "\fBcast5\-cbc\fR, \fBcast5\-cfb\fR, \fBcast5\-ecb\fR, \fBcast5\-ofb\fR" 4 .IX Item "cast5-cbc, cast5-cfb, cast5-ecb, cast5-ofb" \&\s-1CAST5\s0 Cipher .IP "\fBchacha20\fR" 4 .IX Item "chacha20" Chacha20 Cipher .IP "\fBdes\fR, \fBdes-cbc\fR, \fBdes-cfb\fR, \fBdes-ecb\fR, \fBdes-ede\fR, \fBdes-ede-cbc\fR, \fBdes-ede-cfb\fR, \fBdes-ede-ofb\fR, \fBdes-ofb\fR" 4 .IX Item "des, des-cbc, des-cfb, des-ecb, des-ede, des-ede-cbc, des-ede-cfb, des-ede-ofb, des-ofb" \&\s-1DES\s0 Cipher .IP "\fBdes3\fR, \fBdesx\fR, \fBdes\-ede3\fR, \fBdes\-ede3\-cbc\fR, \fBdes\-ede3\-cfb\fR, \fBdes\-ede3\-ofb\fR" 4 .IX Item "des3, desx, des-ede3, des-ede3-cbc, des-ede3-cfb, des-ede3-ofb" Triple-DES Cipher .IP "\fBidea\fR, \fBidea-cbc\fR, \fBidea-cfb\fR, \fBidea-ecb\fR, \fBidea-ofb\fR" 4 .IX Item "idea, idea-cbc, idea-cfb, idea-ecb, idea-ofb" \&\s-1IDEA\s0 Cipher .IP "\fBrc2\fR, \fBrc2\-cbc\fR, \fBrc2\-cfb\fR, \fBrc2\-ecb\fR, \fBrc2\-ofb\fR" 4 .IX Item "rc2, rc2-cbc, rc2-cfb, rc2-ecb, rc2-ofb" \&\s-1RC2\s0 Cipher .IP "\fBrc4\fR" 4 .IX Item "rc4" \&\s-1RC4\s0 Cipher .IP "\fBrc5\fR, \fBrc5\-cbc\fR, \fBrc5\-cfb\fR, \fBrc5\-ecb\fR, \fBrc5\-ofb\fR" 4 .IX Item "rc5, rc5-cbc, rc5-cfb, rc5-ecb, rc5-ofb" \&\s-1RC5\s0 Cipher .IP "\fBseed\fR, \fBseed-cbc\fR, \fBseed-cfb\fR, \fBseed-ecb\fR, \fBseed-ofb\fR" 4 .IX Item "seed, seed-cbc, seed-cfb, seed-ecb, seed-ofb" \&\s-1SEED\s0 Cipher .IP "\fBsm4\fR, \fBsm4\-cbc\fR, \fBsm4\-cfb\fR, \fBsm4\-ctr\fR, \fBsm4\-ecb\fR, \fBsm4\-ofb\fR" 4 .IX Item "sm4, sm4-cbc, sm4-cfb, sm4-ctr, sm4-ecb, sm4-ofb" \&\s-1SM4\s0 Cipher .SH "OPTIONS" .IX Header "OPTIONS" Details of which options are available depend on the specific command. This section describes some common options with common behavior. .SS "Common Options" .IX Subsection "Common Options" .IP "\fB\-help\fR" 4 .IX Item "-help" Provides a terse summary of all options. .SS "Pass Phrase Options" .IX Subsection "Pass Phrase Options" Several commands accept password arguments, typically using \fB\-passin\fR and \fB\-passout\fR for input and output passwords respectively. These allow the password to be obtained from a variety of sources. Both of these options take a single argument whose format is described below. If no password argument is given and a password is required then the user is prompted to enter one: this will typically be read from the current terminal with echoing turned off. .PP Note that character encoding may be relevant, please see \&\fBpassphrase\-encoding\fR\|(7). .IP "\fBpass:password\fR" 4 .IX Item "pass:password" The actual password is \fBpassword\fR. Since the password is visible to utilities (like 'ps' under Unix) this form should only be used where security is not important. .IP "\fBenv:var\fR" 4 .IX Item "env:var" Obtain the password from the environment variable \fBvar\fR. Since the environment of other processes is visible on certain platforms (e.g. ps under certain Unix OSes) this option should be used with caution. .IP "\fBfile:pathname\fR" 4 .IX Item "file:pathname" The first line of \fBpathname\fR is the password. If the same \fBpathname\fR argument is supplied to \fB\-passin\fR and \fB\-passout\fR arguments then the first line will be used for the input password and the next line for the output password. \fBpathname\fR need not refer to a regular file: it could for example refer to a device or named pipe. .IP "\fBfd:number\fR" 4 .IX Item "fd:number" Read the password from the file descriptor \fBnumber\fR. This can be used to send the data via a pipe for example. .IP "\fBstdin\fR" 4 .IX Item "stdin" Read the password from standard input. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBasn1parse\fR\|(1), \fBca\fR\|(1), \fBciphers\fR\|(1), \fBcms\fR\|(1), \fBconfig\fR\|(5), \&\fBcrl\fR\|(1), \fBcrl2pkcs7\fR\|(1), \fBdgst\fR\|(1), \&\fBdhparam\fR\|(1), \fBdsa\fR\|(1), \fBdsaparam\fR\|(1), \&\fBec\fR\|(1), \fBecparam\fR\|(1), \&\fBenc\fR\|(1), \fBengine\fR\|(1), \fBerrstr\fR\|(1), \fBgendsa\fR\|(1), \fBgenpkey\fR\|(1), \&\fBgenrsa\fR\|(1), \fBnseq\fR\|(1), \fBocsp\fR\|(1), \&\fBpasswd\fR\|(1), \&\fBpkcs12\fR\|(1), \fBpkcs7\fR\|(1), \fBpkcs8\fR\|(1), \&\fBpkey\fR\|(1), \fBpkeyparam\fR\|(1), \fBpkeyutl\fR\|(1), \fBprime\fR\|(1), \&\fBrand\fR\|(1), \fBrehash\fR\|(1), \fBreq\fR\|(1), \fBrsa\fR\|(1), \&\fBrsautl\fR\|(1), \fBs_client\fR\|(1), \&\fBs_server\fR\|(1), \fBs_time\fR\|(1), \fBsess_id\fR\|(1), \&\fBsmime\fR\|(1), \fBspeed\fR\|(1), \fBspkac\fR\|(1), \fBsrp\fR\|(1), \fBstoreutl\fR\|(1), \&\fBts\fR\|(1), \&\fBverify\fR\|(1), \fBversion\fR\|(1), \fBx509\fR\|(1), \&\fBcrypto\fR\|(7), \fBssl\fR\|(7), \fBx509v3_config\fR\|(5) .SH "HISTORY" .IX Header "HISTORY" The \fBlist\-\fR\fI\s-1XXX\s0\fR\fB\-algorithms\fR pseudo-commands were added in OpenSSL 1.0.0; For notes on the availability of other commands, see their individual manual pages. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!ȳ++ asn1parse.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ASN1PARSE 1" .TH ASN1PARSE 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-asn1parse, asn1parse \- ASN.1 parsing tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBasn1parse\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-out filename\fR] [\fB\-noout\fR] [\fB\-offset number\fR] [\fB\-length number\fR] [\fB\-i\fR] [\fB\-oid filename\fR] [\fB\-dump\fR] [\fB\-dlimit num\fR] [\fB\-strparse offset\fR] [\fB\-genstr string\fR] [\fB\-genconf file\fR] [\fB\-strictpem\fR] [\fB\-item name\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBasn1parse\fR command is a diagnostic utility that can parse \s-1ASN.1\s0 structures. It can also be used to extract data from \s-1ASN.1\s0 formatted data. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform\fR \fBDER|PEM\fR" 4 .IX Item "-inform DER|PEM" The input format. \fB\s-1DER\s0\fR is binary format and \fB\s-1PEM\s0\fR (the default) is base64 encoded. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" The input file, default is standard input. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Output file to place the \s-1DER\s0 encoded data into. If this option is not present then no data will be output. This is most useful when combined with the \fB\-strparse\fR option. .IP "\fB\-noout\fR" 4 .IX Item "-noout" Don't output the parsed version of the input file. .IP "\fB\-offset number\fR" 4 .IX Item "-offset number" Starting offset to begin parsing, default is start of file. .IP "\fB\-length number\fR" 4 .IX Item "-length number" Number of bytes to parse, default is until end of file. .IP "\fB\-i\fR" 4 .IX Item "-i" Indents the output according to the \*(L"depth\*(R" of the structures. .IP "\fB\-oid filename\fR" 4 .IX Item "-oid filename" A file containing additional \s-1OBJECT\s0 IDENTIFIERs (OIDs). The format of this file is described in the \s-1NOTES\s0 section below. .IP "\fB\-dump\fR" 4 .IX Item "-dump" Dump unknown data in hex format. .IP "\fB\-dlimit num\fR" 4 .IX Item "-dlimit num" Like \fB\-dump\fR, but only the first \fBnum\fR bytes are output. .IP "\fB\-strparse offset\fR" 4 .IX Item "-strparse offset" Parse the contents octets of the \s-1ASN.1\s0 object starting at \fBoffset\fR. This option can be used multiple times to \*(L"drill down\*(R" into a nested structure. .IP "\fB\-genstr string\fR, \fB\-genconf file\fR" 4 .IX Item "-genstr string, -genconf file" Generate encoded data based on \fBstring\fR, \fBfile\fR or both using \&\fBASN1_generate_nconf\fR\|(3) format. If \fBfile\fR only is present then the string is obtained from the default section using the name \&\fBasn1\fR. The encoded data is passed through the \s-1ASN1\s0 parser and printed out as though it came from a file, the contents can thus be examined and written to a file using the \fBout\fR option. .IP "\fB\-strictpem\fR" 4 .IX Item "-strictpem" If this option is used then \fB\-inform\fR will be ignored. Without this option any data in a \s-1PEM\s0 format input file will be treated as being base64 encoded and processed whether it has the normal \s-1PEM BEGIN\s0 and \s-1END\s0 markers or not. This option will ignore any data prior to the start of the \s-1BEGIN\s0 marker, or after an \&\s-1END\s0 marker in a \s-1PEM\s0 file. .IP "\fB\-item name\fR" 4 .IX Item "-item name" Attempt to decode and print the data as \fB\s-1ASN1_ITEM\s0 name\fR. This can be used to print out the fields of any supported \s-1ASN.1\s0 structure if the type is known. .SS "Output" .IX Subsection "Output" The output will typically contain lines like this: .PP .Vb 1 \& 0:d=0 hl=4 l= 681 cons: SEQUENCE .Ve .PP \&..... .PP .Vb 10 \& 229:d=3 hl=3 l= 141 prim: BIT STRING \& 373:d=2 hl=3 l= 162 cons: cont [ 3 ] \& 376:d=3 hl=3 l= 159 cons: SEQUENCE \& 379:d=4 hl=2 l= 29 cons: SEQUENCE \& 381:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Identifier \& 386:d=5 hl=2 l= 22 prim: OCTET STRING \& 410:d=4 hl=2 l= 112 cons: SEQUENCE \& 412:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Identifier \& 417:d=5 hl=2 l= 105 prim: OCTET STRING \& 524:d=4 hl=2 l= 12 cons: SEQUENCE .Ve .PP \&..... .PP This example is part of a self-signed certificate. Each line starts with the offset in decimal. \fBd=XX\fR specifies the current depth. The depth is increased within the scope of any \s-1SET\s0 or \s-1SEQUENCE.\s0 \fBhl=XX\fR gives the header length (tag and length octets) of the current type. \fBl=XX\fR gives the length of the contents octets. .PP The \fB\-i\fR option can be used to make the output more readable. .PP Some knowledge of the \s-1ASN.1\s0 structure is needed to interpret the output. .PP In this example the \s-1BIT STRING\s0 at offset 229 is the certificate public key. The contents octets of this will contain the public key information. This can be examined using the option \fB\-strparse 229\fR to yield: .PP .Vb 3 \& 0:d=0 hl=3 l= 137 cons: SEQUENCE \& 3:d=1 hl=3 l= 129 prim: INTEGER :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897 \& 135:d=1 hl=2 l= 3 prim: INTEGER :010001 .Ve .SH "NOTES" .IX Header "NOTES" If an \s-1OID\s0 is not part of OpenSSL's internal table it will be represented in numerical form (for example 1.2.3.4). The file passed to the \fB\-oid\fR option allows additional OIDs to be included. Each line consists of three columns, the first column is the \s-1OID\s0 in numerical format and should be followed by white space. The second column is the \*(L"short name\*(R" which is a single word followed by white space. The final column is the rest of the line and is the \&\*(L"long name\*(R". \fBasn1parse\fR displays the long name. Example: .PP \&\f(CW\*(C`1.2.3.4 shortName A long name\*(C'\fR .SH "EXAMPLES" .IX Header "EXAMPLES" Parse a file: .PP .Vb 1 \& openssl asn1parse \-in file.pem .Ve .PP Parse a \s-1DER\s0 file: .PP .Vb 1 \& openssl asn1parse \-inform DER \-in file.der .Ve .PP Generate a simple UTF8String: .PP .Vb 1 \& openssl asn1parse \-genstr \*(AqUTF8:Hello World\*(Aq .Ve .PP Generate and write out a UTF8String, don't print parsed output: .PP .Vb 1 \& openssl asn1parse \-genstr \*(AqUTF8:Hello World\*(Aq \-noout \-out utf8.der .Ve .PP Generate using a config file: .PP .Vb 1 \& openssl asn1parse \-genconf asn1.cnf \-noout \-out asn1.der .Ve .PP Example config file: .PP .Vb 1 \& asn1=SEQUENCE:seq_sect \& \& [seq_sect] \& \& field1=BOOL:TRUE \& field2=EXP:0, UTF8:some random string .Ve .SH "BUGS" .IX Header "BUGS" There should be options to change the format of output lines. The output of some \&\s-1ASN.1\s0 types is not well handled (if at all). .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBASN1_generate_nconf\fR\|(3) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!˥**ec.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "EC 1" .TH EC 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ec, ec \- EC key processing .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBec\fR [\fB\-help\fR] [\fB\-inform PEM|DER\fR] [\fB\-outform PEM|DER\fR] [\fB\-in filename\fR] [\fB\-passin arg\fR] [\fB\-out filename\fR] [\fB\-passout arg\fR] [\fB\-des\fR] [\fB\-des3\fR] [\fB\-idea\fR] [\fB\-text\fR] [\fB\-noout\fR] [\fB\-param_out\fR] [\fB\-pubin\fR] [\fB\-pubout\fR] [\fB\-conv_form arg\fR] [\fB\-param_enc arg\fR] [\fB\-no_public\fR] [\fB\-check\fR] [\fB\-engine id\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBec\fR command processes \s-1EC\s0 keys. They can be converted between various forms and their components printed out. \fBNote\fR OpenSSL uses the private key format specified in '\s-1SEC 1:\s0 Elliptic Curve Cryptography' (http://www.secg.org/). To convert an OpenSSL \s-1EC\s0 private key into the PKCS#8 private key format use the \fBpkcs8\fR command. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-inform DER|PEM\fR" 4 .IX Item "-inform DER|PEM" This specifies the input format. The \fB\s-1DER\s0\fR option with a private key uses an \s-1ASN.1 DER\s0 encoded \s-1SEC1\s0 private key. When used with a public key it uses the SubjectPublicKeyInfo structure as specified in \s-1RFC 3280.\s0 The \fB\s-1PEM\s0\fR form is the default format: it consists of the \fB\s-1DER\s0\fR format base64 encoded with additional header and footer lines. In the case of a private key PKCS#8 format is also accepted. .IP "\fB\-outform DER|PEM\fR" 4 .IX Item "-outform DER|PEM" This specifies the output format, the options have the same meaning and default as the \fB\-inform\fR option. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read a key from or standard input if this option is not specified. If the key is encrypted a pass phrase will be prompted for. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" The input file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" This specifies the output filename to write a key to or standard output by is not specified. If any encryption options are set then a pass phrase will be prompted for. The output filename should \fBnot\fR be the same as the input filename. .IP "\fB\-passout arg\fR" 4 .IX Item "-passout arg" The output file password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-des|\-des3|\-idea\fR" 4 .IX Item "-des|-des3|-idea" These options encrypt the private key with the \s-1DES,\s0 triple \s-1DES, IDEA\s0 or any other cipher supported by OpenSSL before outputting it. A pass phrase is prompted for. If none of these options is specified the key is written in plain text. This means that using the \fBec\fR utility to read in an encrypted key with no encryption option can be used to remove the pass phrase from a key, or by setting the encryption options it can be use to add or change the pass phrase. These options can only be used with \s-1PEM\s0 format output files. .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the public, private key components and parameters. .IP "\fB\-noout\fR" 4 .IX Item "-noout" This option prevents output of the encoded version of the key. .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" By default, a private key is read from the input file. With this option a public key is read instead. .IP "\fB\-pubout\fR" 4 .IX Item "-pubout" By default a private key is output. With this option a public key will be output instead. This option is automatically set if the input is a public key. .IP "\fB\-conv_form\fR" 4 .IX Item "-conv_form" This specifies how the points on the elliptic curve are converted into octet strings. Possible values are: \fBcompressed\fR (the default value), \fBuncompressed\fR and \fBhybrid\fR. For more information regarding the point conversion forms please read the X9.62 standard. \&\fBNote\fR Due to patent issues the \fBcompressed\fR option is disabled by default for binary curves and can be enabled by defining the preprocessor macro \fB\s-1OPENSSL_EC_BIN_PT_COMP\s0\fR at compile time. .IP "\fB\-param_enc arg\fR" 4 .IX Item "-param_enc arg" This specifies how the elliptic curve parameters are encoded. Possible value are: \fBnamed_curve\fR, i.e. the ec parameters are specified by an \s-1OID,\s0 or \fBexplicit\fR where the ec parameters are explicitly given (see \s-1RFC 3279\s0 for the definition of the \&\s-1EC\s0 parameters structures). The default value is \fBnamed_curve\fR. \&\fBNote\fR the \fBimplicitlyCA\fR alternative, as specified in \s-1RFC 3279,\s0 is currently not implemented in OpenSSL. .IP "\fB\-no_public\fR" 4 .IX Item "-no_public" This option omits the public key components from the private key output. .IP "\fB\-check\fR" 4 .IX Item "-check" This option checks the consistency of an \s-1EC\s0 private or public key. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBec\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .SH "NOTES" .IX Header "NOTES" The \s-1PEM\s0 private key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN EC PRIVATE KEY\-\-\-\-\- \& \-\-\-\-\-END EC PRIVATE KEY\-\-\-\-\- .Ve .PP The \s-1PEM\s0 public key format uses the header and footer lines: .PP .Vb 2 \& \-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\- \& \-\-\-\-\-END PUBLIC KEY\-\-\-\-\- .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" To encrypt a private key using triple \s-1DES:\s0 .PP .Vb 1 \& openssl ec \-in key.pem \-des3 \-out keyout.pem .Ve .PP To convert a private key from \s-1PEM\s0 to \s-1DER\s0 format: .PP .Vb 1 \& openssl ec \-in key.pem \-outform DER \-out keyout.der .Ve .PP To print out the components of a private key to standard output: .PP .Vb 1 \& openssl ec \-in key.pem \-text \-noout .Ve .PP To just output the public part of a private key: .PP .Vb 1 \& openssl ec \-in key.pem \-pubout \-out pubkey.pem .Ve .PP To change the parameters encoding to \fBexplicit\fR: .PP .Vb 1 \& openssl ec \-in key.pem \-param_enc explicit \-out keyout.pem .Ve .PP To change the point conversion form to \fBcompressed\fR: .PP .Vb 1 \& openssl ec \-in key.pem \-conv_form compressed \-out keyout.pem .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBecparam\fR\|(1), \fBdsa\fR\|(1), \fBrsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2003\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!@@ ciphers.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CIPHERS 1" .TH CIPHERS 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-ciphers, ciphers \- SSL cipher display and cipher list tool .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBciphers\fR [\fB\-help\fR] [\fB\-s\fR] [\fB\-v\fR] [\fB\-V\fR] [\fB\-ssl3\fR] [\fB\-tls1\fR] [\fB\-tls1_1\fR] [\fB\-tls1_2\fR] [\fB\-tls1_3\fR] [\fB\-s\fR] [\fB\-psk\fR] [\fB\-srp\fR] [\fB\-stdname\fR] [\fB\-convert name\fR] [\fB\-ciphersuites val\fR] [\fBcipherlist\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBciphers\fR command converts textual OpenSSL cipher lists into ordered \&\s-1SSL\s0 cipher preference lists. It can be used as a test tool to determine the appropriate cipherlist. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print a usage message. .IP "\fB\-s\fR" 4 .IX Item "-s" Only list supported ciphers: those consistent with the security level, and minimum and maximum protocol version. This is closer to the actual cipher list an application will support. .Sp \&\s-1PSK\s0 and \s-1SRP\s0 ciphers are not enabled by default: they require \fB\-psk\fR or \fB\-srp\fR to enable them. .Sp It also does not change the default list of supported signature algorithms. .Sp On a server the list of supported ciphers might also exclude other ciphers depending on the configured certificates and presence of \s-1DH\s0 parameters. .Sp If this option is not used then all ciphers that match the cipherlist will be listed. .IP "\fB\-psk\fR" 4 .IX Item "-psk" When combined with \fB\-s\fR includes cipher suites which require \s-1PSK.\s0 .IP "\fB\-srp\fR" 4 .IX Item "-srp" When combined with \fB\-s\fR includes cipher suites which require \s-1SRP.\s0 .IP "\fB\-v\fR" 4 .IX Item "-v" Verbose output: For each cipher suite, list details as provided by \&\fBSSL_CIPHER_description\fR\|(3). .IP "\fB\-V\fR" 4 .IX Item "-V" Like \fB\-v\fR, but include the official cipher suite values in hex. .IP "\fB\-tls1_3\fR, \fB\-tls1_2\fR, \fB\-tls1_1\fR, \fB\-tls1\fR, \fB\-ssl3\fR" 4 .IX Item "-tls1_3, -tls1_2, -tls1_1, -tls1, -ssl3" In combination with the \fB\-s\fR option, list the ciphers which could be used if the specified protocol were negotiated. Note that not all protocols and flags may be available, depending on how OpenSSL was built. .IP "\fB\-stdname\fR" 4 .IX Item "-stdname" Precede each cipher suite by its standard name. .IP "\fB\-convert name\fR" 4 .IX Item "-convert name" Convert a standard cipher \fBname\fR to its OpenSSL name. .IP "\fB\-ciphersuites val\fR" 4 .IX Item "-ciphersuites val" Sets the list of TLSv1.3 ciphersuites. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. The format for this list is a simple colon (\*(L":\*(R") separated list of TLSv1.3 ciphersuite names. By default this value is: .Sp .Vb 1 \& TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 .Ve .IP "\fBcipherlist\fR" 4 .IX Item "cipherlist" A cipher list of TLSv1.2 and below ciphersuites to convert to a cipher preference list. This list will be combined with any TLSv1.3 ciphersuites that have been configured. If it is not included then the default cipher list will be used. The format is described below. .SH "CIPHER LIST FORMAT" .IX Header "CIPHER LIST FORMAT" The cipher list consists of one or more \fIcipher strings\fR separated by colons. Commas or spaces are also acceptable separators but colons are normally used. .PP The actual cipher string can take several different forms. .PP It can consist of a single cipher suite such as \fB\s-1RC4\-SHA\s0\fR. .PP It can represent a list of cipher suites containing a certain algorithm, or cipher suites of a certain type. For example \fB\s-1SHA1\s0\fR represents all ciphers suites using the digest algorithm \s-1SHA1\s0 and \fBSSLv3\fR represents all \s-1SSL\s0 v3 algorithms. .PP Lists of cipher suites can be combined in a single cipher string using the \&\fB+\fR character. This is used as a logical \fBand\fR operation. For example \&\fB\s-1SHA1+DES\s0\fR represents all cipher suites containing the \s-1SHA1\s0 \fBand\fR the \s-1DES\s0 algorithms. .PP Each cipher string can be optionally preceded by the characters \fB!\fR, \&\fB\-\fR or \fB+\fR. .PP If \fB!\fR is used then the ciphers are permanently deleted from the list. The ciphers deleted can never reappear in the list even if they are explicitly stated. .PP If \fB\-\fR is used then the ciphers are deleted from the list, but some or all of the ciphers can be added again by later options. .PP If \fB+\fR is used then the ciphers are moved to the end of the list. This option doesn't add any new ciphers it just moves matching existing ones. .PP If none of these characters is present then the string is just interpreted as a list of ciphers to be appended to the current preference list. If the list includes any ciphers already present they will be ignored: that is they will not moved to the end of the list. .PP The cipher string \fB\f(CB@STRENGTH\fB\fR can be used at any point to sort the current cipher list in order of encryption algorithm key length. .PP The cipher string \fB\f(CB@SECLEVEL\fB=n\fR can be used at any point to set the security level to \fBn\fR, which should be a number between zero and five, inclusive. See SSL_CTX_set_security_level for a description of what each level means. .PP The cipher list can be prefixed with the \fB\s-1DEFAULT\s0\fR keyword, which enables the default cipher list as defined below. Unlike cipher strings, this prefix may not be combined with other strings using \fB+\fR character. For example, \fB\s-1DEFAULT+DES\s0\fR is not valid. .PP The content of the default list is determined at compile time and normally corresponds to \fB\s-1ALL:\s0!COMPLEMENTOFDEFAULT:!eNULL\fR. .SH "CIPHER STRINGS" .IX Header "CIPHER STRINGS" The following is a list of all permitted cipher strings and their meanings. .IP "\fB\s-1COMPLEMENTOFDEFAULT\s0\fR" 4 .IX Item "COMPLEMENTOFDEFAULT" The ciphers included in \fB\s-1ALL\s0\fR, but not enabled by default. Currently this includes all \s-1RC4\s0 and anonymous ciphers. Note that this rule does not cover \fBeNULL\fR, which is not included by \fB\s-1ALL\s0\fR (use \fB\s-1COMPLEMENTOFALL\s0\fR if necessary). Note that \s-1RC4\s0 based cipher suites are not built into OpenSSL by default (see the enable-weak-ssl-ciphers option to Configure). .IP "\fB\s-1ALL\s0\fR" 4 .IX Item "ALL" All cipher suites except the \fBeNULL\fR ciphers (which must be explicitly enabled if needed). As of OpenSSL 1.0.0, the \fB\s-1ALL\s0\fR cipher suites are sensibly ordered by default. .IP "\fB\s-1COMPLEMENTOFALL\s0\fR" 4 .IX Item "COMPLEMENTOFALL" The cipher suites not enabled by \fB\s-1ALL\s0\fR, currently \fBeNULL\fR. .IP "\fB\s-1HIGH\s0\fR" 4 .IX Item "HIGH" \&\*(L"High\*(R" encryption cipher suites. This currently means those with key lengths larger than 128 bits, and some cipher suites with 128\-bit keys. .IP "\fB\s-1MEDIUM\s0\fR" 4 .IX Item "MEDIUM" \&\*(L"Medium\*(R" encryption cipher suites, currently some of those using 128 bit encryption. .IP "\fB\s-1LOW\s0\fR" 4 .IX Item "LOW" \&\*(L"Low\*(R" encryption cipher suites, currently those using 64 or 56 bit encryption algorithms but excluding export cipher suites. All these cipher suites have been removed as of OpenSSL 1.1.0. .IP "\fBeNULL\fR, \fB\s-1NULL\s0\fR" 4 .IX Item "eNULL, NULL" The \*(L"\s-1NULL\*(R"\s0 ciphers that is those offering no encryption. Because these offer no encryption at all and are a security risk they are not enabled via either the \&\fB\s-1DEFAULT\s0\fR or \fB\s-1ALL\s0\fR cipher strings. Be careful when building cipherlists out of lower-level primitives such as \&\fBkRSA\fR or \fBaECDSA\fR as these do overlap with the \fBeNULL\fR ciphers. When in doubt, include \fB!eNULL\fR in your cipherlist. .IP "\fBaNULL\fR" 4 .IX Item "aNULL" The cipher suites offering no authentication. This is currently the anonymous \&\s-1DH\s0 algorithms and anonymous \s-1ECDH\s0 algorithms. These cipher suites are vulnerable to \*(L"man in the middle\*(R" attacks and so their use is discouraged. These are excluded from the \fB\s-1DEFAULT\s0\fR ciphers, but included in the \fB\s-1ALL\s0\fR ciphers. Be careful when building cipherlists out of lower-level primitives such as \&\fBkDHE\fR or \fB\s-1AES\s0\fR as these do overlap with the \fBaNULL\fR ciphers. When in doubt, include \fB!aNULL\fR in your cipherlist. .IP "\fBkRSA\fR, \fBaRSA\fR, \fB\s-1RSA\s0\fR" 4 .IX Item "kRSA, aRSA, RSA" Cipher suites using \s-1RSA\s0 key exchange or authentication. \fB\s-1RSA\s0\fR is an alias for \&\fBkRSA\fR. .IP "\fBkDHr\fR, \fBkDHd\fR, \fBkDH\fR" 4 .IX Item "kDHr, kDHd, kDH" Cipher suites using static \s-1DH\s0 key agreement and \s-1DH\s0 certificates signed by CAs with \s-1RSA\s0 and \s-1DSS\s0 keys or either respectively. All these cipher suites have been removed in OpenSSL 1.1.0. .IP "\fBkDHE\fR, \fBkEDH\fR, \fB\s-1DH\s0\fR" 4 .IX Item "kDHE, kEDH, DH" Cipher suites using ephemeral \s-1DH\s0 key agreement, including anonymous cipher suites. .IP "\fB\s-1DHE\s0\fR, \fB\s-1EDH\s0\fR" 4 .IX Item "DHE, EDH" Cipher suites using authenticated ephemeral \s-1DH\s0 key agreement. .IP "\fB\s-1ADH\s0\fR" 4 .IX Item "ADH" Anonymous \s-1DH\s0 cipher suites, note that this does not include anonymous Elliptic Curve \s-1DH\s0 (\s-1ECDH\s0) cipher suites. .IP "\fBkEECDH\fR, \fBkECDHE\fR, \fB\s-1ECDH\s0\fR" 4 .IX Item "kEECDH, kECDHE, ECDH" Cipher suites using ephemeral \s-1ECDH\s0 key agreement, including anonymous cipher suites. .IP "\fB\s-1ECDHE\s0\fR, \fB\s-1EECDH\s0\fR" 4 .IX Item "ECDHE, EECDH" Cipher suites using authenticated ephemeral \s-1ECDH\s0 key agreement. .IP "\fB\s-1AECDH\s0\fR" 4 .IX Item "AECDH" Anonymous Elliptic Curve Diffie-Hellman cipher suites. .IP "\fBaDSS\fR, \fB\s-1DSS\s0\fR" 4 .IX Item "aDSS, DSS" Cipher suites using \s-1DSS\s0 authentication, i.e. the certificates carry \s-1DSS\s0 keys. .IP "\fBaDH\fR" 4 .IX Item "aDH" Cipher suites effectively using \s-1DH\s0 authentication, i.e. the certificates carry \&\s-1DH\s0 keys. All these cipher suites have been removed in OpenSSL 1.1.0. .IP "\fBaECDSA\fR, \fB\s-1ECDSA\s0\fR" 4 .IX Item "aECDSA, ECDSA" Cipher suites using \s-1ECDSA\s0 authentication, i.e. the certificates carry \s-1ECDSA\s0 keys. .IP "\fBTLSv1.2\fR, \fBTLSv1.0\fR, \fBSSLv3\fR" 4 .IX Item "TLSv1.2, TLSv1.0, SSLv3" Lists cipher suites which are only supported in at least \s-1TLS\s0 v1.2, \s-1TLS\s0 v1.0 or \&\s-1SSL\s0 v3.0 respectively. Note: there are no cipher suites specific to \s-1TLS\s0 v1.1. Since this is only the minimum version, if, for example, TLSv1.0 is negotiated then both TLSv1.0 and SSLv3.0 cipher suites are available. .Sp Note: these cipher strings \fBdo not\fR change the negotiated version of \s-1SSL\s0 or \&\s-1TLS,\s0 they only affect the list of available cipher suites. .IP "\fB\s-1AES128\s0\fR, \fB\s-1AES256\s0\fR, \fB\s-1AES\s0\fR" 4 .IX Item "AES128, AES256, AES" cipher suites using 128 bit \s-1AES, 256\s0 bit \s-1AES\s0 or either 128 or 256 bit \s-1AES.\s0 .IP "\fB\s-1AESGCM\s0\fR" 4 .IX Item "AESGCM" \&\s-1AES\s0 in Galois Counter Mode (\s-1GCM\s0): these cipher suites are only supported in \s-1TLS\s0 v1.2. .IP "\fB\s-1AESCCM\s0\fR, \fB\s-1AESCCM8\s0\fR" 4 .IX Item "AESCCM, AESCCM8" \&\s-1AES\s0 in Cipher Block Chaining \- Message Authentication Mode (\s-1CCM\s0): these cipher suites are only supported in \s-1TLS\s0 v1.2. \fB\s-1AESCCM\s0\fR references \s-1CCM\s0 cipher suites using both 16 and 8 octet Integrity Check Value (\s-1ICV\s0) while \fB\s-1AESCCM8\s0\fR only references 8 octet \s-1ICV.\s0 .IP "\fB\s-1ARIA128\s0\fR, \fB\s-1ARIA256\s0\fR, \fB\s-1ARIA\s0\fR" 4 .IX Item "ARIA128, ARIA256, ARIA" Cipher suites using 128 bit \s-1ARIA, 256\s0 bit \s-1ARIA\s0 or either 128 or 256 bit \&\s-1ARIA.\s0 .IP "\fB\s-1CAMELLIA128\s0\fR, \fB\s-1CAMELLIA256\s0\fR, \fB\s-1CAMELLIA\s0\fR" 4 .IX Item "CAMELLIA128, CAMELLIA256, CAMELLIA" Cipher suites using 128 bit \s-1CAMELLIA, 256\s0 bit \s-1CAMELLIA\s0 or either 128 or 256 bit \&\s-1CAMELLIA.\s0 .IP "\fB\s-1CHACHA20\s0\fR" 4 .IX Item "CHACHA20" Cipher suites using ChaCha20. .IP "\fB3DES\fR" 4 .IX Item "3DES" Cipher suites using triple \s-1DES.\s0 .IP "\fB\s-1DES\s0\fR" 4 .IX Item "DES" Cipher suites using \s-1DES\s0 (not triple \s-1DES\s0). All these cipher suites have been removed in OpenSSL 1.1.0. .IP "\fB\s-1RC4\s0\fR" 4 .IX Item "RC4" Cipher suites using \s-1RC4.\s0 .IP "\fB\s-1RC2\s0\fR" 4 .IX Item "RC2" Cipher suites using \s-1RC2.\s0 .IP "\fB\s-1IDEA\s0\fR" 4 .IX Item "IDEA" Cipher suites using \s-1IDEA.\s0 .IP "\fB\s-1SEED\s0\fR" 4 .IX Item "SEED" Cipher suites using \s-1SEED.\s0 .IP "\fB\s-1MD5\s0\fR" 4 .IX Item "MD5" Cipher suites using \s-1MD5.\s0 .IP "\fB\s-1SHA1\s0\fR, \fB\s-1SHA\s0\fR" 4 .IX Item "SHA1, SHA" Cipher suites using \s-1SHA1.\s0 .IP "\fB\s-1SHA256\s0\fR, \fB\s-1SHA384\s0\fR" 4 .IX Item "SHA256, SHA384" Cipher suites using \s-1SHA256\s0 or \s-1SHA384.\s0 .IP "\fBaGOST\fR" 4 .IX Item "aGOST" Cipher suites using \s-1GOST R 34.10\s0 (either 2001 or 94) for authentication (needs an engine supporting \s-1GOST\s0 algorithms). .IP "\fBaGOST01\fR" 4 .IX Item "aGOST01" Cipher suites using \s-1GOST R 34.10\-2001\s0 authentication. .IP "\fBkGOST\fR" 4 .IX Item "kGOST" Cipher suites, using \s-1VKO 34.10\s0 key exchange, specified in the \s-1RFC 4357.\s0 .IP "\fB\s-1GOST94\s0\fR" 4 .IX Item "GOST94" Cipher suites, using \s-1HMAC\s0 based on \s-1GOST R 34.11\-94.\s0 .IP "\fB\s-1GOST89MAC\s0\fR" 4 .IX Item "GOST89MAC" Cipher suites using \s-1GOST 28147\-89 MAC\s0 \fBinstead of\fR \s-1HMAC.\s0 .IP "\fB\s-1PSK\s0\fR" 4 .IX Item "PSK" All cipher suites using pre-shared keys (\s-1PSK\s0). .IP "\fBkPSK\fR, \fBkECDHEPSK\fR, \fBkDHEPSK\fR, \fBkRSAPSK\fR" 4 .IX Item "kPSK, kECDHEPSK, kDHEPSK, kRSAPSK" Cipher suites using \s-1PSK\s0 key exchange, \s-1ECDHE_PSK, DHE_PSK\s0 or \s-1RSA_PSK.\s0 .IP "\fBaPSK\fR" 4 .IX Item "aPSK" Cipher suites using \s-1PSK\s0 authentication (currently all \s-1PSK\s0 modes apart from \&\s-1RSA_PSK\s0). .IP "\fB\s-1SUITEB128\s0\fR, \fB\s-1SUITEB128ONLY\s0\fR, \fB\s-1SUITEB192\s0\fR" 4 .IX Item "SUITEB128, SUITEB128ONLY, SUITEB192" Enables suite B mode of operation using 128 (permitting 192 bit mode by peer) 128 bit (not permitting 192 bit by peer) or 192 bit level of security respectively. If used these cipherstrings should appear first in the cipher list and anything after them is ignored. Setting Suite B mode has additional consequences required to comply with \&\s-1RFC6460.\s0 In particular the supported signature algorithms is reduced to support only \&\s-1ECDSA\s0 and \s-1SHA256\s0 or \s-1SHA384,\s0 only the elliptic curves P\-256 and P\-384 can be used and only the two suite B compliant cipher suites (\s-1ECDHE\-ECDSA\-AES128\-GCM\-SHA256\s0 and \s-1ECDHE\-ECDSA\-AES256\-GCM\-SHA384\s0) are permissible. .SH "CIPHER SUITE NAMES" .IX Header "CIPHER SUITE NAMES" The following lists give the \s-1SSL\s0 or \s-1TLS\s0 cipher suites names from the relevant specification and their OpenSSL equivalents. It should be noted, that several cipher suite names do not include the authentication used, e.g. \s-1DES\-CBC3\-SHA.\s0 In these cases, \s-1RSA\s0 authentication is used. .SS "\s-1SSL\s0 v3.0 cipher suites" .IX Subsection "SSL v3.0 cipher suites" .Vb 6 \& SSL_RSA_WITH_NULL_MD5 NULL\-MD5 \& SSL_RSA_WITH_NULL_SHA NULL\-SHA \& SSL_RSA_WITH_RC4_128_MD5 RC4\-MD5 \& SSL_RSA_WITH_RC4_128_SHA RC4\-SHA \& SSL_RSA_WITH_IDEA_CBC_SHA IDEA\-CBC\-SHA \& SSL_RSA_WITH_3DES_EDE_CBC_SHA DES\-CBC3\-SHA \& \& SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA DH\-DSS\-DES\-CBC3\-SHA \& SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA DH\-RSA\-DES\-CBC3\-SHA \& SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA DHE\-DSS\-DES\-CBC3\-SHA \& SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA DHE\-RSA\-DES\-CBC3\-SHA \& \& SSL_DH_anon_WITH_RC4_128_MD5 ADH\-RC4\-MD5 \& SSL_DH_anon_WITH_3DES_EDE_CBC_SHA ADH\-DES\-CBC3\-SHA \& \& SSL_FORTEZZA_KEA_WITH_NULL_SHA Not implemented. \& SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA Not implemented. \& SSL_FORTEZZA_KEA_WITH_RC4_128_SHA Not implemented. .Ve .SS "\s-1TLS\s0 v1.0 cipher suites" .IX Subsection "TLS v1.0 cipher suites" .Vb 6 \& TLS_RSA_WITH_NULL_MD5 NULL\-MD5 \& TLS_RSA_WITH_NULL_SHA NULL\-SHA \& TLS_RSA_WITH_RC4_128_MD5 RC4\-MD5 \& TLS_RSA_WITH_RC4_128_SHA RC4\-SHA \& TLS_RSA_WITH_IDEA_CBC_SHA IDEA\-CBC\-SHA \& TLS_RSA_WITH_3DES_EDE_CBC_SHA DES\-CBC3\-SHA \& \& TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented. \& TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented. \& TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA DHE\-DSS\-DES\-CBC3\-SHA \& TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA DHE\-RSA\-DES\-CBC3\-SHA \& \& TLS_DH_anon_WITH_RC4_128_MD5 ADH\-RC4\-MD5 \& TLS_DH_anon_WITH_3DES_EDE_CBC_SHA ADH\-DES\-CBC3\-SHA .Ve .SS "\s-1AES\s0 cipher suites from \s-1RFC3268,\s0 extending \s-1TLS\s0 v1.0" .IX Subsection "AES cipher suites from RFC3268, extending TLS v1.0" .Vb 2 \& TLS_RSA_WITH_AES_128_CBC_SHA AES128\-SHA \& TLS_RSA_WITH_AES_256_CBC_SHA AES256\-SHA \& \& TLS_DH_DSS_WITH_AES_128_CBC_SHA DH\-DSS\-AES128\-SHA \& TLS_DH_DSS_WITH_AES_256_CBC_SHA DH\-DSS\-AES256\-SHA \& TLS_DH_RSA_WITH_AES_128_CBC_SHA DH\-RSA\-AES128\-SHA \& TLS_DH_RSA_WITH_AES_256_CBC_SHA DH\-RSA\-AES256\-SHA \& \& TLS_DHE_DSS_WITH_AES_128_CBC_SHA DHE\-DSS\-AES128\-SHA \& TLS_DHE_DSS_WITH_AES_256_CBC_SHA DHE\-DSS\-AES256\-SHA \& TLS_DHE_RSA_WITH_AES_128_CBC_SHA DHE\-RSA\-AES128\-SHA \& TLS_DHE_RSA_WITH_AES_256_CBC_SHA DHE\-RSA\-AES256\-SHA \& \& TLS_DH_anon_WITH_AES_128_CBC_SHA ADH\-AES128\-SHA \& TLS_DH_anon_WITH_AES_256_CBC_SHA ADH\-AES256\-SHA .Ve .SS "Camellia cipher suites from \s-1RFC4132,\s0 extending \s-1TLS\s0 v1.0" .IX Subsection "Camellia cipher suites from RFC4132, extending TLS v1.0" .Vb 2 \& TLS_RSA_WITH_CAMELLIA_128_CBC_SHA CAMELLIA128\-SHA \& TLS_RSA_WITH_CAMELLIA_256_CBC_SHA CAMELLIA256\-SHA \& \& TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA DH\-DSS\-CAMELLIA128\-SHA \& TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA DH\-DSS\-CAMELLIA256\-SHA \& TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA DH\-RSA\-CAMELLIA128\-SHA \& TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA DH\-RSA\-CAMELLIA256\-SHA \& \& TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA DHE\-DSS\-CAMELLIA128\-SHA \& TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA DHE\-DSS\-CAMELLIA256\-SHA \& TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA DHE\-RSA\-CAMELLIA128\-SHA \& TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA DHE\-RSA\-CAMELLIA256\-SHA \& \& TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA ADH\-CAMELLIA128\-SHA \& TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA ADH\-CAMELLIA256\-SHA .Ve .SS "\s-1SEED\s0 cipher suites from \s-1RFC4162,\s0 extending \s-1TLS\s0 v1.0" .IX Subsection "SEED cipher suites from RFC4162, extending TLS v1.0" .Vb 1 \& TLS_RSA_WITH_SEED_CBC_SHA SEED\-SHA \& \& TLS_DH_DSS_WITH_SEED_CBC_SHA DH\-DSS\-SEED\-SHA \& TLS_DH_RSA_WITH_SEED_CBC_SHA DH\-RSA\-SEED\-SHA \& \& TLS_DHE_DSS_WITH_SEED_CBC_SHA DHE\-DSS\-SEED\-SHA \& TLS_DHE_RSA_WITH_SEED_CBC_SHA DHE\-RSA\-SEED\-SHA \& \& TLS_DH_anon_WITH_SEED_CBC_SHA ADH\-SEED\-SHA .Ve .SS "\s-1GOST\s0 cipher suites from draft-chudov-cryptopro-cptls, extending \s-1TLS\s0 v1.0" .IX Subsection "GOST cipher suites from draft-chudov-cryptopro-cptls, extending TLS v1.0" Note: these ciphers require an engine which including \s-1GOST\s0 cryptographic algorithms, such as the \fBccgost\fR engine, included in the OpenSSL distribution. .PP .Vb 4 \& TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94\-GOST89\-GOST89 \& TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001\-GOST89\-GOST89 \& TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94\-NULL\-GOST94 \& TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001\-NULL\-GOST94 .Ve .SS "Additional Export 1024 and other cipher suites" .IX Subsection "Additional Export 1024 and other cipher suites" Note: these ciphers can also be used in \s-1SSL\s0 v3. .PP .Vb 1 \& TLS_DHE_DSS_WITH_RC4_128_SHA DHE\-DSS\-RC4\-SHA .Ve .SS "Elliptic curve cipher suites." .IX Subsection "Elliptic curve cipher suites." .Vb 5 \& TLS_ECDHE_RSA_WITH_NULL_SHA ECDHE\-RSA\-NULL\-SHA \& TLS_ECDHE_RSA_WITH_RC4_128_SHA ECDHE\-RSA\-RC4\-SHA \& TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDHE\-RSA\-DES\-CBC3\-SHA \& TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDHE\-RSA\-AES128\-SHA \& TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDHE\-RSA\-AES256\-SHA \& \& TLS_ECDHE_ECDSA_WITH_NULL_SHA ECDHE\-ECDSA\-NULL\-SHA \& TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDHE\-ECDSA\-RC4\-SHA \& TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDHE\-ECDSA\-DES\-CBC3\-SHA \& TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDHE\-ECDSA\-AES128\-SHA \& TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDHE\-ECDSA\-AES256\-SHA \& \& TLS_ECDH_anon_WITH_NULL_SHA AECDH\-NULL\-SHA \& TLS_ECDH_anon_WITH_RC4_128_SHA AECDH\-RC4\-SHA \& TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA AECDH\-DES\-CBC3\-SHA \& TLS_ECDH_anon_WITH_AES_128_CBC_SHA AECDH\-AES128\-SHA \& TLS_ECDH_anon_WITH_AES_256_CBC_SHA AECDH\-AES256\-SHA .Ve .SS "\s-1TLS\s0 v1.2 cipher suites" .IX Subsection "TLS v1.2 cipher suites" .Vb 1 \& TLS_RSA_WITH_NULL_SHA256 NULL\-SHA256 \& \& TLS_RSA_WITH_AES_128_CBC_SHA256 AES128\-SHA256 \& TLS_RSA_WITH_AES_256_CBC_SHA256 AES256\-SHA256 \& TLS_RSA_WITH_AES_128_GCM_SHA256 AES128\-GCM\-SHA256 \& TLS_RSA_WITH_AES_256_GCM_SHA384 AES256\-GCM\-SHA384 \& \& TLS_DH_RSA_WITH_AES_128_CBC_SHA256 DH\-RSA\-AES128\-SHA256 \& TLS_DH_RSA_WITH_AES_256_CBC_SHA256 DH\-RSA\-AES256\-SHA256 \& TLS_DH_RSA_WITH_AES_128_GCM_SHA256 DH\-RSA\-AES128\-GCM\-SHA256 \& TLS_DH_RSA_WITH_AES_256_GCM_SHA384 DH\-RSA\-AES256\-GCM\-SHA384 \& \& TLS_DH_DSS_WITH_AES_128_CBC_SHA256 DH\-DSS\-AES128\-SHA256 \& TLS_DH_DSS_WITH_AES_256_CBC_SHA256 DH\-DSS\-AES256\-SHA256 \& TLS_DH_DSS_WITH_AES_128_GCM_SHA256 DH\-DSS\-AES128\-GCM\-SHA256 \& TLS_DH_DSS_WITH_AES_256_GCM_SHA384 DH\-DSS\-AES256\-GCM\-SHA384 \& \& TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 DHE\-RSA\-AES128\-SHA256 \& TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 DHE\-RSA\-AES256\-SHA256 \& TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE\-RSA\-AES128\-GCM\-SHA256 \& TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DHE\-RSA\-AES256\-GCM\-SHA384 \& \& TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 DHE\-DSS\-AES128\-SHA256 \& TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 DHE\-DSS\-AES256\-SHA256 \& TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 DHE\-DSS\-AES128\-GCM\-SHA256 \& TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 DHE\-DSS\-AES256\-GCM\-SHA384 \& \& TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 ECDHE\-RSA\-AES128\-SHA256 \& TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 ECDHE\-RSA\-AES256\-SHA384 \& TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE\-RSA\-AES128\-GCM\-SHA256 \& TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDHE\-RSA\-AES256\-GCM\-SHA384 \& \& TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 ECDHE\-ECDSA\-AES128\-SHA256 \& TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 ECDHE\-ECDSA\-AES256\-SHA384 \& TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ECDHE\-ECDSA\-AES128\-GCM\-SHA256 \& TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ECDHE\-ECDSA\-AES256\-GCM\-SHA384 \& \& TLS_DH_anon_WITH_AES_128_CBC_SHA256 ADH\-AES128\-SHA256 \& TLS_DH_anon_WITH_AES_256_CBC_SHA256 ADH\-AES256\-SHA256 \& TLS_DH_anon_WITH_AES_128_GCM_SHA256 ADH\-AES128\-GCM\-SHA256 \& TLS_DH_anon_WITH_AES_256_GCM_SHA384 ADH\-AES256\-GCM\-SHA384 \& \& RSA_WITH_AES_128_CCM AES128\-CCM \& RSA_WITH_AES_256_CCM AES256\-CCM \& DHE_RSA_WITH_AES_128_CCM DHE\-RSA\-AES128\-CCM \& DHE_RSA_WITH_AES_256_CCM DHE\-RSA\-AES256\-CCM \& RSA_WITH_AES_128_CCM_8 AES128\-CCM8 \& RSA_WITH_AES_256_CCM_8 AES256\-CCM8 \& DHE_RSA_WITH_AES_128_CCM_8 DHE\-RSA\-AES128\-CCM8 \& DHE_RSA_WITH_AES_256_CCM_8 DHE\-RSA\-AES256\-CCM8 \& ECDHE_ECDSA_WITH_AES_128_CCM ECDHE\-ECDSA\-AES128\-CCM \& ECDHE_ECDSA_WITH_AES_256_CCM ECDHE\-ECDSA\-AES256\-CCM \& ECDHE_ECDSA_WITH_AES_128_CCM_8 ECDHE\-ECDSA\-AES128\-CCM8 \& ECDHE_ECDSA_WITH_AES_256_CCM_8 ECDHE\-ECDSA\-AES256\-CCM8 .Ve .SS "\s-1ARIA\s0 cipher suites from \s-1RFC6209,\s0 extending \s-1TLS\s0 v1.2" .IX Subsection "ARIA cipher suites from RFC6209, extending TLS v1.2" Note: the \s-1CBC\s0 modes mentioned in this \s-1RFC\s0 are not supported. .PP .Vb 10 \& TLS_RSA_WITH_ARIA_128_GCM_SHA256 ARIA128\-GCM\-SHA256 \& TLS_RSA_WITH_ARIA_256_GCM_SHA384 ARIA256\-GCM\-SHA384 \& TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 DHE\-RSA\-ARIA128\-GCM\-SHA256 \& TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 DHE\-RSA\-ARIA256\-GCM\-SHA384 \& TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 DHE\-DSS\-ARIA128\-GCM\-SHA256 \& TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 DHE\-DSS\-ARIA256\-GCM\-SHA384 \& TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 ECDHE\-ECDSA\-ARIA128\-GCM\-SHA256 \& TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 ECDHE\-ECDSA\-ARIA256\-GCM\-SHA384 \& TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 ECDHE\-ARIA128\-GCM\-SHA256 \& TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 ECDHE\-ARIA256\-GCM\-SHA384 \& TLS_PSK_WITH_ARIA_128_GCM_SHA256 PSK\-ARIA128\-GCM\-SHA256 \& TLS_PSK_WITH_ARIA_256_GCM_SHA384 PSK\-ARIA256\-GCM\-SHA384 \& TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 DHE\-PSK\-ARIA128\-GCM\-SHA256 \& TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 DHE\-PSK\-ARIA256\-GCM\-SHA384 \& TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 RSA\-PSK\-ARIA128\-GCM\-SHA256 \& TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 RSA\-PSK\-ARIA256\-GCM\-SHA384 .Ve .SS "Camellia HMAC-Based cipher suites from \s-1RFC6367,\s0 extending \s-1TLS\s0 v1.2" .IX Subsection "Camellia HMAC-Based cipher suites from RFC6367, extending TLS v1.2" .Vb 4 \& TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE\-ECDSA\-CAMELLIA128\-SHA256 \& TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE\-ECDSA\-CAMELLIA256\-SHA384 \& TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE\-RSA\-CAMELLIA128\-SHA256 \& TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE\-RSA\-CAMELLIA256\-SHA384 .Ve .SS "Pre-shared keying (\s-1PSK\s0) cipher suites" .IX Subsection "Pre-shared keying (PSK) cipher suites" .Vb 3 \& PSK_WITH_NULL_SHA PSK\-NULL\-SHA \& DHE_PSK_WITH_NULL_SHA DHE\-PSK\-NULL\-SHA \& RSA_PSK_WITH_NULL_SHA RSA\-PSK\-NULL\-SHA \& \& PSK_WITH_RC4_128_SHA PSK\-RC4\-SHA \& PSK_WITH_3DES_EDE_CBC_SHA PSK\-3DES\-EDE\-CBC\-SHA \& PSK_WITH_AES_128_CBC_SHA PSK\-AES128\-CBC\-SHA \& PSK_WITH_AES_256_CBC_SHA PSK\-AES256\-CBC\-SHA \& \& DHE_PSK_WITH_RC4_128_SHA DHE\-PSK\-RC4\-SHA \& DHE_PSK_WITH_3DES_EDE_CBC_SHA DHE\-PSK\-3DES\-EDE\-CBC\-SHA \& DHE_PSK_WITH_AES_128_CBC_SHA DHE\-PSK\-AES128\-CBC\-SHA \& DHE_PSK_WITH_AES_256_CBC_SHA DHE\-PSK\-AES256\-CBC\-SHA \& \& RSA_PSK_WITH_RC4_128_SHA RSA\-PSK\-RC4\-SHA \& RSA_PSK_WITH_3DES_EDE_CBC_SHA RSA\-PSK\-3DES\-EDE\-CBC\-SHA \& RSA_PSK_WITH_AES_128_CBC_SHA RSA\-PSK\-AES128\-CBC\-SHA \& RSA_PSK_WITH_AES_256_CBC_SHA RSA\-PSK\-AES256\-CBC\-SHA \& \& PSK_WITH_AES_128_GCM_SHA256 PSK\-AES128\-GCM\-SHA256 \& PSK_WITH_AES_256_GCM_SHA384 PSK\-AES256\-GCM\-SHA384 \& DHE_PSK_WITH_AES_128_GCM_SHA256 DHE\-PSK\-AES128\-GCM\-SHA256 \& DHE_PSK_WITH_AES_256_GCM_SHA384 DHE\-PSK\-AES256\-GCM\-SHA384 \& RSA_PSK_WITH_AES_128_GCM_SHA256 RSA\-PSK\-AES128\-GCM\-SHA256 \& RSA_PSK_WITH_AES_256_GCM_SHA384 RSA\-PSK\-AES256\-GCM\-SHA384 \& \& PSK_WITH_AES_128_CBC_SHA256 PSK\-AES128\-CBC\-SHA256 \& PSK_WITH_AES_256_CBC_SHA384 PSK\-AES256\-CBC\-SHA384 \& PSK_WITH_NULL_SHA256 PSK\-NULL\-SHA256 \& PSK_WITH_NULL_SHA384 PSK\-NULL\-SHA384 \& DHE_PSK_WITH_AES_128_CBC_SHA256 DHE\-PSK\-AES128\-CBC\-SHA256 \& DHE_PSK_WITH_AES_256_CBC_SHA384 DHE\-PSK\-AES256\-CBC\-SHA384 \& DHE_PSK_WITH_NULL_SHA256 DHE\-PSK\-NULL\-SHA256 \& DHE_PSK_WITH_NULL_SHA384 DHE\-PSK\-NULL\-SHA384 \& RSA_PSK_WITH_AES_128_CBC_SHA256 RSA\-PSK\-AES128\-CBC\-SHA256 \& RSA_PSK_WITH_AES_256_CBC_SHA384 RSA\-PSK\-AES256\-CBC\-SHA384 \& RSA_PSK_WITH_NULL_SHA256 RSA\-PSK\-NULL\-SHA256 \& RSA_PSK_WITH_NULL_SHA384 RSA\-PSK\-NULL\-SHA384 \& PSK_WITH_AES_128_GCM_SHA256 PSK\-AES128\-GCM\-SHA256 \& PSK_WITH_AES_256_GCM_SHA384 PSK\-AES256\-GCM\-SHA384 \& \& ECDHE_PSK_WITH_RC4_128_SHA ECDHE\-PSK\-RC4\-SHA \& ECDHE_PSK_WITH_3DES_EDE_CBC_SHA ECDHE\-PSK\-3DES\-EDE\-CBC\-SHA \& ECDHE_PSK_WITH_AES_128_CBC_SHA ECDHE\-PSK\-AES128\-CBC\-SHA \& ECDHE_PSK_WITH_AES_256_CBC_SHA ECDHE\-PSK\-AES256\-CBC\-SHA \& ECDHE_PSK_WITH_AES_128_CBC_SHA256 ECDHE\-PSK\-AES128\-CBC\-SHA256 \& ECDHE_PSK_WITH_AES_256_CBC_SHA384 ECDHE\-PSK\-AES256\-CBC\-SHA384 \& ECDHE_PSK_WITH_NULL_SHA ECDHE\-PSK\-NULL\-SHA \& ECDHE_PSK_WITH_NULL_SHA256 ECDHE\-PSK\-NULL\-SHA256 \& ECDHE_PSK_WITH_NULL_SHA384 ECDHE\-PSK\-NULL\-SHA384 \& \& PSK_WITH_CAMELLIA_128_CBC_SHA256 PSK\-CAMELLIA128\-SHA256 \& PSK_WITH_CAMELLIA_256_CBC_SHA384 PSK\-CAMELLIA256\-SHA384 \& \& DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 DHE\-PSK\-CAMELLIA128\-SHA256 \& DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 DHE\-PSK\-CAMELLIA256\-SHA384 \& \& RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 RSA\-PSK\-CAMELLIA128\-SHA256 \& RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 RSA\-PSK\-CAMELLIA256\-SHA384 \& \& ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 ECDHE\-PSK\-CAMELLIA128\-SHA256 \& ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 ECDHE\-PSK\-CAMELLIA256\-SHA384 \& \& PSK_WITH_AES_128_CCM PSK\-AES128\-CCM \& PSK_WITH_AES_256_CCM PSK\-AES256\-CCM \& DHE_PSK_WITH_AES_128_CCM DHE\-PSK\-AES128\-CCM \& DHE_PSK_WITH_AES_256_CCM DHE\-PSK\-AES256\-CCM \& PSK_WITH_AES_128_CCM_8 PSK\-AES128\-CCM8 \& PSK_WITH_AES_256_CCM_8 PSK\-AES256\-CCM8 \& DHE_PSK_WITH_AES_128_CCM_8 DHE\-PSK\-AES128\-CCM8 \& DHE_PSK_WITH_AES_256_CCM_8 DHE\-PSK\-AES256\-CCM8 .Ve .SS "ChaCha20\-Poly1305 cipher suites, extending \s-1TLS\s0 v1.2" .IX Subsection "ChaCha20-Poly1305 cipher suites, extending TLS v1.2" .Vb 7 \& TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 ECDHE\-RSA\-CHACHA20\-POLY1305 \& TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 ECDHE\-ECDSA\-CHACHA20\-POLY1305 \& TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 DHE\-RSA\-CHACHA20\-POLY1305 \& TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 PSK\-CHACHA20\-POLY1305 \& TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 ECDHE\-PSK\-CHACHA20\-POLY1305 \& TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 DHE\-PSK\-CHACHA20\-POLY1305 \& TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 RSA\-PSK\-CHACHA20\-POLY1305 .Ve .SS "\s-1TLS\s0 v1.3 cipher suites" .IX Subsection "TLS v1.3 cipher suites" .Vb 5 \& TLS_AES_128_GCM_SHA256 TLS_AES_128_GCM_SHA256 \& TLS_AES_256_GCM_SHA384 TLS_AES_256_GCM_SHA384 \& TLS_CHACHA20_POLY1305_SHA256 TLS_CHACHA20_POLY1305_SHA256 \& TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_SHA256 \& TLS_AES_128_CCM_8_SHA256 TLS_AES_128_CCM_8_SHA256 .Ve .SS "Older names used by OpenSSL" .IX Subsection "Older names used by OpenSSL" The following names are accepted by older releases: .PP .Vb 2 \& SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH\-RSA\-DES\-CBC3\-SHA (DHE\-RSA\-DES\-CBC3\-SHA) \& SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH\-DSS\-DES\-CBC3\-SHA (DHE\-DSS\-DES\-CBC3\-SHA) .Ve .SH "NOTES" .IX Header "NOTES" Some compiled versions of OpenSSL may not include all the ciphers listed here because some ciphers were excluded at compile time. .SH "EXAMPLES" .IX Header "EXAMPLES" Verbose listing of all OpenSSL ciphers including \s-1NULL\s0 ciphers: .PP .Vb 1 \& openssl ciphers \-v \*(AqALL:eNULL\*(Aq .Ve .PP Include all ciphers except \s-1NULL\s0 and anonymous \s-1DH\s0 then sort by strength: .PP .Vb 1 \& openssl ciphers \-v \*(AqALL:!ADH:@STRENGTH\*(Aq .Ve .PP Include all ciphers except ones with no encryption (eNULL) or no authentication (aNULL): .PP .Vb 1 \& openssl ciphers \-v \*(AqALL:!aNULL\*(Aq .Ve .PP Include only 3DES ciphers and then place \s-1RSA\s0 ciphers last: .PP .Vb 1 \& openssl ciphers \-v \*(Aq3DES:+RSA\*(Aq .Ve .PP Include all \s-1RC4\s0 ciphers but leave out those without authentication: .PP .Vb 1 \& openssl ciphers \-v \*(AqRC4:!COMPLEMENTOFDEFAULT\*(Aq .Ve .PP Include all ciphers with \s-1RSA\s0 authentication but leave out ciphers without encryption. .PP .Vb 1 \& openssl ciphers \-v \*(AqRSA:!COMPLEMENTOFALL\*(Aq .Ve .PP Set security level to 2 and display all ciphers consistent with level 2: .PP .Vb 1 \& openssl ciphers \-s \-v \*(AqALL:@SECLEVEL=2\*(Aq .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBs_client\fR\|(1), \fBs_server\fR\|(1), \fBssl\fR\|(7) .SH "HISTORY" .IX Header "HISTORY" The \fB\-V\fR option for the \fBciphers\fR command was added in OpenSSL 1.0.0. .PP The \fB\-stdname\fR is only available if OpenSSL is built with tracing enabled (\fBenable-ssl-trace\fR argument to Configure) before OpenSSL 1.1.1. .PP The \fB\-convert\fR option was added in OpenSSL 1.1.1. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!**rsautl.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "RSAUTL 1" .TH RSAUTL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-rsautl, rsautl \- RSA utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBrsautl\fR [\fB\-help\fR] [\fB\-in file\fR] [\fB\-out file\fR] [\fB\-inkey file\fR] [\fB\-keyform PEM|DER|ENGINE\fR] [\fB\-pubin\fR] [\fB\-certin\fR] [\fB\-sign\fR] [\fB\-verify\fR] [\fB\-encrypt\fR] [\fB\-decrypt\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-pkcs\fR] [\fB\-ssl\fR] [\fB\-raw\fR] [\fB\-hexdump\fR] [\fB\-asn1parse\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBrsautl\fR command can be used to sign, verify, encrypt and decrypt data using the \s-1RSA\s0 algorithm. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-in filename\fR" 4 .IX Item "-in filename" This specifies the input filename to read data from or standard input if this option is not specified. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" Specifies the output filename to write to or standard output by default. .IP "\fB\-inkey file\fR" 4 .IX Item "-inkey file" The input key file, by default it should be an \s-1RSA\s0 private key. .IP "\fB\-keyform PEM|DER|ENGINE\fR" 4 .IX Item "-keyform PEM|DER|ENGINE" The key format \s-1PEM, DER\s0 or \s-1ENGINE.\s0 .IP "\fB\-pubin\fR" 4 .IX Item "-pubin" The input file is an \s-1RSA\s0 public key. .IP "\fB\-certin\fR" 4 .IX Item "-certin" The input is a certificate containing an \s-1RSA\s0 public key. .IP "\fB\-sign\fR" 4 .IX Item "-sign" Sign the input data and output the signed result. This requires an \s-1RSA\s0 private key. .IP "\fB\-verify\fR" 4 .IX Item "-verify" Verify the input data and output the recovered data. .IP "\fB\-encrypt\fR" 4 .IX Item "-encrypt" Encrypt the input data using an \s-1RSA\s0 public key. .IP "\fB\-decrypt\fR" 4 .IX Item "-decrypt" Decrypt the input data using an \s-1RSA\s0 private key. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-pkcs, \-oaep, \-ssl, \-raw\fR" 4 .IX Item "-pkcs, -oaep, -ssl, -raw" The padding to use: PKCS#1 v1.5 (the default), PKCS#1 \s-1OAEP,\s0 special padding used in \s-1SSL\s0 v2 backwards compatible handshakes, or no padding, respectively. For signatures, only \fB\-pkcs\fR and \fB\-raw\fR can be used. .IP "\fB\-hexdump\fR" 4 .IX Item "-hexdump" Hex dump the output data. .IP "\fB\-asn1parse\fR" 4 .IX Item "-asn1parse" Parse the \s-1ASN.1\s0 output data, this is useful when combined with the \&\fB\-verify\fR option. .SH "NOTES" .IX Header "NOTES" \&\fBrsautl\fR because it uses the \s-1RSA\s0 algorithm directly can only be used to sign or verify small pieces of data. .SH "EXAMPLES" .IX Header "EXAMPLES" Sign some data using a private key: .PP .Vb 1 \& openssl rsautl \-sign \-in file \-inkey key.pem \-out sig .Ve .PP Recover the signed data .PP .Vb 1 \& openssl rsautl \-verify \-in sig \-inkey key.pem .Ve .PP Examine the raw signed data: .PP .Vb 1 \& openssl rsautl \-verify \-in sig \-inkey key.pem \-raw \-hexdump \& \& 0000 \- 00 01 ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0010 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0020 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0030 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0040 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0050 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0060 \- ff ff ff ff ff ff ff ff\-ff ff ff ff ff ff ff ff ................ \& 0070 \- ff ff ff ff 00 68 65 6c\-6c 6f 20 77 6f 72 6c 64 .....hello world .Ve .PP The PKCS#1 block formatting is evident from this. If this was done using encrypt and decrypt the block would have been of type 2 (the second byte) and random padding data visible instead of the 0xff bytes. .PP It is possible to analyse the signature of certificates using this utility in conjunction with \fBasn1parse\fR. Consider the self signed example in certs/pca\-cert.pem . Running \fBasn1parse\fR as follows yields: .PP .Vb 1 \& openssl asn1parse \-in pca\-cert.pem \& \& 0:d=0 hl=4 l= 742 cons: SEQUENCE \& 4:d=1 hl=4 l= 591 cons: SEQUENCE \& 8:d=2 hl=2 l= 3 cons: cont [ 0 ] \& 10:d=3 hl=2 l= 1 prim: INTEGER :02 \& 13:d=2 hl=2 l= 1 prim: INTEGER :00 \& 16:d=2 hl=2 l= 13 cons: SEQUENCE \& 18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption \& 29:d=3 hl=2 l= 0 prim: NULL \& 31:d=2 hl=2 l= 92 cons: SEQUENCE \& 33:d=3 hl=2 l= 11 cons: SET \& 35:d=4 hl=2 l= 9 cons: SEQUENCE \& 37:d=5 hl=2 l= 3 prim: OBJECT :countryName \& 42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU \& .... \& 599:d=1 hl=2 l= 13 cons: SEQUENCE \& 601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption \& 612:d=2 hl=2 l= 0 prim: NULL \& 614:d=1 hl=3 l= 129 prim: BIT STRING .Ve .PP The final \s-1BIT STRING\s0 contains the actual signature. It can be extracted with: .PP .Vb 1 \& openssl asn1parse \-in pca\-cert.pem \-out sig \-noout \-strparse 614 .Ve .PP The certificate public key can be extracted with: .PP .Vb 1 \& openssl x509 \-in test/testx509.pem \-pubkey \-noout >pubkey.pem .Ve .PP The signature can be analysed with: .PP .Vb 1 \& openssl rsautl \-in sig \-verify \-asn1parse \-inkey pubkey.pem \-pubin \& \& 0:d=0 hl=2 l= 32 cons: SEQUENCE \& 2:d=1 hl=2 l= 12 cons: SEQUENCE \& 4:d=2 hl=2 l= 8 prim: OBJECT :md5 \& 14:d=2 hl=2 l= 0 prim: NULL \& 16:d=1 hl=2 l= 16 prim: OCTET STRING \& 0000 \- f3 46 9e aa 1a 4a 73 c9\-37 ea 93 00 48 25 08 b5 .F...Js.7...H%.. .Ve .PP This is the parsed version of an \s-1ASN1\s0 DigestInfo structure. It can be seen that the digest used was md5. The actual part of the certificate that was signed can be extracted with: .PP .Vb 1 \& openssl asn1parse \-in pca\-cert.pem \-out tbs \-noout \-strparse 4 .Ve .PP and its digest computed with: .PP .Vb 2 \& openssl md5 \-c tbs \& MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5 .Ve .PP which it can be seen agrees with the recovered value above. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBdgst\fR\|(1), \fBrsa\fR\|(1), \fBgenrsa\fR\|(1) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!' s_client.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "S_CLIENT 1" .TH S_CLIENT 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-s_client, s_client \- SSL/TLS client program .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBs_client\fR [\fB\-help\fR] [\fB\-connect host:port\fR] [\fB\-bind host:port\fR] [\fB\-proxy host:port\fR] [\fB\-unix path\fR] [\fB\-4\fR] [\fB\-6\fR] [\fB\-servername name\fR] [\fB\-noservername\fR] [\fB\-verify depth\fR] [\fB\-verify_return_error\fR] [\fB\-cert filename\fR] [\fB\-certform DER|PEM\fR] [\fB\-key filename\fR] [\fB\-keyform DER|PEM\fR] [\fB\-cert_chain filename\fR] [\fB\-build_chain\fR] [\fB\-xkey\fR] [\fB\-xcert\fR] [\fB\-xchain\fR] [\fB\-xchain_build\fR] [\fB\-xcertform PEM|DER\fR] [\fB\-xkeyform PEM|DER\fR] [\fB\-pass arg\fR] [\fB\-CApath directory\fR] [\fB\-CAfile filename\fR] [\fB\-chainCApath directory\fR] [\fB\-chainCAfile filename\fR] [\fB\-no\-CAfile\fR] [\fB\-no\-CApath\fR] [\fB\-requestCAfile filename\fR] [\fB\-dane_tlsa_domain domain\fR] [\fB\-dane_tlsa_rrdata rrdata\fR] [\fB\-dane_ee_no_namechecks\fR] [\fB\-attime timestamp\fR] [\fB\-check_ss_sig\fR] [\fB\-crl_check\fR] [\fB\-crl_check_all\fR] [\fB\-explicit_policy\fR] [\fB\-extended_crl\fR] [\fB\-ignore_critical\fR] [\fB\-inhibit_any\fR] [\fB\-inhibit_map\fR] [\fB\-no_check_time\fR] [\fB\-partial_chain\fR] [\fB\-policy arg\fR] [\fB\-policy_check\fR] [\fB\-policy_print\fR] [\fB\-purpose purpose\fR] [\fB\-suiteB_128\fR] [\fB\-suiteB_128_only\fR] [\fB\-suiteB_192\fR] [\fB\-trusted_first\fR] [\fB\-no_alt_chains\fR] [\fB\-use_deltas\fR] [\fB\-auth_level num\fR] [\fB\-nameopt option\fR] [\fB\-verify_depth num\fR] [\fB\-verify_email email\fR] [\fB\-verify_hostname hostname\fR] [\fB\-verify_ip ip\fR] [\fB\-verify_name name\fR] [\fB\-build_chain\fR] [\fB\-x509_strict\fR] [\fB\-reconnect\fR] [\fB\-showcerts\fR] [\fB\-debug\fR] [\fB\-msg\fR] [\fB\-nbio_test\fR] [\fB\-state\fR] [\fB\-nbio\fR] [\fB\-crlf\fR] [\fB\-ign_eof\fR] [\fB\-no_ign_eof\fR] [\fB\-psk_identity identity\fR] [\fB\-psk key\fR] [\fB\-psk_session file\fR] [\fB\-quiet\fR] [\fB\-ssl3\fR] [\fB\-tls1\fR] [\fB\-tls1_1\fR] [\fB\-tls1_2\fR] [\fB\-tls1_3\fR] [\fB\-no_ssl3\fR] [\fB\-no_tls1\fR] [\fB\-no_tls1_1\fR] [\fB\-no_tls1_2\fR] [\fB\-no_tls1_3\fR] [\fB\-dtls\fR] [\fB\-dtls1\fR] [\fB\-dtls1_2\fR] [\fB\-sctp\fR] [\fB\-sctp_label_bug\fR] [\fB\-fallback_scsv\fR] [\fB\-async\fR] [\fB\-max_send_frag\fR] [\fB\-split_send_frag\fR] [\fB\-max_pipelines\fR] [\fB\-read_buf\fR] [\fB\-bugs\fR] [\fB\-comp\fR] [\fB\-no_comp\fR] [\fB\-allow_no_dhe_kex\fR] [\fB\-sigalgs sigalglist\fR] [\fB\-curves curvelist\fR] [\fB\-cipher cipherlist\fR] [\fB\-ciphersuites val\fR] [\fB\-serverpref\fR] [\fB\-starttls protocol\fR] [\fB\-xmpphost hostname\fR] [\fB\-name hostname\fR] [\fB\-engine id\fR] [\fB\-tlsextdebug\fR] [\fB\-no_ticket\fR] [\fB\-sess_out filename\fR] [\fB\-sess_in filename\fR] [\fB\-rand file...\fR] [\fB\-writerand file\fR] [\fB\-serverinfo types\fR] [\fB\-status\fR] [\fB\-alpn protocols\fR] [\fB\-nextprotoneg protocols\fR] [\fB\-ct\fR] [\fB\-noct\fR] [\fB\-ctlogfile\fR] [\fB\-keylogfile file\fR] [\fB\-early_data file\fR] [\fB\-enable_pha\fR] [\fBtarget\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBs_client\fR command implements a generic \s-1SSL/TLS\s0 client which connects to a remote host using \s-1SSL/TLS.\s0 It is a \fIvery\fR useful diagnostic tool for \&\s-1SSL\s0 servers. .SH "OPTIONS" .IX Header "OPTIONS" In addition to the options below the \fBs_client\fR utility also supports the common and client only options documented in the \*(L"Supported Command Line Commands\*(R" section of the \fBSSL_CONF_cmd\fR\|(3) manual page. .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-connect host:port\fR" 4 .IX Item "-connect host:port" This specifies the host and optional port to connect to. It is possible to select the host and port using the optional target positional argument instead. If neither this nor the target positional argument are specified then an attempt is made to connect to the local host on port 4433. .IP "\fB\-bind host:port\fR]" 4 .IX Item "-bind host:port]" This specifies the host address and or port to bind as the source for the connection. For Unix-domain sockets the port is ignored and the host is used as the source socket address. .IP "\fB\-proxy host:port\fR" 4 .IX Item "-proxy host:port" When used with the \fB\-connect\fR flag, the program uses the host and port specified with this flag and issues an \s-1HTTP CONNECT\s0 command to connect to the desired server. .IP "\fB\-unix path\fR" 4 .IX Item "-unix path" Connect over the specified Unix-domain socket. .IP "\fB\-4\fR" 4 .IX Item "-4" Use IPv4 only. .IP "\fB\-6\fR" 4 .IX Item "-6" Use IPv6 only. .IP "\fB\-servername name\fR" 4 .IX Item "-servername name" Set the \s-1TLS SNI\s0 (Server Name Indication) extension in the ClientHello message to the given value. If \fB\-servername\fR is not provided, the \s-1TLS SNI\s0 extension will be populated with the name given to \fB\-connect\fR if it follows a \s-1DNS\s0 name format. If \fB\-connect\fR is not provided either, the \s-1SNI\s0 is set to \*(L"localhost\*(R". This is the default since OpenSSL 1.1.1. .Sp Even though \s-1SNI\s0 should normally be a \s-1DNS\s0 name and not an \s-1IP\s0 address, if \&\fB\-servername\fR is provided then that name will be sent, regardless of whether it is a \s-1DNS\s0 name or not. .Sp This option cannot be used in conjunction with \fB\-noservername\fR. .IP "\fB\-noservername\fR" 4 .IX Item "-noservername" Suppresses sending of the \s-1SNI\s0 (Server Name Indication) extension in the ClientHello message. Cannot be used in conjunction with the \fB\-servername\fR or <\-dane_tlsa_domain> options. .IP "\fB\-cert certname\fR" 4 .IX Item "-cert certname" The certificate to use, if one is requested by the server. The default is not to use a certificate. .IP "\fB\-certform format\fR" 4 .IX Item "-certform format" The certificate format to use: \s-1DER\s0 or \s-1PEM. PEM\s0 is the default. .IP "\fB\-key keyfile\fR" 4 .IX Item "-key keyfile" The private key to use. If not specified then the certificate file will be used. .IP "\fB\-keyform format\fR" 4 .IX Item "-keyform format" The private format to use: \s-1DER\s0 or \s-1PEM. PEM\s0 is the default. .IP "\fB\-cert_chain\fR" 4 .IX Item "-cert_chain" A file containing trusted certificates to use when attempting to build the client/server certificate chain related to the certificate specified via the \&\fB\-cert\fR option. .IP "\fB\-build_chain\fR" 4 .IX Item "-build_chain" Specify whether the application should build the certificate chain to be provided to the server. .IP "\fB\-xkey infile\fR, \fB\-xcert infile\fR, \fB\-xchain\fR" 4 .IX Item "-xkey infile, -xcert infile, -xchain" Specify an extra certificate, private key and certificate chain. These behave in the same manner as the \fB\-cert\fR, \fB\-key\fR and \fB\-cert_chain\fR options. When specified, the callback returning the first valid chain will be in use by the client. .IP "\fB\-xchain_build\fR" 4 .IX Item "-xchain_build" Specify whether the application should build the certificate chain to be provided to the server for the extra certificates provided via \fB\-xkey infile\fR, \&\fB\-xcert infile\fR, \fB\-xchain\fR options. .IP "\fB\-xcertform PEM|DER\fR, \fB\-xkeyform PEM|DER\fR" 4 .IX Item "-xcertform PEM|DER, -xkeyform PEM|DER" Extra certificate and private key format respectively. .IP "\fB\-pass arg\fR" 4 .IX Item "-pass arg" the private key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-verify depth\fR" 4 .IX Item "-verify depth" The verify depth to use. This specifies the maximum length of the server certificate chain and turns on server certificate verification. Currently the verify operation continues after errors so all the problems with a certificate chain can be seen. As a side effect the connection will never fail due to a server certificate verify failure. .IP "\fB\-verify_return_error\fR" 4 .IX Item "-verify_return_error" Return verification errors instead of continuing. This will typically abort the handshake with a fatal error. .IP "\fB\-nameopt option\fR" 4 .IX Item "-nameopt option" Option which determines how the subject or issuer names are displayed. The \&\fBoption\fR argument can be a single option or multiple options separated by commas. Alternatively the \fB\-nameopt\fR switch may be used more than once to set multiple options. See the \fBx509\fR\|(1) manual page for details. .IP "\fB\-CApath directory\fR" 4 .IX Item "-CApath directory" The directory to use for server certificate verification. This directory must be in \*(L"hash format\*(R", see \fBverify\fR\|(1) for more information. These are also used when building the client certificate chain. .IP "\fB\-CAfile file\fR" 4 .IX Item "-CAfile file" A file containing trusted certificates to use during server authentication and to use when attempting to build the client certificate chain. .IP "\fB\-chainCApath directory\fR" 4 .IX Item "-chainCApath directory" The directory to use for building the chain provided to the server. This directory must be in \*(L"hash format\*(R", see \fBverify\fR\|(1) for more information. .IP "\fB\-chainCAfile file\fR" 4 .IX Item "-chainCAfile file" A file containing trusted certificates to use when attempting to build the client certificate chain. .IP "\fB\-no\-CAfile\fR" 4 .IX Item "-no-CAfile" Do not load the trusted \s-1CA\s0 certificates from the default file location .IP "\fB\-no\-CApath\fR" 4 .IX Item "-no-CApath" Do not load the trusted \s-1CA\s0 certificates from the default directory location .IP "\fB\-requestCAfile file\fR" 4 .IX Item "-requestCAfile file" A file containing a list of certificates whose subject names will be sent to the server in the \fBcertificate_authorities\fR extension. Only supported for \s-1TLS 1.3\s0 .IP "\fB\-dane_tlsa_domain domain\fR" 4 .IX Item "-dane_tlsa_domain domain" Enable \s-1RFC6698/RFC7671 DANE TLSA\s0 authentication and specify the \&\s-1TLSA\s0 base domain which becomes the default \s-1SNI\s0 hint and the primary reference identifier for hostname checks. This must be used in combination with at least one instance of the \fB\-dane_tlsa_rrdata\fR option below. .Sp When \s-1DANE\s0 authentication succeeds, the diagnostic output will include the lowest (closest to 0) depth at which a \s-1TLSA\s0 record authenticated a chain certificate. When that \s-1TLSA\s0 record is a \*(L"2 1 0\*(R" trust anchor public key that signed (rather than matched) the top-most certificate of the chain, the result is reported as \*(L"\s-1TA\s0 public key verified\*(R". Otherwise, either the \s-1TLSA\s0 record \*(L"matched \s-1TA\s0 certificate\*(R" at a positive depth or else \*(L"matched \s-1EE\s0 certificate\*(R" at depth 0. .IP "\fB\-dane_tlsa_rrdata rrdata\fR" 4 .IX Item "-dane_tlsa_rrdata rrdata" Use one or more times to specify the \s-1RRDATA\s0 fields of the \s-1DANE TLSA\s0 RRset associated with the target service. The \fBrrdata\fR value is specified in \*(L"presentation form\*(R", that is four whitespace separated fields that specify the usage, selector, matching type and associated data, with the last of these encoded in hexadecimal. Optional whitespace is ignored in the associated data field. For example: .Sp .Vb 12 \& $ openssl s_client \-brief \-starttls smtp \e \& \-connect smtp.example.com:25 \e \& \-dane_tlsa_domain smtp.example.com \e \& \-dane_tlsa_rrdata "2 1 1 \& B111DD8A1C2091A89BD4FD60C57F0716CCE50FEEFF8137CDBEE0326E 02CF362B" \e \& \-dane_tlsa_rrdata "2 1 1 \& 60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517 616E8A18" \& ... \& Verification: OK \& Verified peername: smtp.example.com \& DANE TLSA 2 1 1 ...ee12d2cc90180517616e8a18 matched TA certificate at depth 1 \& ... .Ve .IP "\fB\-dane_ee_no_namechecks\fR" 4 .IX Item "-dane_ee_no_namechecks" This disables server name checks when authenticating via \s-1\fBDANE\-EE\s0\fR\|(3) \s-1TLSA\s0 records. For some applications, primarily web browsers, it is not safe to disable name checks due to \*(L"unknown key share\*(R" attacks, in which a malicious server can convince a client that a connection to a victim server is instead a secure connection to the malicious server. The malicious server may then be able to violate cross-origin scripting restrictions. Thus, despite the text of \s-1RFC7671,\s0 name checks are by default enabled for \&\s-1\fBDANE\-EE\s0\fR\|(3) \s-1TLSA\s0 records, and can be disabled in applications where it is safe to do so. In particular, \s-1SMTP\s0 and \s-1XMPP\s0 clients should set this option as \s-1SRV\s0 and \s-1MX\s0 records already make it possible for a remote domain to redirect client connections to any server of its choice, and in any case \s-1SMTP\s0 and \s-1XMPP\s0 clients do not execute scripts downloaded from remote servers. .IP "\fB\-attime\fR, \fB\-check_ss_sig\fR, \fB\-crl_check\fR, \fB\-crl_check_all\fR, \fB\-explicit_policy\fR, \fB\-extended_crl\fR, \fB\-ignore_critical\fR, \fB\-inhibit_any\fR, \fB\-inhibit_map\fR, \fB\-no_alt_chains\fR, \fB\-no_check_time\fR, \fB\-partial_chain\fR, \fB\-policy\fR, \fB\-policy_check\fR, \fB\-policy_print\fR, \fB\-purpose\fR, \fB\-suiteB_128\fR, \fB\-suiteB_128_only\fR, \fB\-suiteB_192\fR, \fB\-trusted_first\fR, \fB\-use_deltas\fR, \fB\-auth_level\fR, \fB\-verify_depth\fR, \fB\-verify_email\fR, \fB\-verify_hostname\fR, \fB\-verify_ip\fR, \fB\-verify_name\fR, \fB\-x509_strict\fR" 4 .IX Item "-attime, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -no_check_time, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict" Set various certificate chain validation options. See the \&\fBverify\fR\|(1) manual page for details. .IP "\fB\-reconnect\fR" 4 .IX Item "-reconnect" Reconnects to the same server 5 times using the same session \s-1ID,\s0 this can be used as a test that session caching is working. .IP "\fB\-showcerts\fR" 4 .IX Item "-showcerts" Displays the server certificate list as sent by the server: it only consists of certificates the server has sent (in the order the server has sent them). It is \&\fBnot\fR a verified chain. .IP "\fB\-prexit\fR" 4 .IX Item "-prexit" Print session information when the program exits. This will always attempt to print out information even if the connection fails. Normally information will only be printed out once if the connection succeeds. This option is useful because the cipher in use may be renegotiated or the connection may fail because a client certificate is required or is requested only after an attempt is made to access a certain \s-1URL.\s0 Note: the output produced by this option is not always accurate because a connection might never have been established. .IP "\fB\-state\fR" 4 .IX Item "-state" Prints out the \s-1SSL\s0 session states. .IP "\fB\-debug\fR" 4 .IX Item "-debug" Print extensive debugging information including a hex dump of all traffic. .IP "\fB\-msg\fR" 4 .IX Item "-msg" Show all protocol messages with hex dump. .IP "\fB\-trace\fR" 4 .IX Item "-trace" Show verbose trace output of protocol messages. OpenSSL needs to be compiled with \fBenable-ssl-trace\fR for this option to work. .IP "\fB\-msgfile\fR" 4 .IX Item "-msgfile" File to send output of \fB\-msg\fR or \fB\-trace\fR to, default standard output. .IP "\fB\-nbio_test\fR" 4 .IX Item "-nbio_test" Tests nonblocking I/O .IP "\fB\-nbio\fR" 4 .IX Item "-nbio" Turns on nonblocking I/O .IP "\fB\-crlf\fR" 4 .IX Item "-crlf" This option translated a line feed from the terminal into \s-1CR+LF\s0 as required by some servers. .IP "\fB\-ign_eof\fR" 4 .IX Item "-ign_eof" Inhibit shutting down the connection when end of file is reached in the input. .IP "\fB\-quiet\fR" 4 .IX Item "-quiet" Inhibit printing of session and certificate information. This implicitly turns on \fB\-ign_eof\fR as well. .IP "\fB\-no_ign_eof\fR" 4 .IX Item "-no_ign_eof" Shut down the connection when end of file is reached in the input. Can be used to override the implicit \fB\-ign_eof\fR after \fB\-quiet\fR. .IP "\fB\-psk_identity identity\fR" 4 .IX Item "-psk_identity identity" Use the \s-1PSK\s0 identity \fBidentity\fR when using a \s-1PSK\s0 cipher suite. The default value is \*(L"Client_identity\*(R" (without the quotes). .IP "\fB\-psk key\fR" 4 .IX Item "-psk key" Use the \s-1PSK\s0 key \fBkey\fR when using a \s-1PSK\s0 cipher suite. The key is given as a hexadecimal number without leading 0x, for example \-psk 1a2b3c4d. This option must be provided in order to use a \s-1PSK\s0 cipher. .IP "\fB\-psk_session file\fR" 4 .IX Item "-psk_session file" Use the pem encoded \s-1SSL_SESSION\s0 data stored in \fBfile\fR as the basis of a \s-1PSK.\s0 Note that this will only work if TLSv1.3 is negotiated. .IP "\fB\-ssl3\fR, \fB\-tls1\fR, \fB\-tls1_1\fR, \fB\-tls1_2\fR, \fB\-tls1_3\fR, \fB\-no_ssl3\fR, \fB\-no_tls1\fR, \fB\-no_tls1_1\fR, \fB\-no_tls1_2\fR, \fB\-no_tls1_3\fR" 4 .IX Item "-ssl3, -tls1, -tls1_1, -tls1_2, -tls1_3, -no_ssl3, -no_tls1, -no_tls1_1, -no_tls1_2, -no_tls1_3" These options require or disable the use of the specified \s-1SSL\s0 or \s-1TLS\s0 protocols. By default \fBs_client\fR will negotiate the highest mutually supported protocol version. When a specific \s-1TLS\s0 version is required, only that version will be offered to and accepted from the server. Note that not all protocols and flags may be available, depending on how OpenSSL was built. .IP "\fB\-dtls\fR, \fB\-dtls1\fR, \fB\-dtls1_2\fR" 4 .IX Item "-dtls, -dtls1, -dtls1_2" These options make \fBs_client\fR use \s-1DTLS\s0 protocols instead of \s-1TLS.\s0 With \fB\-dtls\fR, \fBs_client\fR will negotiate any supported \s-1DTLS\s0 protocol version, whilst \fB\-dtls1\fR and \fB\-dtls1_2\fR will only support \s-1DTLS1.0\s0 and \s-1DTLS1.2\s0 respectively. .IP "\fB\-sctp\fR" 4 .IX Item "-sctp" Use \s-1SCTP\s0 for the transport protocol instead of \s-1UDP\s0 in \s-1DTLS.\s0 Must be used in conjunction with \fB\-dtls\fR, \fB\-dtls1\fR or \fB\-dtls1_2\fR. This option is only available where OpenSSL has support for \s-1SCTP\s0 enabled. .IP "\fB\-sctp_label_bug\fR" 4 .IX Item "-sctp_label_bug" Use the incorrect behaviour of older OpenSSL implementations when computing endpoint-pair shared secrets for \s-1DTLS/SCTP.\s0 This allows communication with older broken implementations but breaks interoperability with correct implementations. Must be used in conjunction with \fB\-sctp\fR. This option is only available where OpenSSL has support for \s-1SCTP\s0 enabled. .IP "\fB\-fallback_scsv\fR" 4 .IX Item "-fallback_scsv" Send \s-1TLS_FALLBACK_SCSV\s0 in the ClientHello. .IP "\fB\-async\fR" 4 .IX Item "-async" Switch on asynchronous mode. Cryptographic operations will be performed asynchronously. This will only have an effect if an asynchronous capable engine is also used via the \fB\-engine\fR option. For test purposes the dummy async engine (dasync) can be used (if available). .IP "\fB\-max_send_frag int\fR" 4 .IX Item "-max_send_frag int" The maximum size of data fragment to send. See \fBSSL_CTX_set_max_send_fragment\fR\|(3) for further information. .IP "\fB\-split_send_frag int\fR" 4 .IX Item "-split_send_frag int" The size used to split data for encrypt pipelines. If more data is written in one go than this value then it will be split into multiple pipelines, up to the maximum number of pipelines defined by max_pipelines. This only has an effect if a suitable cipher suite has been negotiated, an engine that supports pipelining has been loaded, and max_pipelines is greater than 1. See \&\fBSSL_CTX_set_split_send_fragment\fR\|(3) for further information. .IP "\fB\-max_pipelines int\fR" 4 .IX Item "-max_pipelines int" The maximum number of encrypt/decrypt pipelines to be used. This will only have an effect if an engine has been loaded that supports pipelining (e.g. the dasync engine) and a suitable cipher suite has been negotiated. The default value is 1. See \fBSSL_CTX_set_max_pipelines\fR\|(3) for further information. .IP "\fB\-read_buf int\fR" 4 .IX Item "-read_buf int" The default read buffer size to be used for connections. This will only have an effect if the buffer size is larger than the size that would otherwise be used and pipelining is in use (see \fBSSL_CTX_set_default_read_buffer_len\fR\|(3) for further information). .IP "\fB\-bugs\fR" 4 .IX Item "-bugs" There are several known bugs in \s-1SSL\s0 and \s-1TLS\s0 implementations. Adding this option enables various workarounds. .IP "\fB\-comp\fR" 4 .IX Item "-comp" Enables support for \s-1SSL/TLS\s0 compression. This option was introduced in OpenSSL 1.1.0. \&\s-1TLS\s0 compression is not recommended and is off by default as of OpenSSL 1.1.0. .IP "\fB\-no_comp\fR" 4 .IX Item "-no_comp" Disables support for \s-1SSL/TLS\s0 compression. \&\s-1TLS\s0 compression is not recommended and is off by default as of OpenSSL 1.1.0. .IP "\fB\-brief\fR" 4 .IX Item "-brief" Only provide a brief summary of connection parameters instead of the normal verbose output. .IP "\fB\-sigalgs sigalglist\fR" 4 .IX Item "-sigalgs sigalglist" Specifies the list of signature algorithms that are sent by the client. The server selects one entry in the list based on its preferences. For example strings, see \fBSSL_CTX_set1_sigalgs\fR\|(3) .IP "\fB\-curves curvelist\fR" 4 .IX Item "-curves curvelist" Specifies the list of supported curves to be sent by the client. The curve is ultimately selected by the server. For a list of all curves, use: .Sp .Vb 1 \& $ openssl ecparam \-list_curves .Ve .IP "\fB\-cipher cipherlist\fR" 4 .IX Item "-cipher cipherlist" This allows the TLSv1.2 and below cipher list sent by the client to be modified. This list will be combined with any TLSv1.3 ciphersuites that have been configured. Although the server determines which ciphersuite is used it should take the first supported cipher in the list sent by the client. See the \&\fBciphers\fR command for more information. .IP "\fB\-ciphersuites val\fR" 4 .IX Item "-ciphersuites val" This allows the TLSv1.3 ciphersuites sent by the client to be modified. This list will be combined with any TLSv1.2 and below ciphersuites that have been configured. Although the server determines which cipher suite is used it should take the first supported cipher in the list sent by the client. See the \&\fBciphers\fR command for more information. The format for this list is a simple colon (\*(L":\*(R") separated list of TLSv1.3 ciphersuite names. .IP "\fB\-starttls protocol\fR" 4 .IX Item "-starttls protocol" Send the protocol-specific message(s) to switch to \s-1TLS\s0 for communication. \&\fBprotocol\fR is a keyword for the intended protocol. Currently, the only supported keywords are \*(L"smtp\*(R", \*(L"pop3\*(R", \*(L"imap\*(R", \*(L"ftp\*(R", \*(L"xmpp\*(R", \*(L"xmpp-server\*(R", \&\*(L"irc\*(R", \*(L"postgres\*(R", \*(L"mysql\*(R", \*(L"lmtp\*(R", \*(L"nntp\*(R", \*(L"sieve\*(R" and \*(L"ldap\*(R". .IP "\fB\-xmpphost hostname\fR" 4 .IX Item "-xmpphost hostname" This option, when used with \*(L"\-starttls xmpp\*(R" or \*(L"\-starttls xmpp-server\*(R", specifies the host for the \*(L"to\*(R" attribute of the stream element. If this option is not specified, then the host specified with \*(L"\-connect\*(R" will be used. .Sp This option is an alias of the \fB\-name\fR option for \*(L"xmpp\*(R" and \*(L"xmpp-server\*(R". .IP "\fB\-name hostname\fR" 4 .IX Item "-name hostname" This option is used to specify hostname information for various protocols used with \fB\-starttls\fR option. Currently only \*(L"xmpp\*(R", \*(L"xmpp-server\*(R", \&\*(L"smtp\*(R" and \*(L"lmtp\*(R" can utilize this \fB\-name\fR option. .Sp If this option is used with \*(L"\-starttls xmpp\*(R" or \*(L"\-starttls xmpp-server\*(R", if specifies the host for the \*(L"to\*(R" attribute of the stream element. If this option is not specified, then the host specified with \*(L"\-connect\*(R" will be used. .Sp If this option is used with \*(L"\-starttls lmtp\*(R" or \*(L"\-starttls smtp\*(R", it specifies the name to use in the \*(L"\s-1LMTP LHLO\*(R"\s0 or \*(L"\s-1SMTP EHLO\*(R"\s0 message, respectively. If this option is not specified, then \*(L"mail.example.com\*(R" will be used. .IP "\fB\-tlsextdebug\fR" 4 .IX Item "-tlsextdebug" Print out a hex dump of any \s-1TLS\s0 extensions received from the server. .IP "\fB\-no_ticket\fR" 4 .IX Item "-no_ticket" Disable RFC4507bis session ticket support. .IP "\fB\-sess_out filename\fR" 4 .IX Item "-sess_out filename" Output \s-1SSL\s0 session to \fBfilename\fR. .IP "\fB\-sess_in sess.pem\fR" 4 .IX Item "-sess_in sess.pem" Load \s-1SSL\s0 session from \fBfilename\fR. The client will attempt to resume a connection from this session. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" Specifying an engine (by its unique \fBid\fR string) will cause \fBs_client\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-rand file...\fR" 4 .IX Item "-rand file..." A file or files containing random data used to seed the random number generator. Multiple files can be specified separated by an OS-dependent character. The separator is \fB;\fR for MS-Windows, \fB,\fR for OpenVMS, and \fB:\fR for all others. .IP "[\fB\-writerand file\fR]" 4 .IX Item "[-writerand file]" Writes random data to the specified \fIfile\fR upon exit. This can be used with a subsequent \fB\-rand\fR flag. .IP "\fB\-serverinfo types\fR" 4 .IX Item "-serverinfo types" A list of comma-separated \s-1TLS\s0 Extension Types (numbers between 0 and 65535). Each type will be sent as an empty ClientHello \s-1TLS\s0 Extension. The server's response (if any) will be encoded and displayed as a \s-1PEM\s0 file. .IP "\fB\-status\fR" 4 .IX Item "-status" Sends a certificate status request to the server (\s-1OCSP\s0 stapling). The server response (if any) is printed out. .IP "\fB\-alpn protocols\fR, \fB\-nextprotoneg protocols\fR" 4 .IX Item "-alpn protocols, -nextprotoneg protocols" These flags enable the Enable the Application-Layer Protocol Negotiation or Next Protocol Negotiation (\s-1NPN\s0) extension, respectively. \s-1ALPN\s0 is the \&\s-1IETF\s0 standard and replaces \s-1NPN.\s0 The \fBprotocols\fR list is a comma-separated list of protocol names that the client should advertise support for. The list should contain the most desirable protocols first. Protocol names are printable \s-1ASCII\s0 strings, for example \*(L"http/1.1\*(R" or \*(L"spdy/3\*(R". An empty list of protocols is treated specially and will cause the client to advertise support for the \s-1TLS\s0 extension but disconnect just after receiving ServerHello with a list of server supported protocols. The flag \fB\-nextprotoneg\fR cannot be specified if \fB\-tls1_3\fR is used. .IP "\fB\-ct\fR, \fB\-noct\fR" 4 .IX Item "-ct, -noct" Use one of these two options to control whether Certificate Transparency (\s-1CT\s0) is enabled (\fB\-ct\fR) or disabled (\fB\-noct\fR). If \s-1CT\s0 is enabled, signed certificate timestamps (SCTs) will be requested from the server and reported at handshake completion. .Sp Enabling \s-1CT\s0 also enables \s-1OCSP\s0 stapling, as this is one possible delivery method for SCTs. .IP "\fB\-ctlogfile\fR" 4 .IX Item "-ctlogfile" A file containing a list of known Certificate Transparency logs. See \&\fBSSL_CTX_set_ctlog_list_file\fR\|(3) for the expected file format. .IP "\fB\-keylogfile file\fR" 4 .IX Item "-keylogfile file" Appends \s-1TLS\s0 secrets to the specified keylog file such that external programs (like Wireshark) can decrypt \s-1TLS\s0 connections. .IP "\fB\-early_data file\fR" 4 .IX Item "-early_data file" Reads the contents of the specified file and attempts to send it as early data to the server. This will only work with resumed sessions that support early data and when the server accepts the early data. .IP "\fB\-enable_pha\fR" 4 .IX Item "-enable_pha" For TLSv1.3 only, send the Post-Handshake Authentication extension. This will happen whether or not a certificate has been provided via \fB\-cert\fR. .IP "\fB[target]\fR" 4 .IX Item "[target]" Rather than providing \fB\-connect\fR, the target hostname and optional port may be provided as a single positional argument after all options. If neither this nor \fB\-connect\fR are provided, falls back to attempting to connect to localhost on port 4433. .SH "CONNECTED COMMANDS" .IX Header "CONNECTED COMMANDS" If a connection is established with an \s-1SSL\s0 server then any data received from the server is displayed and any key presses will be sent to the server. If end of file is reached then the connection will be closed down. When used interactively (which means neither \fB\-quiet\fR nor \fB\-ign_eof\fR have been given), then certain commands are also recognized which perform special operations. These commands are a letter which must appear at the start of a line. They are listed below. .IP "\fBQ\fR" 4 .IX Item "Q" End the current \s-1SSL\s0 connection and exit. .IP "\fBR\fR" 4 .IX Item "R" Renegotiate the \s-1SSL\s0 session (TLSv1.2 and below only). .IP "\fBB\fR" 4 .IX Item "B" Send a heartbeat message to the server (\s-1DTLS\s0 only) .IP "\fBk\fR" 4 .IX Item "k" Send a key update message to the server (TLSv1.3 only) .IP "\fBK\fR" 4 .IX Item "K" Send a key update message to the server and request one back (TLSv1.3 only) .SH "NOTES" .IX Header "NOTES" \&\fBs_client\fR can be used to debug \s-1SSL\s0 servers. To connect to an \s-1SSL HTTP\s0 server the command: .PP .Vb 1 \& openssl s_client \-connect servername:443 .Ve .PP would typically be used (https uses port 443). If the connection succeeds then an \s-1HTTP\s0 command can be given such as \*(L"\s-1GET /\*(R"\s0 to retrieve a web page. .PP If the handshake fails then there are several possible causes, if it is nothing obvious like no client certificate then the \fB\-bugs\fR, \&\fB\-ssl3\fR, \fB\-tls1\fR, \fB\-no_ssl3\fR, \fB\-no_tls1\fR options can be tried in case it is a buggy server. In particular you should play with these options \fBbefore\fR submitting a bug report to an OpenSSL mailing list. .PP A frequent problem when attempting to get client certificates working is that a web client complains it has no certificates or gives an empty list to choose from. This is normally because the server is not sending the clients certificate authority in its \*(L"acceptable \s-1CA\s0 list\*(R" when it requests a certificate. By using \fBs_client\fR the \s-1CA\s0 list can be viewed and checked. However, some servers only request client authentication after a specific \s-1URL\s0 is requested. To obtain the list in this case it is necessary to use the \fB\-prexit\fR option and send an \s-1HTTP\s0 request for an appropriate page. .PP If a certificate is specified on the command line using the \fB\-cert\fR option it will not be used unless the server specifically requests a client certificate. Therefore, merely including a client certificate on the command line is no guarantee that the certificate works. .PP If there are problems verifying a server certificate then the \&\fB\-showcerts\fR option can be used to show all the certificates sent by the server. .PP The \fBs_client\fR utility is a test tool and is designed to continue the handshake after any certificate verification errors. As a result it will accept any certificate chain (trusted or not) sent by the peer. Non-test applications should \fBnot\fR do this as it makes them vulnerable to a \s-1MITM\s0 attack. This behaviour can be changed by with the \fB\-verify_return_error\fR option: any verify errors are then returned aborting the handshake. .PP The \fB\-bind\fR option may be useful if the server or a firewall requires connections to come from some particular address and or port. .SH "BUGS" .IX Header "BUGS" Because this program has a lot of options and also because some of the techniques used are rather old, the C source of \fBs_client\fR is rather hard to read and not a model of how things should be done. A typical \s-1SSL\s0 client program would be much simpler. .PP The \fB\-prexit\fR option is a bit of a hack. We should really report information whenever a session is renegotiated. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBSSL_CONF_cmd\fR\|(3), \fBsess_id\fR\|(1), \fBs_server\fR\|(1), \fBciphers\fR\|(1), \&\fBSSL_CTX_set_max_send_fragment\fR\|(3), \fBSSL_CTX_set_split_send_fragment\fR\|(3), \&\fBSSL_CTX_set_max_pipelines\fR\|(3) .SH "HISTORY" .IX Header "HISTORY" The \fB\-no_alt_chains\fR option was added in OpenSSL 1.1.0. The \fB\-name\fR option was added in OpenSSL 1.1.1. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!NJengine.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ENGINE 1" .TH ENGINE 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-engine, engine \- load and query engines .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl engine\fR [ \fIengine...\fR ] [\fB\-v\fR] [\fB\-vv\fR] [\fB\-vvv\fR] [\fB\-vvv\fR] [\fB\-vvv\fR] [\fB\-c\fR] [\fB\-t\fR] [\fB\-tt\fR] [\fB\-pre\fR \fIcommand\fR] [\fB\-post\fR \fIcommand\fR] [ \fIengine...\fR ] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBengine\fR command is used to query the status and capabilities of the specified \fBengine\fR's. Engines may be specified before and after all other command-line flags. Only those specified are queried. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-v\fR \fB\-vv\fR \fB\-vvv\fR \fB\-vvvv\fR" 4 .IX Item "-v -vv -vvv -vvvv" Provides information about each specified engine. The first flag lists all the possible run-time control commands; the second adds a description of each command; the third adds the input flags, and the final option adds the internal input flags. .IP "\fB\-c\fR" 4 .IX Item "-c" Lists the capabilities of each engine. .IP "\fB\-t\fR" 4 .IX Item "-t" Tests if each specified engine is available, and displays the answer. .IP "\fB\-tt\fR" 4 .IX Item "-tt" Displays an error trace for any unavailable engine. .IP "\fB\-pre\fR \fIcommand\fR" 4 .IX Item "-pre command" .PD 0 .IP "\fB\-post\fR \fIcommand\fR" 4 .IX Item "-post command" .PD Command-line configuration of engines. The \fB\-pre\fR command is given to the engine before it is loaded and the \fB\-post\fR command is given after the engine is loaded. The \fIcommand\fR is of the form \fIcmd:val\fR where \fIcmd\fR is the command, and \fIval\fR is the value for the command. See the example below. .SH "EXAMPLES" .IX Header "EXAMPLES" To list all the commands available to a dynamic engine: .PP .Vb 10 \& $ openssl engine \-t \-tt \-vvvv dynamic \& (dynamic) Dynamic engine loading support \& [ unavailable ] \& SO_PATH: Specifies the path to the new ENGINE shared library \& (input flags): STRING \& NO_VCHECK: Specifies to continue even if version checking fails (boolean) \& (input flags): NUMERIC \& ID: Specifies an ENGINE id name for loading \& (input flags): STRING \& LIST_ADD: Whether to add a loaded ENGINE to the internal list (0=no,1=yes,2=mandatory) \& (input flags): NUMERIC \& DIR_LOAD: Specifies whether to load from \*(AqDIR_ADD\*(Aq directories (0=no,1=yes,2=mandatory) \& (input flags): NUMERIC \& DIR_ADD: Adds a directory from which ENGINEs can be loaded \& (input flags): STRING \& LOAD: Load up the ENGINE specified by other settings \& (input flags): NO_INPUT .Ve .PP To list the capabilities of the \fIrsax\fR engine: .PP .Vb 4 \& $ openssl engine \-c \& (rsax) RSAX engine support \& [RSA] \& (dynamic) Dynamic engine loading support .Ve .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" .IP "\fB\s-1OPENSSL_ENGINES\s0\fR" 4 .IX Item "OPENSSL_ENGINES" The path to the engines directory. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBconfig\fR\|(5) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2016\-2019 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!]gG"G"rehash.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "REHASH 1" .TH REHASH 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-c_rehash, openssl\-rehash, c_rehash, rehash \- Create symbolic links to files named by the hash values .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \&\fBrehash\fR \&\fB[\-h]\fR \&\fB[\-help]\fR \&\fB[\-old]\fR \&\fB[\-n]\fR \&\fB[\-v]\fR [ \fIdirectory\fR...] .PP \&\fBc_rehash\fR \&\fIflags...\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" On some platforms, the OpenSSL \fBrehash\fR command is available as an external script called \fBc_rehash\fR. They are functionally equivalent, except for minor differences noted below. .PP \&\fBrehash\fR scans directories and calculates a hash value of each \&\f(CW\*(C`.pem\*(C'\fR, \f(CW\*(C`.crt\*(C'\fR, \f(CW\*(C`.cer\*(C'\fR, or \f(CW\*(C`.crl\*(C'\fR file in the specified directory list and creates symbolic links for each file, where the name of the link is the hash value. (If the platform does not support symbolic links, a copy is made.) This utility is useful as many programs that use OpenSSL require directories to be set up like this in order to find certificates. .PP If any directories are named on the command line, then those are processed in turn. If not, then the \fB\s-1SSL_CERT_DIR\s0\fR environment variable is consulted; this should be a colon-separated list of directories, like the Unix \fB\s-1PATH\s0\fR variable. If that is not set then the default directory (installation-specific but often \fB/usr/local/ssl/certs\fR) is processed. .PP In order for a directory to be processed, the user must have write permissions on that directory, otherwise an error will be generated. .PP The links created are of the form \f(CW\*(C`HHHHHHHH.D\*(C'\fR, where each \fBH\fR is a hexadecimal character and \fBD\fR is a single decimal digit. When processing a directory, \fBrehash\fR will first remove all links that have a name in that syntax, even if they are being used for some other purpose. To skip the removal step, use the \fB\-n\fR flag. Hashes for \s-1CRL\s0's look similar except the letter \fBr\fR appears after the period, like this: \f(CW\*(C`HHHHHHHH.rD\*(C'\fR. .PP Multiple objects may have the same hash; they will be indicated by incrementing the \fBD\fR value. Duplicates are found by comparing the full \s-1SHA\-1\s0 fingerprint. A warning will be displayed if a duplicate is found. .PP A warning will also be displayed if there are files that cannot be parsed as either a certificate or a \s-1CRL\s0 or if more than one such object appears in the file. .SS "Script Configuration" .IX Subsection "Script Configuration" The \fBc_rehash\fR script uses the \fBopenssl\fR program to compute the hashes and fingerprints. If not found in the user's \fB\s-1PATH\s0\fR, then set the \&\fB\s-1OPENSSL\s0\fR environment variable to the full pathname. Any program can be used, it will be invoked as follows for either a certificate or \s-1CRL:\s0 .PP .Vb 2 \& $OPENSSL x509 \-hash \-fingerprint \-noout \-in FILENAME \& $OPENSSL crl \-hash \-fingerprint \-noout \-in FILENAME .Ve .PP where \fB\s-1FILENAME\s0\fR is the filename. It must output the hash of the file on the first line, and the fingerprint on the second, optionally prefixed with some text and an equals sign. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR \fB\-h\fR" 4 .IX Item "-help -h" Display a brief usage message. .IP "\fB\-old\fR" 4 .IX Item "-old" Use old-style hashing (\s-1MD5,\s0 as opposed to \s-1SHA\-1\s0) for generating links to be used for releases before 1.0.0. Note that current versions will not use the old style. .IP "\fB\-n\fR" 4 .IX Item "-n" Do not remove existing links. This is needed when keeping new and old-style links in the same directory. .IP "\fB\-compat\fR" 4 .IX Item "-compat" Generate links for both old-style (\s-1MD5\s0) and new-style (\s-1SHA1\s0) hashing. This allows releases before 1.0.0 to use these links along-side newer releases. .IP "\fB\-v\fR" 4 .IX Item "-v" Print messages about old links removed and new links created. By default, \fBrehash\fR only lists each directory as it is processed. .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" .IP "\fB\s-1OPENSSL\s0\fR" 4 .IX Item "OPENSSL" The path to an executable to use to generate hashes and fingerprints (see above). .IP "\fB\s-1SSL_CERT_DIR\s0\fR" 4 .IX Item "SSL_CERT_DIR" Colon separated list of directories to operate on. Ignored if directories are listed on the command line. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBopenssl\fR\|(1), \&\fBcrl\fR\|(1). \&\fBx509\fR\|(1). .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2015\-2018 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!"q--srp.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SRP 1" .TH SRP 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-srp, srp \- maintain SRP password file .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl srp\fR [\fB\-help\fR] [\fB\-verbose\fR] [\fB\-add\fR] [\fB\-modify\fR] [\fB\-delete\fR] [\fB\-list\fR] [\fB\-name section\fR] [\fB\-config file\fR] [\fB\-srpvfile file\fR] [\fB\-gn identifier\fR] [\fB\-userinfo text...\fR] [\fB\-passin arg\fR] [\fB\-passout arg\fR] [\fIuser...\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBsrp\fR command is user to maintain an \s-1SRP\s0 (secure remote password) file. At most one of the \fB\-add\fR, \fB\-modify\fR, \fB\-delete\fR, and \fB\-list\fR options can be specified. These options take zero or more usernames as parameters and perform the appropriate operation on the \s-1SRP\s0 file. For \fB\-list\fR, if no \fBuser\fR is given then all users are displayed. .PP The configuration file to use, and the section within the file, can be specified with the \fB\-config\fR and \fB\-name\fR flags, respectively. If the config file is not specified, the \fB\-srpvfile\fR can be used to just specify the file to operate on. .PP The \fB\-userinfo\fR option specifies additional information to add when adding or modifying a user. .PP The \fB\-gn\fR flag specifies the \fBg\fR and \fBN\fR values, using one of the strengths defined in \s-1IETF RFC 5054.\s0 .PP The \fB\-passin\fR and \fB\-passout\fR arguments are parsed as described in the \fBopenssl\fR\|(1) command. .SH "OPTIONS" .IX Header "OPTIONS" .IP "[\fB\-help\fR]" 4 .IX Item "[-help]" Display an option summary. .IP "[\fB\-verbose\fR]" 4 .IX Item "[-verbose]" Generate verbose output while processing. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!"bblist.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "LIST 1" .TH LIST 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-list, list \- list algorithms and features .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl list\fR [\fB\-help\fR] [\fB\-1\fR] [\fB\-commands\fR] [\fB\-digest\-commands\fR] [\fB\-digest\-algorithms\fR] [\fB\-cipher\-commands\fR] [\fB\-cipher\-algorithms\fR] [\fB\-public\-key\-algorithms\fR] [\fB\-public\-key\-methods\fR] [\fB\-disabled\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command is used to generate list of algorithms or disabled features. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Display a usage message. .IP "\fB\-1\fR" 4 .IX Item "-1" List the commands, digest-commands, or cipher-commands in a single column. If used, this option must be given first. .IP "\fB\-commands\fR" 4 .IX Item "-commands" Display a list of standard commands. .IP "\fB\-digest\-commands\fR" 4 .IX Item "-digest-commands" Display a list of message digest commands, which are typically used as input to the \fBdgst\fR\|(1) or \fBspeed\fR\|(1) commands. .IP "\fB\-digest\-algorithms\fR" 4 .IX Item "-digest-algorithms" Display a list of message digest algorithms. If a line is of the form foo => bar then \fBfoo\fR is an alias for the official algorithm name, \fBbar\fR. .IP "\fB\-cipher\-commands\fR" 4 .IX Item "-cipher-commands" Display a list of cipher commands, which are typically used as input to the \fBdgst\fR\|(1) or \fBspeed\fR\|(1) commands. .IP "\fB\-cipher\-algorithms\fR" 4 .IX Item "-cipher-algorithms" Display a list of cipher algorithms. If a line is of the form foo => bar then \fBfoo\fR is an alias for the official algorithm name, \fBbar\fR. .IP "\fB\-public\-key\-algorithms\fR" 4 .IX Item "-public-key-algorithms" Display a list of public key algorithms, with each algorithm as a block of multiple lines, all but the first are indented. .IP "\fB\-public\-key\-methods\fR" 4 .IX Item "-public-key-methods" Display a list of public key method OIDs: this also includes public key methods without an associated \s-1ASN.1\s0 method, for example, \s-1KDF\s0 algorithms. .IP "\fB\-disabled\fR" 4 .IX Item "-disabled" Display a list of disabled features, those that were compiled out of the installation. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2016\-2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!prime.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PRIME 1" .TH PRIME 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-prime, prime \- compute prime numbers .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl prime\fR [\fB\-help\fR] [\fB\-hex\fR] [\fB\-generate\fR] [\fB\-bits\fR] [\fB\-safe\fR] [\fB\-checks\fR] [\fInumber...\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBprime\fR command checks if the specified numbers are prime. .PP If no numbers are given on the command line, the \fB\-generate\fR flag should be used to generate primes according to the requirements specified by the rest of the flags. .SH "OPTIONS" .IX Header "OPTIONS" .IP "[\fB\-help\fR]" 4 .IX Item "[-help]" Display an option summary. .IP "[\fB\-hex\fR]" 4 .IX Item "[-hex]" Generate hex output. .IP "[\fB\-generate\fR]" 4 .IX Item "[-generate]" Generate a prime number. .IP "[\fB\-bits num\fR]" 4 .IX Item "[-bits num]" Generate a prime with \fBnum\fR bits. .IP "[\fB\-safe\fR]" 4 .IX Item "[-safe]" When used with \fB\-generate\fR, generates a \*(L"safe\*(R" prime. If the number generated is \fBn\fR, then check that \fB(n\-1)/2\fR is also prime. .IP "[\fB\-checks num\fR]" 4 .IX Item "[-checks num]" Perform the checks \fBnum\fR times to see that the generated number is prime. The default is 20. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!s& storeutl.1nu[.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "STOREUTL 1" .TH STOREUTL 1 "2023-09-11" "1.1.1w" "OpenSSL" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" openssl\-storeutl, storeutl \- STORE utility .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBopenssl\fR \fBstoreutl\fR [\fB\-help\fR] [\fB\-out file\fR] [\fB\-noout\fR] [\fB\-passin arg\fR] [\fB\-text arg\fR] [\fB\-engine id\fR] [\fB\-r\fR] [\fB\-certs\fR] [\fB\-keys\fR] [\fB\-crls\fR] [\fB\-subject arg\fR] [\fB\-issuer arg\fR] [\fB\-serial arg\fR] [\fB\-alias arg\fR] [\fB\-fingerprint arg\fR] [\fB\-\f(BIdigest\fB\fR] \&\fBuri\fR ... .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBstoreutl\fR command can be used to display the contents (after decryption as the case may be) fetched from the given URIs. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-help\fR" 4 .IX Item "-help" Print out a usage message. .IP "\fB\-out filename\fR" 4 .IX Item "-out filename" specifies the output filename to write to or standard output by default. .IP "\fB\-noout\fR" 4 .IX Item "-noout" this option prevents output of the \s-1PEM\s0 data. .IP "\fB\-passin arg\fR" 4 .IX Item "-passin arg" the key password source. For more information about the format of \fBarg\fR see \*(L"Pass Phrase Options\*(R" in \fBopenssl\fR\|(1). .IP "\fB\-text\fR" 4 .IX Item "-text" Prints out the objects in text form, similarly to the \fB\-text\fR output from \&\fBopenssl x509\fR, \fBopenssl pkey\fR, etc. .IP "\fB\-engine id\fR" 4 .IX Item "-engine id" specifying an engine (by its unique \fBid\fR string) will cause \fBstoreutl\fR to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms. .IP "\fB\-r\fR" 4 .IX Item "-r" Fetch objects recursively when possible. .IP "\fB\-certs\fR" 4 .IX Item "-certs" .PD 0 .IP "\fB\-keys\fR" 4 .IX Item "-keys" .IP "\fB\-crls\fR" 4 .IX Item "-crls" .PD Only select the certificates, keys or CRLs from the given \s-1URI.\s0 However, if this \s-1URI\s0 would return a set of names (URIs), those are always returned. .IP "\fB\-subject arg\fR" 4 .IX Item "-subject arg" Search for an object having the subject name \fBarg\fR. The arg must be formatted as \fI/type0=value0/type1=value1/type2=...\fR. Keyword characters may be escaped by \e (backslash), and whitespace is retained. Empty values are permitted but are ignored for the search. That is, a search with an empty value will have the same effect as not specifying the type at all. .IP "\fB\-issuer arg\fR" 4 .IX Item "-issuer arg" .PD 0 .IP "\fB\-serial arg\fR" 4 .IX Item "-serial arg" .PD Search for an object having the given issuer name and serial number. These two options \fImust\fR be used together. The issuer arg must be formatted as \fI/type0=value0/type1=value1/type2=...\fR, characters may be escaped by \e (backslash), no spaces are skipped. The serial arg may be specified as a decimal value or a hex value if preceded by \fB0x\fR. .IP "\fB\-alias arg\fR" 4 .IX Item "-alias arg" Search for an object having the given alias. .IP "\fB\-fingerprint arg\fR" 4 .IX Item "-fingerprint arg" Search for an object having the given fingerprint. .IP "\fB\-\f(BIdigest\fB\fR" 4 .IX Item "-digest" The digest that was used to compute the fingerprint given with \fB\-fingerprint\fR. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBopenssl\fR\|(1) .SH "HISTORY" .IX Header "HISTORY" The \fBopenssl\fR \fBstoreutl\fR app was added in OpenSSL 1.1.1. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2016\-2021 The OpenSSL Project Authors. All Rights Reserved. .PP Licensed under the OpenSSL license (the \*(L"License\*(R"). You may not use this file except in compliance with the License. You can obtain a copy in the file \s-1LICENSE\s0 in the source distribution or at . PK!t t datacopy.1nu[.\" cf. groff_mdoc .Dd March 25, 2015 .Os FreeTDS 1.5.16 .Dt DATACOPY FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME .Nm datacopy .Nd move table data between two servers .\" .Sh SYNOPSIS .Nm .Op Fl vdE .Bro .Fl t | .Fl a | .Fl c .Ar owner .Brc .Op Fl b Ar batchsize .Op Fl p Ar packetsize .Op Fl S Ar server/username/password/database/table_or_view .Op Fl D Ar server/username/password/database/table .Op Fl T Ar textsize .\" .Sh DESCRIPTION .Nm is a utility distributed with FreeTDS. .Nm will move table data from one server to another without the need for intermediate files. .Nm is much faster and more efficient than is freebcp out/in. .Pp .Nm makes use of the db-lib bcp API built into FreeTDS. This API is also available to application developers. .Pp .Nm can be used to migrate data between Sybase ASE and SQL Server or vice versa. .\" .Sh OPTIONS .Bl -tag -width indent .It Fl t Truncate target table before loading data. .It Fl a Append data to target table. .It Fl c Ar owner Create the target table with the same schema as the source table. .Nm will submit a .Ql CREATE TABLE command on the target server using the specified owner in the command, e.g. .Ql CREATE TABLE owner.table (.\|.\|.\&). .It Fl b Ar batchsize The number of rows per batch of data copied. Each batch of data is effectively 'committed' to the database. The default is 1000. .It Fl p Ar packetsize The number of bytes, per network packet, sent to and from the servers. Increased packet size can enhance performance. .It Fl T Ar textsize Specify size of TEXT/IMAGE column from network. .It Fl v Produce verbose output, including diagnostic timings. .It Fl d Produce freetds TDSDUMP output. (Serious debug only!) .It Fl S Ar server/username/password/database/table_or_view The connection information for the source server and the location/name of the table (or view) to be copied. If not specified, .Nm prompts the user for the information. .It Fl D Ar server/username/password/database/table The connection information for the destination server and the location/name of the target table. If not specified, .Nm prompts the user for the information. .It Fl E Keep identity values. .El .Sh SEE ALSO .Xr freebcp 1 , Xr defncopy 1 , Xr bsqldb 1 , Xr tsql 1 , .%B FreeTDS User Guide. .\" .Sh HISTORY .Pp .Nm first appeared in FreeTDS 0.64. .\" .Sh AUTHORS The .Nm utility was written by .An Bill Thompson Aq thompbil@exchange.uk.ml.com . PK! bsqldb.1nu[.\" cf. groff_mdoc .Dd March 26, 2015 .Dt BSQLDB 1 .Os FreeTDS 1.5.16 .Sh NAME .Nm bsqldb .Nd batch SQL script processor using DB-Library .Sh SYNOPSIS .Nm .Op Fl hqv .Op Fl S Ar servername .Op Fl D Ar database .Op Fl U Ar username .Op Fl P Ar password .Op Fl i Ar input_file .Op Fl o Ar output_file .Op Fl e Ar error_file .Op Fl H Ar hostname .Op Fl t Ar field_term .Op Fl R Ar pivot_description .\" .Sh DESCRIPTION .Nm is a utility program distributed with FreeTDS. .Nm is a non-interactive equivalent of the "isql" utility programs distributed by Sybase and Microsoft. Like them, .Nm uses the command "go" on a line by itself as a separator between batches. The last batch need not be followed by "go". .Nm makes use of the DB-Library API provided by FreeTDS. This API is of course also available to application developers. .Sh OPTIONS .Bl -tag -width indent .It Fl D Ar database Database to use. .It Fl H Ar hostname hostname Override name of client sent to server. .It Fl P Ar password Database server password. .It Fl S Ar servername Database server to which to connect. .It Fl U Ar username Database server login name. If username is not provided, a domain login is attempted for TDS 7+ connections. .It Fl e Ar error_file Name of file for errors. .It Fl h Print column headers with the data to the same file. .It Fl i Ar input_file Name of script file, containing SQL. .It Fl o Ar output_file Name of output file, holding result data. .It Fl q Do not print column metadata, return status, or rowcount. Overrides .Fl h Ns . .It Fl t Ar field_term Specifies the field terminator. Default is two spaces (' '). Recognized escape sequences are tab ('\\t'), carriage return ('\\r'), newline ('\\n'), and backslash ('\\\\'). .It Fl v Verbose mode, for more information about the DB-Library interaction. This also reports the result set metadata, including and return code. All verbose data are written to standard error (or .Fl e Ns ), so as not to interfere with the data stream. .It Fl R Ar pivot_description Specify pivot trasformation. The format is .Ao Ar down\ columns Ac .Ao Ar across\ columns Ac .Ao Ar function Ac .Ao Ar value Ac . Columns are specified but numbers. The format of .Ar down columns and .Ar across columns is a comma separated list of columns. .Ar function is either count, sum, min or max. .El .\" .Sh ENVIRONMENT .Ev DSQUERY default .Ar servername .\" .Sh NOTES .Nm is a filter; it reads from standard input, writes to standard output, and writes errors to standard error. The .Fl i Ns , Fl o Ns , and Fl e options override these defaults. .Pp The source code for .Nm is intended as a model for DB-Library users. DB-Library has a rich set of functions, and it can be hard sometimes to understand how to use them, particularly the first time. If you find something about the source code unclear, you are encouraged to email the author your comments. .\" .Sh EXIT STATUS .Nm exits 0 on success, and >0 if the server cannot process the query. .Pp For messages with severity > 10, .Nm calls exit(3) with the severity level. For example, if the severity level is 16, .Nm will return an exit status of 16 to the shell. .\" .Sh HISTORY .Nm first appeared in FreeTDS 0.63. .\" .Sh AUTHORS The .Nm utility was written by .An "James K. Lowden" Aq jklowden@freetds.org . .\" .Sh BUGS Microsoft servers as of SQL Server 7.0 SP 3 do not return output parameters unless the RPC functions are used. This means .Nm cannot return output parameters for stored procedures with these servers. PK!R#ZP P bsqlodbc.1nu[.\" cf. groff_mdoc .Dd March 25, 2015 .Os FreeTDS 1.5.16 .Dt BSQLODBC FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME .Nm bsqlodbc .Nd batch SQL script processor using ODBC .\" .Sh SYNOPSIS .Pp .Nm .Op Fl hqv .Op Fl U Ar username .Op Fl P Ar password .Op Fl S Ar server .Op Fl D Ar database .Op Fl i Ar input_file .Op Fl o Ar output_file .Op Fl e Ar error_file .Op Fl t Ar field_term .Op Fl V Ar odbc_version .\" .Sh DESCRIPTION .Pp .Nm is a utility program distributed with FreeTDS. .Pp .Nm is a non-interactive equivalent of the .Ql isql utility programs distributed by Sybase and Microsoft. Like them, .Nm uses the command .Ql go on a line by itself as a separator between batches. The last batch need not be followed by .Ql go . .Pp .Nm makes use of the ODBC API provided by FreeTDS. This API is of course also available to application developers. .\" .Sh OPTIONS .Bl -tag -width indent .It Fl U Ar username Database server login name. .It Fl P Ar password Database server password. .It Fl S Ar server Database server to which to connect. .It Fl D Ar database Database to use. .It Fl i Ar input_file Name of script file, containing SQL. .It Fl o Ar output_file Name of output file, holding result data. .It Fl e Ar error_file Name of file for errors. .It Fl t Ar field_term Specifies the field terminator. Default is two spaces ( .Ql \ \ .Ns ). Recognized escape sequences are tab ( .Ql \et .Ns ), carriage return ( .Ql \er .Ns ), newline ( .Ql \en .Ns ), and backslash ( .Ql \e\e .Ns ). .It Fl h Print column headers with the data to the same file. .It Fl q Do not print column metadata, return status, or rowcount. Overrides .Fl h . .It Fl v Verbose mode, for more information about the ODBC interaction. This also reports the result set metadata, including and return code. All verbose data are written to standard error (or .Fl e Ns ), so as not to interfere with the data stream. .It Fl V Ar odbc_version Specify ODBC version (2 or 3). .El .\" .Sh NOTES .Pp .Nm is a filter; it reads from standard input, writes to standard output, and writes errors to standard error. The .Fl i , .Fl o , and .Fl e options override these defaults. .Sh EXIT STATUS .Nm exits 0 on success, and >0 if the server cannot process the query. .\" .Sh HISTORY .Nm first appeared in FreeTDS 0.65. .\" .Sh AUTHORS The .Nm utility was written by .An James K. Lowden Aq jklowden@freetds.org . PK!;ӛ< < defncopy.1nu[.\" cf. groff_mdoc .Dd April 26, 2012 .Os FreeTDS 1.5.16 .Dt DEFNCOPY FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME .Nm defncopy .Nd extract procedures and views from a Microsoft server. .\" .Sh SYNOPSIS .Pp .Nm .Op Fl v .Op Fl U Ar username .Op Fl P Ar password .Op Fl S Ar server .Op Fl D Ar database .Op Fl i Ar input_file .Op Fl o Ar output_file .Bo .Ar owner.object_name .\" Elipsis according to Werner Lemberg: .\" http://www.mail-archive.com/groff@gnu.org/msg03122.html .Op Ar owner.object_name .\|.\|.\& .Bc .\" .Sh DESCRIPTION .Pp .Nm is a utility program distributed with FreeTDS. It replaces a similar program of the same name distributed by Sybase. .Pp .Nm reads the text of a stored procedure or view, and writes a script suitable for recreating the procedure or view. For tables, it reads the output of sp_help and constructs a .Ql CREATE TABLE statement, complete with .Ql CREATE INDEX Ns , too. .\" .Ar owner is optional if you or the database owner is the owner of the procedure/view being copied. .Ar object_name is the name of the system object you wish to extract. .\" .Sh OPTIONS .Bl -tag -width indent .It Fl U Ar username database server login name. .It Fl P Ar password database server password. .It Fl S Ar server database server to which to connect. .It Fl D Ar database database to use. Optional if the procedure/view being extracted is in your default database. .It Fl i Ar input_file a script to apply to the database. Not currently implemented. .It Fl o Ar output_file a file to hold the script, defaults to standard output. .It Fl v Show version information and copyright notice. .El .\" .Sh NOTES .Nm is a filter; it reads from standard input, writes to standard output, and writes errors to standard error. The .Fl i , .Fl o , and .Fl e options override these defaults. .Pp .Nm makes use of the db-lib API provided by FreeTDS. This API is of course also available to application developers. .Sh EXIT STATUS .Pp .Nm exits 0 on success, and >0 if the server cannot process the query. .Pp .Nm will report any errors returned by the server, but will continue processing. .\" .Sh HISTORY .Pp .Nm first appeared in FreeTDS 0.63. .\" .Sh AUTHORS The .Nm utility was written by .An James K. Lowden Aq jklowden@schemamania.org. .\" .Sh BUGS Works only with Microsoft servers and ancient Sybase servers. Does not create primary keys. Many options are defined by Sybase that this version does not implement. Feel free to correct this situation. In theory, .Nm could apply/produce DDL for any system object, but at present only tables, procedures and views are supported, and only for extraction. PK! freebcp.1nu[.\" cf. groff_mdoc .Dd March 25, 2015 .Os FreeTDS 1.5.16 .Dt FREEBCP 1 .Sh NAME .Nm freebcp .Nd bulk loading utility for Sybase and Microsoft databases .Sh SYNOPSIS .Nm .Bo Bo Ao Ar database Ac Ns . Bc Ns Ao Ar owner Ac Ns . Bc Ns Aq Ar object_name .Bro .Ar in | .Ar [query] Ns Ar out .Brc .Ar datafile .Bro .Fl c | .Fl n | .Fl f Ar formatfile .Brc .Op Fl S Ar servername .Op Fl D Ar dbname .Op Fl U Ar username .Op Fl P Ar password .Op Fl b Ar batchsize .Op Fl F Ar firstrow .Op Fl L Ar lastrow .Op Fl e Ar errfile .Op Fl I Ar interfaces .Op Fl m Ar maxerror .Op Fl t Ar field_term .Op Fl r Ar row_term .Op Fl h Ar hints .Op Fl T Ar textsize .Op Fl A Ar packet_size .Op Fl O Ar options .Op Fl i Ar inputfile .Op Fl o Ar outputfile .Op Fl C Ar charset .Op Fl EdVv .\" .Sh DESCRIPTION .Nm is a utility program distributed with FreeTDS. .Nm replicates (in part at least) the functionality of the bcp utility programs distributed by Sybase and Microsoft. .Nm makes use of the DB-Library bcp API provided by FreeTDS. This API is also available to application developers. .Pp The manual pages or online help for Sybase or SQL Server can be referenced for more detailed information on bcp functionality. .\" .Sh TABLES\ AND\ FILES .Bl -tag -width indent .It Ar database The name of the database containing object to be copied. Optional if the table/view is in the default database for .Ar username . .It Ar schema The schema of the object being copied. If not provided, the default schema for .Ar username is used. .It Ar object The name of the database object you wish to access, typically a table. It can also be a view. All views can be read; some can be written, subject to constraints. With .Ar queryout Ns , Ar object can also be an SQL query. .It Ar in Copy data from a host file to a database table. .It Ar out Copy data from a database table to a host file. .It Ar queryout indicates that .Ar table_name is in fact SQL, rather than a database object. .Nm will execute the query and write the results to a file. (It is a good idea to have the query return one and only one result set.) .It Ar datafile The name of an operating system file. .El .\" .Sh OPTIONS .Bl -tag -width indent .It Fl A Ar packet_size Set the size of a TDS packet to packet_size. Not sure why you would want to do this, except as an experiment. .It Fl D Ar dbname The name of the default database to use. Overrides default database associated with the login account. Causes .Nm to issue a .Ic USE Ar dbname command immediately after logging in, before commencing BCP operations. .It Fl E Write the data in datafile to the table's IDENTITY column. Without this flag, the identity data present in the datafile will be ignored, and new IDENTITY values will be generated for the imported rows. .It Fl F Ar firstrow The first row to copy from the input file or database table. The default is the first row, row 1. .It Fl I Ar interfaces The name and location of the .Pa interfaces file to search when connecting to servername. Overrides .Pa freetds.conf. .It Fl L Ar lastrow The last row to copy from an input file or database table. The default is the last row. .It Fl O Ar options SQL text to set connection options prior to the bcp operation. If .Ar options is a valid filename, the SQL is read from the file instead. Sometimes needed for .Ar queryout . Example: .Li -O `SET QUOTED_IDENTIFIER ON' Ns . .It Fl P Ar password The password associated with .Ar username . .It Fl S Ar servername The name of the Database Server to which to connect. .It Fl T Ar textsize For text or image columns, set the maximum number of characters to request from the server. Defaults to the setting in .Pa freetds.conf . If not specified anywhere, defaults to the full size of the data. .It Fl U Ar username A database login name. For TDS\ 7+ connections, a domain login is attempted if .Ar username is not provided. .It Fl b Ar batchsize The number of rows per batch of data copied. Batching applies only when you are bulk copying into the database. Each batch of data is effectively .Dq committed into the database. The default value for .Ar batchsize is 1000. .It Fl c The host data file is (or will be) in "character" format, i.e., a text file. Encoding is determined by the client charset attribute in .Pa freetds.conf . .It Fl d Turn off any logging. (Unintuitive, perhaps.) .It Fl e Ar errfile Write errors to .Ar errfile . For uploads. Includes line and column information, and the row data. .It Fl f Ar formatfile The format of the host data file is described by .Ar formatfile . The layout of .Ar formatfile is identical to that understood by the Sybase and Microsoft bcp utilities, but is too complicated to describe here. .It Fl h Ar hints Set bcp hints. For valid values, cf. .Fn bcp_options in the FreeTDS Reference Manual. .It Fl m Ar maxerror Stop after encountering .Ar maxerror errors. Default 10. .It Fl n The host data file is in .Dq native format. This is a format that .Nm will be able to process, but is not portable or readable. .It Fl r Ar row_term The row terminator for a character file. May be more than one character. Default is newline ('\\n'). Cf\&. .Fl c Ns , above. .It Fl t Ar field_term The field terminator for character file. Also known as a column delimiter. May be more than one character. Default is tab ('\\t'). Cf\&. .Fl c Ns , above. .It Fl v .It Fl V Print the version information and exit. .It Fl i Ar inputfile Read input data from file specified. .It Fl o Ar outputfile Write output data to file specified. .It Fl C Ar charset Specify character set to use to talk to server. .El .Sh ENVIRONMENT .Ev DSQUERY default .Ar servername .\" .Sh NOTES When connecting to a Sybase database server, it is required that the TDS 5.0 protocol be used. When connecting to a Microsoft SQL Server 2000 database server, the TDS\ 7 (or later) protocol is required. .Pp Sybase and Microsoft define different versions of the bcp portion of TDS 4.2. Because FreeTDS has no way of knowing which type of server it's connected to, .Nm does not support version 4.2 of the TDS protocol. .\" .Sh HISTORY .Nm first appeared in FreeTDS 0.60 .Sh AUTHORS The .Nm utility was written by .An Bill Thompson Aq thompbil@exchange.uk.ml.com .Sh BUGS Currently, there is no support for text data types in .Nm Ns , when SQL Server 2000 is the target server. PK!s99fisql.1nu[.\" cf. groff_mdoc .Dd March 25, 2015 .Os FreeTDS 1.5.16 .Dt FISQL FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME .Nm fisql .Nd interactive SQL shell .\" .Sh SYNOPSIS .Pp .Nm .Op Fl eFgpnvXY .Op Fl a Ar display_charset .Op Fl A Ar packet_size .Op Fl c Ar cmdend .Op Fl D Ar database .Op Fl E Ar editor .Op Fl h Ar headers .Op Fl H Ar hostname .Op Fl i Ar inputfile .Op Fl I Ar interfaces_file .Op Fl J Ar client_charset .Op Fl l Ar login_timeout .Op Fl m Ar errorlevel .Op Fl o Ar outputfile .Op Fl P Ar password .Op Fl s Ar colseparator .Op Fl S Ar server .Op Fl t Ar timeout .Op Fl U Ar username .Op Fl w Ar width .Op Fl y Ar sybase_dir .Op Fl z Ar language .\" .Sh DESCRIPTION .Pp .Nm is very similar to the .Ql isql utility programs distributed by Sybase and Microsoft. Like them, .Nm uses the command .Ql go on a line by itself as a separator between batches. .\" .Sh OPTIONS .Bl -tag -width indent .It Fl a Ar display_charset The client charset name. Not implemented. .It Fl A Ar packet_size Set protocol packet size. You should not need to set this parameter. .It Fl c Ar cmdend Command terminator, defaults to .Ql go Ns . .It Fl D Database name on the server to use. .It Fl e Echo SQL input (usually in outputfile) .It Fl E Ar editor Specify an editor to invoke. Defaults to vi. .It Fl F FIPS mode ON. Server returns a message (but processes the query anyway) when it encounters a non-standard SQL command. .It Fl g Display a brief help message .It Fl h Ar headers Number of rows after which to repeat the column headers. Default is once per resultset. .It Fl H Ar hostname Hostname of the client machine as it will be told to the server. .It Fl I Ar interfaces_file Name of the interfaces or freetds.conf file to use. .It Fl i Ar inputfile Name of script file, containing SQL. .It Fl J Ar client_charset Not implemented. .It Fl l Ar login_timeout How long to wait for the server to acknowledge a login attempt. .It Fl m Ar errorlevel For errors of the severity level specified or higher, print only the message number, state, and error level. Below that level, print nothing. .It Fl n Suppress line numbers in echoed output. .It Fl o Ar outputfile Name of output file, holding result data. .It Fl p Prints performance statistics. Not implemented. .It Fl P Ar password Database server password. .It Fl s Ar colseparator The column separator. Default is space. Shell metacharacters require quoting. .It Fl S Ar server Database server to which to connect. .It Fl t Ar timeout The query timeout, in seconds. How long to wait for a query to be processed. The default is indefinitely, or as determined by freetds.conf. .It Fl U Ar username Database server login name. .It Fl v Display version and copyright. .It Fl w Ar width How many characters wide to print the output. Defaults to 80. .It Fl X Use encrypted login. Not implemented in FreeTDS. .It Fl y Pa sybase_dir Sets the .Ev SYBASE environment variable. Not used by FreeTDS. .It Fl Y Use chained transactions. .It Fl z Ar language Name of a language for fisql's prompts and messages. Cf. DBSETLNATLANG. .El .\" .Sh NOTES .Nm is a filter; it reads from standard input, writes to standard output, and writes errors to standard error. The .Fl i Ns , .Fl o Ns , and .Fl e options override these defaults. .Pp .Nm uses the DB-Library API provided by FreeTDS. It was first implemented using Sybase's own library and continues to work with it. Before (and after) modifying it, it would be well to test it with Sybase's library to assure compatibility between it and FreeTDS. EXIT STATUS .Pp .Nm exits 0 on success, and >0 if the server cannot process the query. .Pp .Nm will report any errors returned by the server, but will continue processing. In a production environment, this behavior may be insufficiently stringent. To make it extremely intolerant of errors, change the message and error handlers to call exit(3). .\" .Sh HISTORY .Nm first appeared in FreeTDS 0.65. .\" .Sh AUTHORS The .Nm utility was written by .An Nicholas S. Castellano Aq entropy@freetds.org Ns , who contributed it to the FreeTDS project under the terms of the GPL. .\" .Sh BUGS Requires the GNU readline library. PK!%ߜ tsql.1nu[.\" cf. groff_mdoc .Dd March 25, 2015 .Os FreeTDS 1.5.16 .Dt TSQL FreeTDS "FreeTDS Reference Manual" .Sh NAME .Nm tsql .Nd utility to test FreeTDS connections and queries .Sh SYNOPSIS .Nm .Bro .Fl S Ar servername .Op Fl I Ar interface | .Fl H Ar hostname .Op Fl L .Op Fl p Ar port .Brc .Op Fl D Ar dbname .Op Fl U Ar username .Op Fl P Ar password .Op Fl o Ar options .Nm .Fl C .Sh DESCRIPTION .Nm is a FreeTDS diagnostic tool. It uses the TDS protocol to connect to a Sybase or Microsoft SQL Server, and lets the user issue queries. .Nm does not use the FreeTDS client libraries. Instead, it uses only the lowest level library, libtds, to test the protocol implementation. .Pp .Nm can be run in two ways, one which uses the freetds.conf and one which connects directly using the server's hostname and port. The .Fl H and .Fl p parameters are provided to let the user verify a server is listening on the named host and port. These parameters override any configuration files and environment variables. The .Fl S parameter can be used to test the local configuration. FreeTDS will use freetds.conf (or equivalent) and environment variables in the normal way to determine the server's IP address and port. You can use .Fl I to specify a filename, overriding FreeTDS's configuration file search algorithm. .Sh OPTIONS .Bl -tag -width indent .It Fl S Ar servername database server to which to connect. .It Fl D Ar dbname database to use. .It Fl I Ar interface freetds.conf or interfaces file describing servername. .It Fl H Ar hostname DNS hostname of the server. .It Fl p Ar port port at which SQL Server is listening. .It Fl U Ar username database login name. If username is not provided, a domain login is attempted for TDS 7+ connections. .It Fl P Ar password database password. .It Fl L list Microsoft server instances (with .Fl H Ns ). .It Fl C print some of the compile-time configuration parameters. .It Fl o Ar options apply the options specified to every command. .Bl -tag -width indent .It Fl f No footer .Bq result count .It Fl h No header .Bq titles .It Fl t Print time .It Fl v Print version .It Fl q Quiet .El .It Fl a Ar appname application name. .It Fl t Ar colterm column terminator. .It Fl r Ar rowterm row terminator. .It Fl r Ar rowterm row terminator. .It Fl J Ar charset character set. .It Fl v verbose mode. .El .\" .Sh NOTES If you can connect with .Ql tsql -S servername Ns , your basic FreeTDS installation is working. .Pp Typing .Ql exit Ns , .Ql quit Ns , or .Ql bye (or .Li ^D Ns ) exits .Nm Ns . .Pp Typing .Ql version displays the TDS protocol version. .Pp Command batches may be separated with .Ql go or .Ql GO Ns . If .Ql GO the version string is reported before executing the batch. .Pp After prompting for the password (if not provided with .Fl P Ns ), .Nm will attempt to connect to the remote server. .Nm displays a counter indicating the number of seconds elapsed during the connection attempt. Typically, .Nm immediately responds with a .Ql 1> prompt. If you see the counter (1, 2, 3, ...), most likely .Nm is unable to connect to the indicated server. .Pp .Nm is not a replacement for a complete isql such as sqsh (www.sqsh.org). If you have suggestions for ways to make .Nm more useful as a diagnostic tool, please post them to the FreeTDS mailing list for consideration. .Sh HISTORY .Nm first appeared in FreeTDS 0.60. .Sh AUTHORS The .Nm utility was written by .An Brian Bruns Ns . .Sh BUGS Several, to be sure, now that it's documented. :) PK! 'Wosql.1nu[.\" cf. groff_mdoc .Dd April 26, 2012 .Os FreeTDS 1.5.16 .Dt OSQL FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME .Nm osql .Nd utility to test FreeTDS connections and queries .\" .Sh SYNOPSIS .Pp .Nm .Fl S Ar dsn .Fl U Ar username .Fl P Ar password .Op Fl I Pa ini_directory .\" .Sh DESCRIPTION .Pp .Nm is a diagnostic tool provided as part of FreeTDS. It is a Bourne shell script that checks and reports on your configuration files. If everything checks out OK, it invokes isql. .Pp .Nm works only with the isql that comes with unixODBC. .\" .Sh OPTIONS .Bl -tag -width indent .It Fl S Ar dsn the Data Source Name to which to connect, as known to .Pa odbc.ini Ns . .It Fl U Ar username database login name. .It Fl P Ar password database password. .It Fl I Ar ini_dir override .Pa odbc.ini file location. .El .\" .Sh EXAMPLE If you have an .Pa odbc.ini with a section like this: .Bd -literal -offset indent .Bq myDSN servername = myserver TDS_Version = 5.0 .Ed .Pp You would invoke .Nm as: .Pp .Li osql -S myDSN .Op .\|.\|.\& .\" .Sh FILES .Pa odbc.ini .Pa freetds.conf .\" .Sh NOTES If you can connect with .Ql osql -S servername -U user -P passwd Ns , your FreeTDS ODBC installation is working. .Pp .Nm guesses where unixODBC might look for its .Pa odbc.ini by examining the binary. This is not always an effective approach. If it doesn't work, you'll receive a report of candidate strings. Kindly pass along the output to help improve the guessing. .Pp If .Nm cannot intuit your .Pa odbc.ini directory, you can force the issue with the .Fl I option. However, you're then instructing .Nm what to test, not where unixODBC will eventually look. Your override is therefore only as good as you are. Look carefully at the error output before overriding. .Pp If you have suggestions for ways to make .Nm more useful as a diagnostic tool, please post them to the FreeTDS mailing list. .\" .Sh HISTORY .Nm first appeared in FreeTDS 0.65. .\" .Sh AUTHORS The .Nm utility was written by .An James K. Lowden Ns . PK!& fEE nosetests.1nu[.\" Man page generated from reStructuredText. . .TH "NOSETESTS" "1" "April 04, 2015" "1.3" "nose" .SH NAME nosetests \- Nicer testing for Python . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH NICER TESTING FOR PYTHON .SS SYNOPSIS .INDENT 0.0 .INDENT 3.5 nosetests [options] [names] .UNINDENT .UNINDENT .SS DESCRIPTION .sp nose collects tests automatically from python source files, directories and packages found in its working directory (which defaults to the current working directory). Any python source file, directory or package that matches the testMatch regular expression (by default: \fI(?:^|[b_.\-])[Tt]est)\fP will be collected as a test (or source for collection of tests). In addition, all other packages found in the working directory will be examined for python source files or directories that match testMatch. Package discovery descends all the way down the tree, so package.tests and package.sub.tests and package.sub.sub2.tests will all be collected. .sp Within a test directory or package, any python source file matching testMatch will be examined for test cases. Within a test module, functions and classes whose names match testMatch and TestCase subclasses with any name will be loaded and executed as tests. Tests may use the assert keyword or raise AssertionErrors to indicate test failure. TestCase subclasses may do the same or use the various TestCase methods available. .sp \fBIt is important to note that the default behavior of nose is to not include tests from files which are executable.\fP To include tests from such files, remove their executable bit or use the \-\-exe flag (see \(aqOptions\(aq section below). .SS Selecting Tests .sp To specify which tests to run, pass test names on the command line: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C nosetests only_test_this.py .ft P .fi .UNINDENT .UNINDENT .sp Test names specified may be file or module names, and may optionally indicate the test case to run by separating the module or file name from the test case name with a colon. Filenames may be relative or absolute. Examples: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C nosetests test.module nosetests another.test:TestCase.test_method nosetests a.test:TestCase nosetests /path/to/test/file.py:test_function .ft P .fi .UNINDENT .UNINDENT .sp You may also change the working directory where nose looks for tests by using the \-w switch: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C nosetests \-w /path/to/tests .ft P .fi .UNINDENT .UNINDENT .sp Note, however, that support for multiple \-w arguments is now deprecated and will be removed in a future release. As of nose 0.10, you can get the same behavior by specifying the target directories \fIwithout\fP the \-w switch: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C nosetests /path/to/tests /another/path/to/tests .ft P .fi .UNINDENT .UNINDENT .sp Further customization of test selection and loading is possible through the use of plugins. .sp Test result output is identical to that of unittest, except for the additional features (error classes, and plugin\-supplied features such as output capture and assert introspection) detailed in the options below. .SS Configuration .sp In addition to passing command\-line options, you may also put configuration options in your project\(aqs \fIsetup.cfg\fP file, or a .noserc or nose.cfg file in your home directory. In any of these standard ini\-style config files, you put your nosetests configuration in a \fB[nosetests]\fP section. Options are the same as on the command line, with the \-\- prefix removed. For options that are simple switches, you must supply a value: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C [nosetests] verbosity=3 with\-doctest=1 .ft P .fi .UNINDENT .UNINDENT .sp All configuration files that are found will be loaded and their options combined. You can override the standard config file loading with the \fB\-c\fP option. .SS Using Plugins .sp There are numerous nose plugins available via easy_install and elsewhere. To use a plugin, just install it. The plugin will add command line options to nosetests. To verify that the plugin is installed, run: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C nosetests \-\-plugins .ft P .fi .UNINDENT .UNINDENT .sp You can add \-v or \-vv to that command to show more information about each plugin. .sp If you are running nose.main() or nose.run() from a script, you can specify a list of plugins to use by passing a list of plugins with the plugins keyword argument. .SS 0.9 plugins .sp nose 1.0 can use SOME plugins that were written for nose 0.9. The default plugin manager inserts a compatibility wrapper around 0.9 plugins that adapts the changed plugin api calls. However, plugins that access nose internals are likely to fail, especially if they attempt to access test case or test suite classes. For example, plugins that try to determine if a test passed to startTest is an individual test or a suite will fail, partly because suites are no longer passed to startTest and partly because it\(aqs likely that the plugin is trying to find out if the test is an instance of a class that no longer exists. .SS 0.10 and 0.11 plugins .sp All plugins written for nose 0.10 and 0.11 should work with nose 1.0. .SS Options .INDENT 0.0 .TP .B \-V, \-\-version Output nose version and exit .UNINDENT .INDENT 0.0 .TP .B \-p, \-\-plugins Output list of available plugins and exit. Combine with higher verbosity for greater detail .UNINDENT .INDENT 0.0 .TP .B \-v=DEFAULT, \-\-verbose=DEFAULT Be more verbose. [NOSE_VERBOSE] .UNINDENT .INDENT 0.0 .TP .B \-\-verbosity=VERBOSITY Set verbosity; \-\-verbosity=2 is the same as \-v .UNINDENT .INDENT 0.0 .TP .B \-q=DEFAULT, \-\-quiet=DEFAULT Be less verbose .UNINDENT .INDENT 0.0 .TP .B \-c=FILES, \-\-config=FILES Load configuration from config file(s). May be specified multiple times; in that case, all config files will be loaded and combined .UNINDENT .INDENT 0.0 .TP .B \-w=WHERE, \-\-where=WHERE Look for tests in this directory. May be specified multiple times. The first directory passed will be used as the working directory, in place of the current working directory, which is the default. Others will be added to the list of tests to execute. [NOSE_WHERE] .UNINDENT .INDENT 0.0 .TP .B \-\-py3where=PY3WHERE Look for tests in this directory under Python 3.x. Functions the same as \(aqwhere\(aq, but only applies if running under Python 3.x or above. Note that, if present under 3.x, this option completely replaces any directories specified with \(aqwhere\(aq, so the \(aqwhere\(aq option becomes ineffective. [NOSE_PY3WHERE] .UNINDENT .INDENT 0.0 .TP .B \-m=REGEX, \-\-match=REGEX, \-\-testmatch=REGEX Files, directories, function names, and class names that match this regular expression are considered tests. Default: (?:^|[b_./\-])[Tt]est [NOSE_TESTMATCH] .UNINDENT .INDENT 0.0 .TP .B \-\-tests=NAMES Run these tests (comma\-separated list). This argument is useful mainly from configuration files; on the command line, just pass the tests to run as additional arguments with no switch. .UNINDENT .INDENT 0.0 .TP .B \-l=DEFAULT, \-\-debug=DEFAULT Activate debug logging for one or more systems. Available debug loggers: nose, nose.importer, nose.inspector, nose.plugins, nose.result and nose.selector. Separate multiple names with a comma. .UNINDENT .INDENT 0.0 .TP .B \-\-debug\-log=FILE Log debug messages to this file (default: sys.stderr) .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-config=FILE, \-\-log\-config=FILE Load logging config from this file \-\- bypasses all other logging config settings. .UNINDENT .INDENT 0.0 .TP .B \-I=REGEX, \-\-ignore\-files=REGEX Completely ignore any file that matches this regular expression. Takes precedence over any other settings or plugins. Specifying this option will replace the default setting. Specify this option multiple times to add more regular expressions [NOSE_IGNORE_FILES] .UNINDENT .INDENT 0.0 .TP .B \-e=REGEX, \-\-exclude=REGEX Don\(aqt run tests that match regular expression [NOSE_EXCLUDE] .UNINDENT .INDENT 0.0 .TP .B \-i=REGEX, \-\-include=REGEX This regular expression will be applied to files, directories, function names, and class names for a chance to include additional tests that do not match TESTMATCH. Specify this option multiple times to add more regular expressions [NOSE_INCLUDE] .UNINDENT .INDENT 0.0 .TP .B \-x, \-\-stop Stop running tests after the first error or failure .UNINDENT .INDENT 0.0 .TP .B \-P, \-\-no\-path\-adjustment Don\(aqt make any changes to sys.path when loading tests [NOSE_NOPATH] .UNINDENT .INDENT 0.0 .TP .B \-\-exe Look for tests in python modules that are executable. Normal behavior is to exclude executable modules, since they may not be import\-safe [NOSE_INCLUDE_EXE] .UNINDENT .INDENT 0.0 .TP .B \-\-noexe DO NOT look for tests in python modules that are executable. (The default on the windows platform is to do so.) .UNINDENT .INDENT 0.0 .TP .B \-\-traverse\-namespace Traverse through all path entries of a namespace package .UNINDENT .INDENT 0.0 .TP .B \-\-first\-package\-wins, \-\-first\-pkg\-wins, \-\-1st\-pkg\-wins nose\(aqs importer will normally evict a package from sys.modules if it sees a package with the same name in a different location. Set this option to disable that behavior. .UNINDENT .INDENT 0.0 .TP .B \-\-no\-byte\-compile Prevent nose from byte\-compiling the source into .pyc files while nose is scanning for and running tests. .UNINDENT .INDENT 0.0 .TP .B \-a=ATTR, \-\-attr=ATTR Run only tests that have attributes specified by ATTR [NOSE_ATTR] .UNINDENT .INDENT 0.0 .TP .B \-A=EXPR, \-\-eval\-attr=EXPR Run only tests for whose attributes the Python expression EXPR evaluates to True [NOSE_EVAL_ATTR] .UNINDENT .INDENT 0.0 .TP .B \-s, \-\-nocapture Don\(aqt capture stdout (any stdout output will be printed immediately) [NOSE_NOCAPTURE] .UNINDENT .INDENT 0.0 .TP .B \-\-nologcapture Disable logging capture plugin. Logging configuration will be left intact. [NOSE_NOLOGCAPTURE] .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-format=FORMAT Specify custom format to print statements. Uses the same format as used by standard logging handlers. [NOSE_LOGFORMAT] .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-datefmt=FORMAT Specify custom date/time format to print statements. Uses the same format as used by standard logging handlers. [NOSE_LOGDATEFMT] .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-filter=FILTER Specify which statements to filter in/out. By default, everything is captured. If the output is too verbose, use this option to filter out needless output. Example: filter=foo will capture statements issued ONLY to foo or foo.what.ever.sub but not foobar or other logger. Specify multiple loggers with comma: filter=foo,bar,baz. If any logger name is prefixed with a minus, eg filter=\-foo, it will be excluded rather than included. Default: exclude logging messages from nose itself (\-nose). [NOSE_LOGFILTER] .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-clear\-handlers Clear all other logging handlers .UNINDENT .INDENT 0.0 .TP .B \-\-logging\-level=DEFAULT Set the log level to capture .UNINDENT .INDENT 0.0 .TP .B \-\-with\-coverage Enable plugin Coverage: Activate a coverage report using Ned Batchelder\(aqs coverage module. [NOSE_WITH_COVERAGE] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-package=PACKAGE Restrict coverage output to selected packages [NOSE_COVER_PACKAGE] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-erase Erase previously collected coverage statistics before run .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-tests Include test modules in coverage report [NOSE_COVER_TESTS] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-min\-percentage=DEFAULT Minimum percentage of coverage for tests to pass [NOSE_COVER_MIN_PERCENTAGE] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-inclusive Include all python files under working directory in coverage report. Useful for discovering holes in test coverage if not all files are imported by the test suite. [NOSE_COVER_INCLUSIVE] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-html Produce HTML coverage information .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-html\-dir=DIR Produce HTML coverage information in dir .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-branches Include branch coverage in coverage report [NOSE_COVER_BRANCHES] .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-xml Produce XML coverage information .UNINDENT .INDENT 0.0 .TP .B \-\-cover\-xml\-file=FILE Produce XML coverage information in file .UNINDENT .INDENT 0.0 .TP .B \-\-pdb Drop into debugger on failures or errors .UNINDENT .INDENT 0.0 .TP .B \-\-pdb\-failures Drop into debugger on failures .UNINDENT .INDENT 0.0 .TP .B \-\-pdb\-errors Drop into debugger on errors .UNINDENT .INDENT 0.0 .TP .B \-\-no\-deprecated Disable special handling of DeprecatedTest exceptions. .UNINDENT .INDENT 0.0 .TP .B \-\-with\-doctest Enable plugin Doctest: Activate doctest plugin to find and run doctests in non\-test modules. [NOSE_WITH_DOCTEST] .UNINDENT .INDENT 0.0 .TP .B \-\-doctest\-tests Also look for doctests in test modules. Note that classes, methods and functions should have either doctests or non\-doctest tests, not both. [NOSE_DOCTEST_TESTS] .UNINDENT .INDENT 0.0 .TP .B \-\-doctest\-extension=EXT Also look for doctests in files with this extension [NOSE_DOCTEST_EXTENSION] .UNINDENT .INDENT 0.0 .TP .B \-\-doctest\-result\-variable=VAR Change the variable name set to the result of the last interpreter command from the default \(aq_\(aq. Can be used to avoid conflicts with the _() function used for text translation. [NOSE_DOCTEST_RESULT_VAR] .UNINDENT .INDENT 0.0 .TP .B \-\-doctest\-fixtures=SUFFIX Find fixtures for a doctest file in module with this name appended to the base name of the doctest file .UNINDENT .INDENT 0.0 .TP .B \-\-doctest\-options=OPTIONS Specify options to pass to doctest. Eg. \(aq+ELLIPSIS,+NORMALIZE_WHITESPACE\(aq .UNINDENT .INDENT 0.0 .TP .B \-\-with\-isolation Enable plugin IsolationPlugin: Activate the isolation plugin to isolate changes to external modules to a single test module or package. The isolation plugin resets the contents of sys.modules after each test module or package runs to its state before the test. PLEASE NOTE that this plugin should not be used with the coverage plugin, or in any other case where module reloading may produce undesirable side\-effects. [NOSE_WITH_ISOLATION] .UNINDENT .INDENT 0.0 .TP .B \-d, \-\-detailed\-errors, \-\-failure\-detail Add detail to error output by attempting to evaluate failed asserts [NOSE_DETAILED_ERRORS] .UNINDENT .INDENT 0.0 .TP .B \-\-with\-profile Enable plugin Profile: Use this plugin to run tests using the hotshot profiler. [NOSE_WITH_PROFILE] .UNINDENT .INDENT 0.0 .TP .B \-\-profile\-sort=SORT Set sort order for profiler output .UNINDENT .INDENT 0.0 .TP .B \-\-profile\-stats\-file=FILE Profiler stats file; default is a new temp file on each run .UNINDENT .INDENT 0.0 .TP .B \-\-profile\-restrict=RESTRICT Restrict profiler output. See help for pstats.Stats for details .UNINDENT .INDENT 0.0 .TP .B \-\-no\-skip Disable special handling of SkipTest exceptions. .UNINDENT .INDENT 0.0 .TP .B \-\-with\-id Enable plugin TestId: Activate to add a test id (like #1) to each test name output. Activate with \-\-failed to rerun failing tests only. [NOSE_WITH_ID] .UNINDENT .INDENT 0.0 .TP .B \-\-id\-file=FILE Store test ids found in test runs in this file. Default is the file .noseids in the working directory. .UNINDENT .INDENT 0.0 .TP .B \-\-failed Run the tests that failed in the last test run. .UNINDENT .INDENT 0.0 .TP .B \-\-processes=NUM Spread test run among this many processes. Set a number equal to the number of processors or cores in your machine for best results. Pass a negative number to have the number of processes automatically set to the number of cores. Passing 0 means to disable parallel testing. Default is 0 unless NOSE_PROCESSES is set. [NOSE_PROCESSES] .UNINDENT .INDENT 0.0 .TP .B \-\-process\-timeout=SECONDS Set timeout for return of results from each test runner process. Default is 10. [NOSE_PROCESS_TIMEOUT] .UNINDENT .INDENT 0.0 .TP .B \-\-process\-restartworker If set, will restart each worker process once their tests are done, this helps control memory leaks from killing the system. [NOSE_PROCESS_RESTARTWORKER] .UNINDENT .INDENT 0.0 .TP .B \-\-with\-xunit Enable plugin Xunit: This plugin provides test results in the standard XUnit XML format. [NOSE_WITH_XUNIT] .UNINDENT .INDENT 0.0 .TP .B \-\-xunit\-file=FILE Path to xml file to store the xunit report in. Default is nosetests.xml in the working directory [NOSE_XUNIT_FILE] .UNINDENT .INDENT 0.0 .TP .B \-\-xunit\-testsuite\-name=PACKAGE Name of the testsuite in the xunit xml, generated by plugin. Default test suite name is nosetests. .UNINDENT .INDENT 0.0 .TP .B \-\-all\-modules Enable plugin AllModules: Collect tests from all python modules. [NOSE_ALL_MODULES] .UNINDENT .INDENT 0.0 .TP .B \-\-collect\-only Enable collect\-only: Collect and output test names only, don\(aqt run any tests. [COLLECT_ONLY] .UNINDENT .SH AUTHOR Nose developers .SH COPYRIGHT 2009, Jason Pellerin .\" Generated by docutils manpage writer. . PK!S|__dpkg-split.1.gznu[PK!{cDDdpkg-divert.1.gznu[PK!5o "!dpkg-trigger.1.gznu[PK!xTb,dpkg-maintscript-helper.1.gznu[PK!QSS LCmanconv.1.gznu[PK!5’Gdpkg-query.1.gznu[PK!Y=88 bdpkg-deb.1.gznu[PK![ :yzsoelim.1.gznu[PK!", =~lexgrog.1.gznu[PK!0}HH dpkg.1.gznu[PK!U manpath.1.gznu[PK!̱(&dpkg-statoverride.1.gznu[PK!kodpkg-realpath.1.gznu[PK!Y Y {whatis.1.gznu[PK!L}4}4man.1.gznu[PK! ]n .apropos.1.gznu[PK!8vc :gpasswd.1.gznu[PK! @newgrp.1.gznu[PK!jhhDsg.1.gznu[PK!  Hchage.1.gznu[PK!dWW display.1nu[PK! l4747+ cwebp.1nu[PK!c Awebpmux.1nu[PK!}xx \img2webp.1nu[PK!6 ^ocomposite.1nu[PK!Ah6II (mogrify.1nu[PK!$import.1nu[PK!"M Egif2webp.1nu[PK!Н  vwebp.1nu[PK!UIK:  irb.1nu[PK!Pbaa heif-info.1nu[PK!x8 bheif-dec.1nu[PK!?` 1"heif-enc.1nu[PK!z0+heif-thumbnailer.1nu[PK!Lmf%/npm-start.1.gznu[PK!Rj'' 1npm-adduser.1.gznu[PK!+m!! r6makeconv.1.gznu[PK!*^?$<npm-doctor.1.gznu[PK! Enode.1.gznu[PK!py  Ynpm-bin.1.gznu[PK!;HHZnpm-search.1.gznu[PK!uhhl`npm-update.1.gznu[PK!e Ϡ\\ fgenbrk.1.gznu[PK! knpm-logout.1.gznu[PK!_x Cnnpm-dedupe.1.gznu[PK!:II qnpm-ping.1.gznu[PK!FGYsnpm-prefix.1.gznu[PK!!zunpm-prune.1.gznu[PK!N\^zz  xnpm-team.1.gznu[PK!>]dd {npm-star.1.gznu[PK!5rxxx}npm-build.1.gznu[PK!L L .uconv.1.gznu[PK!> pkgdata.1.gznu[PK!/P4`RR npm-docs.1.gznu[PK!K\\5npm-stars.1.gznu[PK!Y]NNϛnpm-profile.1.gznu[PK!\]npm-run-script.1.gznu[PK!: 7npm-ci.1.gznu[PK!ˊ## bgendict.1.gznu[PK!Qnpm-install-ci-test.1.gznu[PK!9 npm.1.gznu[PK!7ۼnpm-publish.1.gznu[PK!@@@ npm-ls.1.gznu[PK!ww  npx.1.gznu[PK!]ڮ0Unpm-whoami.1.gznu[PK!F!! derb.1.gznu[PK!npm-token.1.gznu[PK!npm-outdated.1.gznu[PK!xXh+npm-README.1.gznu[PK!3Ky<< Cnpm-pack.1.gznu[PK!ᒀ,, npm-init.1.gznu[PK!(f %npm-stop.1.gznu[PK!nE55 \gencnval.1.gznu[PK!V$npm-restart.1.gznu[PK! npm-repo.1.gznu[PK!D  npm-link.1.gznu[PK!'jP'' npm-bundle.1.gznu[PK!^0^^ v npm-edit.1.gznu[PK!0^;; npm-cache.1.gznu[PK!--  npm-help.1.gznu[PK!J& npm-unpublish.1.gznu[PK!* aa: npm-dist-tag.1.gznu[PK!v   npm-help-search.1.gznu[PK!GZW   ) gencfu.1.gznu[PK!&] p! npm-hook.1.gznu[PK!}葜>% npm-owner.1.gznu[PK!,/ ( genrb.1.gznu[PK!Rm. npm-version.1.gznu[PK! 7 npm-install-test.1.gznu[PK!s8 npm-install.1.gznu[PK! O npm-test.1.gznu[PK!zP npm-shrinkwrap.1.gznu[PK!66 R npm-bugs.1.gznu[PK!cJvbU npm-audit.1.gznu[PK!z[ npm-completion.1.gznu[PK!\ALLL] npm-rebuild.1.gznu[PK!uAa_ npm-uninstall.1.gznu[PK!EBRb npm-config.1.gznu[PK!Ae npm-access.1.gznu[PK!_CcEEj npm-explore.1.gznu[PK!ae00fm npm-deprecate.1.gznu[PK!2 o npm-root.1.gznu[PK!JA   q npm-org.1.gznu[PK!v`aa `s npm-view.1.gznu[PK!sBx jose-jws-sig.1.gznu[PK!7& jose-jwe-enc.1.gznu[PK!A:TBB jose-jwk-thp.1.gznu[PK!2UU  jose-fmt.1.gznu[PK!H(( jose-jwk-exc.1.gznu[PK!C} jose-jwk-use.1.gznu[PK![ט jose-jwk-gen.1.gznu[PK! jose-jwk-pub.1.gznu[PK!>( nghttp.1nu[PK!ܒcc ٻ nghttpx.1nu[PK!`)G%=%= h2load.1nu[PK!  ] nghttpd.1nu[PK!=> > s version.htmlnu[PK!"WNSNS | ocsp.htmlnu[PK!  pkcs7.htmlnu[PK!Q%%  s_time.htmlnu[PK!z  tsget.htmlnu[PK!>OeeQ( ec.htmlnu[PK!:񄲂 G s_server.htmlnu[PK!Q8@w@w cms.htmlnu[PK!,~~ TB dsaparam.htmlnu[PK!^ V nseq.htmlnu[PK!+Vy 5c gendsa.htmlnu[PK!w" qs sess_id.htmlnu[PK!us9&IBIB} enc.htmlnu[PK!QMM  ciphers.htmlnu[PK!>nC Zx509.htmlnu[PK!/{@dsa.htmlnu[PK!{EpRR smime.htmlnu[PK!`  [prime.htmlnu[PK!wM Jeasn1parse.htmlnu[PK!K@ 7 7 Kpkeyutl.htmlnu[PK!w srp.htmlnu[PK!{ dhparam.htmlnu[PK!Byrsa.htmlnu[PK!O4cc storeutl.htmlnu[PK!KI{{(ca.htmlnu[PK!;j;jts.htmlnu[PK!J$#$# Sdgst.htmlnu[PK!]`2p2preq.htmlnu[PK!qA%A% CA.pl.htmlnu[PK!JƤ pkey.htmlnu[PK!MM rrsautl.htmlnu[PK!u5 rehash.htmlnu[PK!(ff ecparam.htmlnu[PK!gA77 lgenpkey.htmlnu[PK!x== Upkcs12.htmlnu[PK!SS ȓrand.htmlnu[PK!?t۬Tcrl.htmlnu[PK!%W. 8passwd.htmlnu[PK!H;; Zverify.htmlnu[PK!~ ~ Flist.htmlnu[PK!bWTcrl2pkcs7.htmlnu[PK!݀8 zeengine.htmlnu[PK!ZZ vspkac.htmlnu[PK!fi i 9pkeyparam.htmlnu[PK!:SS openssl.htmlnu[PK!~kii errstr.htmlnu[PK!-44 pkcs8.htmlnu[PK!8Y{{ +genrsa.htmlnu[PK!DE I@speed.htmlnu[PK!؅}} >Ps_client.htmlnu[PK!,n''dsa.1nu[PK!Ff$f$ Kdhparam.1nu[PK!(&&errstr.1nu[PK!MX^X^:ocsp.1nu[PK!ngendsa.1nu[PK!שjjpkcs7.1nu[PK!TT 7c_rehash.1nu[PK!ؔspeed.1nu[PK!g}.}. dgst.1nu[PK!*;passwd.1nu[PK!KձppXts.1nu[PK!)W]VȂȂca.1nu[PK!\cIeKcrl.1nu[PK!xl .jcrl2pkcs7.1nu[PK!'7Q0Q0yCA.pl.1nu[PK!%< < genrsa.1nu[PK!xM>> ugenpkey.1nu[PK!%~nnseq.1nu[PK!>Npkcs8.1nu[PK!y$'' ecparam.1nu[PK!Mbii version.1nu[PK!+{MMAenc.1nu[PK!H))Irsa.1nu[PK!|*Cverify.1nu[PK!۲؉wwIreq.1nu[PK!Ȉh#h# ?sess_id.1nu[PK!Yb<\<\9csmime.1nu[PK!V{,,tsget.1nu[PK!z ccms.1nu[PK!K>#>#lpkey.1nu[PK!饲 pkeyparam.1nu[PK! lsrand.1nu[PK!g6// s_server.1nu[PK!MEBB AMdsaparam.1nu[PK!0c0c0ls_time.1nu[PK!q""Xspkac.1nu[PK!j\T\T openssl.1nu[PK!ȳ++ Aasn1parse.1nu[PK!˥**F@ec.1nu[PK!@@ kciphers.1nu[PK!**rsautl.1nu[PK!' +s_client.1nu[PK!NJݼengine.1nu[PK!]gG"G"rehash.1nu[PK!"q--Jsrp.1nu[PK!"bb list.1nu[PK!D- prime.1nu[PK!s& C storeutl.1nu[PK!t t &a datacopy.1nu[PK! j bsqldb.1nu[PK!R#ZP P x bsqlodbc.1nu[PK!;ӛ< < K defncopy.1nu[PK!  freebcp.1nu[PK!s99ʥ fisql.1nu[PK!%ߜ : tsql.1nu[PK! 'W osql.1nu[PK!& fEE  nosetests.1nu[PK!!"Uh!