OPENSSL_s390xcap.3ossl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  2. .\"
  3. .\" Standard preamble:
  4. .\" ========================================================================
  5. .de Sp \" Vertical space (when we can't use .PP)
  6. .if t .sp .5v
  7. .if n .sp
  8. ..
  9. .de Vb \" Begin verbatim text
  10. .ft CW
  11. .nf
  12. .ne \\$1
  13. ..
  14. .de Ve \" End verbatim text
  15. .ft R
  16. .fi
  17. ..
  18. .\" Set up some character translations and predefined strings. \*(-- will
  19. .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
  20. .\" double quote, and \*(R" will give a right double quote. \*(C+ will
  21. .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
  22. .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
  23. .\" nothing in troff, for use with C<>.
  24. .tr \(*W-
  25. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  26. .ie n \{\
  27. . ds -- \(*W-
  28. . ds PI pi
  29. . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  30. . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  31. . ds L" ""
  32. . ds R" ""
  33. . ds C` ""
  34. . ds C' ""
  35. 'br\}
  36. .el\{\
  37. . ds -- \|\(em\|
  38. . ds PI \(*p
  39. . ds L" ``
  40. . ds R" ''
  41. . ds C`
  42. . ds C'
  43. 'br\}
  44. .\"
  45. .\" Escape single quotes in literal strings from groff's Unicode transform.
  46. .ie \n(.g .ds Aq \(aq
  47. .el .ds Aq '
  48. .\"
  49. .\" If the F register is >0, we'll generate index entries on stderr for
  50. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  51. .\" entries marked with X<> in POD. Of course, you'll have to process the
  52. .\" output yourself in some meaningful fashion.
  53. .\"
  54. .\" Avoid warning from groff about undefined register 'F'.
  55. .de IX
  56. ..
  57. .nr rF 0
  58. .if \n(.g .if rF .nr rF 1
  59. .if (\n(rF:(\n(.g==0)) \{\
  60. . if \nF \{\
  61. . de IX
  62. . tm Index:\\$1\t\\n%\t"\\$2"
  63. ..
  64. . if !\nF==2 \{\
  65. . nr % 0
  66. . nr F 2
  67. . \}
  68. . \}
  69. .\}
  70. .rr rF
  71. .\"
  72. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  73. .\" Fear. Run. Save yourself. No user-serviceable parts.
  74. . \" fudge factors for nroff and troff
  75. .if n \{\
  76. . ds #H 0
  77. . ds #V .8m
  78. . ds #F .3m
  79. . ds #[ \f1
  80. . ds #] \fP
  81. .\}
  82. .if t \{\
  83. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  84. . ds #V .6m
  85. . ds #F 0
  86. . ds #[ \&
  87. . ds #] \&
  88. .\}
  89. . \" simple accents for nroff and troff
  90. .if n \{\
  91. . ds ' \&
  92. . ds ` \&
  93. . ds ^ \&
  94. . ds , \&
  95. . ds ~ ~
  96. . ds /
  97. .\}
  98. .if t \{\
  99. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  100. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  101. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  102. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  103. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  104. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  105. .\}
  106. . \" troff and (daisy-wheel) nroff accents
  107. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  108. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  109. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  110. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  111. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  112. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  113. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  114. .ds ae a\h'-(\w'a'u*4/10)'e
  115. .ds Ae A\h'-(\w'A'u*4/10)'E
  116. . \" corrections for vroff
  117. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  118. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  119. . \" for low resolution devices (crt and lpr)
  120. .if \n(.H>23 .if \n(.V>19 \
  121. \{\
  122. . ds : e
  123. . ds 8 ss
  124. . ds o a
  125. . ds d- d\h'-1'\(ga
  126. . ds D- D\h'-1'\(hy
  127. . ds th \o'bp'
  128. . ds Th \o'LP'
  129. . ds ae ae
  130. . ds Ae AE
  131. .\}
  132. .rm #[ #] #H #V #F C
  133. .\" ========================================================================
  134. .\"
  135. .IX Title "OPENSSL_S390XCAP 3ossl"
  136. .TH OPENSSL_S390XCAP 3ossl "2024-09-03" "3.3.2" "OpenSSL"
  137. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  138. .\" way too many mistakes in technical documents.
  139. .if n .ad l
  140. .nh
  141. .SH "NAME"
  142. OPENSSL_s390xcap \- the IBM z processor capabilities vector
  143. .SH "SYNOPSIS"
  144. .IX Header "SYNOPSIS"
  145. .Vb 1
  146. \& env OPENSSL_s390xcap=... <application>
  147. .Ve
  148. .SH "DESCRIPTION"
  149. .IX Header "DESCRIPTION"
  150. libcrypto supports z/Architecture instruction set extensions. These
  151. extensions are denoted by individual bits in the capabilities vector.
  152. When libcrypto is initialized, the bits returned by the \s-1STFLE\s0 instruction
  153. and by the \s-1QUERY\s0 functions are stored in the vector.
  154. .PP
  155. To change the set of instructions available to an application, you can
  156. set the \fBOPENSSL_s390xcap\fR environment variable before you start the
  157. application. After initialization, the capability vector is ANDed bitwise
  158. with a mask which is derived from the environment variable.
  159. .PP
  160. The environment variable is a semicolon-separated list of tokens which is
  161. processed from left to right (whitespace is ignored):
  162. .PP
  163. .Vb 1
  164. \& OPENSSL_s390xcap="<tok1>;<tok2>;..."
  165. .Ve
  166. .PP
  167. There are four types of tokens:
  168. .IP "<string>" 4
  169. .IX Item "<string>"
  170. The name of a processor generation. A bit in the environment variable's
  171. mask is set to one if and only if the specified processor generation
  172. implements the corresponding instruction set extension. Possible values
  173. are \fBz900\fR, \fBz990\fR, \fBz9\fR, \fBz10\fR, \fBz196\fR, \fBzEC12\fR, \fBz13\fR, \fBz14\fR,
  174. \&\fBz15\fR, and \fBz16\fR.
  175. .IP "<string>:<mask>:<mask>" 4
  176. .IX Item "<string>:<mask>:<mask>"
  177. The name of an instruction followed by two 64\-bit masks. The part of the
  178. environment variable's mask corresponding to the specified instruction is
  179. set to the specified 128\-bit mask. Possible values are \fBkimd\fR, \fBklmd\fR,
  180. \&\fBkm\fR, \fBkmc\fR, \fBkmac\fR, \fBkmctr\fR, \fBkmo\fR, \fBkmf\fR, \fBprno\fR, \fBkma\fR, \fBpcc\fR
  181. and \fBkdsa\fR.
  182. .IP "stfle:<mask>:<mask>:<mask>" 4
  183. .IX Item "stfle:<mask>:<mask>:<mask>"
  184. Store-facility-list-extended (stfle) followed by three 64\-bit masks. The
  185. part of the environment variable's mask corresponding to the stfle
  186. instruction is set to the specified 192\-bit mask.
  187. .IP "nocex" 4
  188. .IX Item "nocex"
  189. Deactivate modular exponentiation and \s-1CRT\s0 operation offloading to
  190. Crypto Express Adapters.
  191. .PP
  192. The 64\-bit masks are specified in hexadecimal notation. The 0x prefix is
  193. optional. Prefix a mask with a tilde, \f(CW\*(C`~\*(C'\fR, to denote a bitwise \s-1NOT\s0 operation.
  194. .PP
  195. The following is a list of significant bits for each instruction. Colon
  196. rows separate the individual 64\-bit masks. The bit numbers in the first
  197. column are consistent with [1], that is, 0 denotes the leftmost bit and
  198. the numbering is continuous across 64\-bit mask boundaries.
  199. .PP
  200. .Vb 1
  201. \& Bit Mask Facility/Function
  202. \&
  203. \& stfle:
  204. \& # 17 1<<46 message\-security assist
  205. \& # 25 1<<38 store\-clock\-fast facility
  206. \& :
  207. \& # 76 1<<51 message\-security assist extension 3
  208. \& # 77 1<<50 message\-security assist extension 4
  209. \& :
  210. \& #129 1<<62 vector facility
  211. \& #134 1<<57 vector packed decimal facility
  212. \& #135 1<<56 vector enhancements facility 1
  213. \& #146 1<<45 message\-security assist extension 8
  214. \& #155 1<<36 message\-security assist extension 9
  215. \&
  216. \& kimd :
  217. \& # 1 1<<62 KIMD\-SHA\-1
  218. \& # 2 1<<61 KIMD\-SHA\-256
  219. \& # 3 1<<60 KIMD\-SHA\-512
  220. \& # 32 1<<31 KIMD\-SHA3\-224
  221. \& # 33 1<<30 KIMD\-SHA3\-256
  222. \& # 34 1<<29 KIMD\-SHA3\-384
  223. \& # 35 1<<28 KIMD\-SHA3\-512
  224. \& # 36 1<<27 KIMD\-SHAKE\-128
  225. \& # 37 1<<26 KIMD\-SHAKE\-256
  226. \& :
  227. \& # 65 1<<62 KIMD\-GHASH
  228. \&
  229. \& klmd :
  230. \& # 32 1<<31 KLMD\-SHA3\-224
  231. \& # 33 1<<30 KLMD\-SHA3\-256
  232. \& # 34 1<<29 KLMD\-SHA3\-384
  233. \& # 35 1<<28 KLMD\-SHA3\-512
  234. \& # 36 1<<27 KLMD\-SHAKE\-128
  235. \& # 37 1<<26 KLMD\-SHAKE\-256
  236. \& :
  237. \&
  238. \& km :
  239. \& # 18 1<<45 KM\-AES\-128
  240. \& # 19 1<<44 KM\-AES\-192
  241. \& # 20 1<<43 KM\-AES\-256
  242. \& # 50 1<<13 KM\-XTS\-AES\-128
  243. \& # 52 1<<11 KM\-XTS\-AES\-256
  244. \& :
  245. \&
  246. \& kmc :
  247. \& # 18 1<<45 KMC\-AES\-128
  248. \& # 19 1<<44 KMC\-AES\-192
  249. \& # 20 1<<43 KMC\-AES\-256
  250. \& :
  251. \&
  252. \& kmac :
  253. \& # 18 1<<45 KMAC\-AES\-128
  254. \& # 19 1<<44 KMAC\-AES\-192
  255. \& # 20 1<<43 KMAC\-AES\-256
  256. \& :
  257. \&
  258. \& kmctr:
  259. \& :
  260. \&
  261. \& kmo :
  262. \& # 18 1<<45 KMO\-AES\-128
  263. \& # 19 1<<44 KMO\-AES\-192
  264. \& # 20 1<<43 KMO\-AES\-256
  265. \& :
  266. \&
  267. \& kmf :
  268. \& # 18 1<<45 KMF\-AES\-128
  269. \& # 19 1<<44 KMF\-AES\-192
  270. \& # 20 1<<43 KMF\-AES\-256
  271. \& :
  272. \&
  273. \& prno :
  274. \& :
  275. \&
  276. \& kma :
  277. \& # 18 1<<45 KMA\-GCM\-AES\-128
  278. \& # 19 1<<44 KMA\-GCM\-AES\-192
  279. \& # 20 1<<43 KMA\-GCM\-AES\-256
  280. \& :
  281. \&
  282. \& pcc :
  283. \& :
  284. \& # 64 1<<63 PCC\-Scalar\-Multiply\-P256
  285. \& # 65 1<<62 PCC\-Scalar\-Multiply\-P384
  286. \& # 66 1<<61 PCC\-Scalar\-Multiply\-P521
  287. \& # 72 1<<55 PCC\-Scalar\-Multiply\-Ed25519
  288. \& # 73 1<<54 PCC\-Scalar\-Multiply\-Ed448
  289. \& # 80 1<<47 PCC\-Scalar\-Multiply\-X25519
  290. \& # 81 1<<46 PCC\-Scalar\-Multiply\-X448
  291. \&
  292. \& kdsa :
  293. \& # 1 1<<62 KDSA\-ECDSA\-Verify\-P256
  294. \& # 2 1<<61 KDSA\-ECDSA\-Verify\-P384
  295. \& # 3 1<<60 KDSA\-ECDSA\-Verify\-P521
  296. \& # 9 1<<54 KDSA\-ECDSA\-Sign\-P256
  297. \& # 10 1<<53 KDSA\-ECDSA\-Sign\-P384
  298. \& # 11 1<<52 KDSA\-ECDSA\-Sign\-P521
  299. \& # 32 1<<31 KDSA\-EdDSA\-Verify\-Ed25519
  300. \& # 36 1<<27 KDSA\-EdDSA\-Verify\-Ed448
  301. \& # 40 1<<23 KDSA\-EdDSA\-Sign\-Ed25519
  302. \& # 44 1<<19 KDSA\-EdDSA\-Sign\-Ed448
  303. \& :
  304. .Ve
  305. .SH "RETURN VALUES"
  306. .IX Header "RETURN VALUES"
  307. Not available.
  308. .SH "EXAMPLES"
  309. .IX Header "EXAMPLES"
  310. Disables all instruction set extensions which the z196 processor does not implement:
  311. .PP
  312. .Vb 1
  313. \& OPENSSL_s390xcap="z196"
  314. .Ve
  315. .PP
  316. Disables the vector facility:
  317. .PP
  318. .Vb 1
  319. \& OPENSSL_s390xcap="stfle:~0:~0:~0x4000000000000000"
  320. .Ve
  321. .PP
  322. Disables the KM-XTS-AES and the KIMD-SHAKE function codes:
  323. .PP
  324. .Vb 1
  325. \& OPENSSL_s390xcap="km:~0x2800:~0;kimd:~0xc000000:~0"
  326. .Ve
  327. .SH "SEE ALSO"
  328. .IX Header "SEE ALSO"
  329. [1] z/Architecture Principles of Operation, \s-1SA22\-7832\-12\s0
  330. .SH "COPYRIGHT"
  331. .IX Header "COPYRIGHT"
  332. Copyright 2018\-2023 The OpenSSL Project Authors. All Rights Reserved.
  333. .PP
  334. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  335. this file except in compliance with the License. You can obtain a copy
  336. in the file \s-1LICENSE\s0 in the source distribution or at
  337. <https://www.openssl.org/source/license.html>.