OPENSSL_s390xcap.3ossl 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. .\" -*- mode: troff; coding: utf-8 -*-
  2. .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
  3. .\"
  4. .\" Standard preamble:
  5. .\" ========================================================================
  6. .de Sp \" Vertical space (when we can't use .PP)
  7. .if t .sp .5v
  8. .if n .sp
  9. ..
  10. .de Vb \" Begin verbatim text
  11. .ft CW
  12. .nf
  13. .ne \\$1
  14. ..
  15. .de Ve \" End verbatim text
  16. .ft R
  17. .fi
  18. ..
  19. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  20. .ie n \{\
  21. . ds C` ""
  22. . ds C' ""
  23. 'br\}
  24. .el\{\
  25. . ds C`
  26. . ds C'
  27. 'br\}
  28. .\"
  29. .\" Escape single quotes in literal strings from groff's Unicode transform.
  30. .ie \n(.g .ds Aq \(aq
  31. .el .ds Aq '
  32. .\"
  33. .\" If the F register is >0, we'll generate index entries on stderr for
  34. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  35. .\" entries marked with X<> in POD. Of course, you'll have to process the
  36. .\" output yourself in some meaningful fashion.
  37. .\"
  38. .\" Avoid warning from groff about undefined register 'F'.
  39. .de IX
  40. ..
  41. .nr rF 0
  42. .if \n(.g .if rF .nr rF 1
  43. .if (\n(rF:(\n(.g==0)) \{\
  44. . if \nF \{\
  45. . de IX
  46. . tm Index:\\$1\t\\n%\t"\\$2"
  47. ..
  48. . if !\nF==2 \{\
  49. . nr % 0
  50. . nr F 2
  51. . \}
  52. . \}
  53. .\}
  54. .rr rF
  55. .\" ========================================================================
  56. .\"
  57. .IX Title "OPENSSL_S390XCAP 3ossl"
  58. .TH OPENSSL_S390XCAP 3ossl 2025-01-17 3.4.0 OpenSSL
  59. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  60. .\" way too many mistakes in technical documents.
  61. .if n .ad l
  62. .nh
  63. .SH NAME
  64. OPENSSL_s390xcap \- the IBM z processor capabilities vector
  65. .SH SYNOPSIS
  66. .IX Header "SYNOPSIS"
  67. .Vb 1
  68. \& env OPENSSL_s390xcap=... <application>
  69. .Ve
  70. .SH DESCRIPTION
  71. .IX Header "DESCRIPTION"
  72. libcrypto supports z/Architecture instruction set extensions. These
  73. extensions are denoted by individual bits in the capabilities vector.
  74. When libcrypto is initialized, the bits returned by the STFLE instruction
  75. and by the QUERY functions are stored in the vector.
  76. .PP
  77. To change the set of instructions available to an application, you can
  78. set the \fBOPENSSL_s390xcap\fR environment variable before you start the
  79. application. After initialization, the capability vector is ANDed bitwise
  80. with a mask which is derived from the environment variable.
  81. .PP
  82. The environment variable is a semicolon-separated list of tokens which is
  83. processed from left to right (whitespace is ignored):
  84. .PP
  85. .Vb 1
  86. \& OPENSSL_s390xcap="<tok1>;<tok2>;..."
  87. .Ve
  88. .PP
  89. There are four types of tokens:
  90. .IP <string> 4
  91. .IX Item "<string>"
  92. The name of a processor generation. A bit in the environment variable's
  93. mask is set to one if and only if the specified processor generation
  94. implements the corresponding instruction set extension. Possible values
  95. are \fBz900\fR, \fBz990\fR, \fBz9\fR, \fBz10\fR, \fBz196\fR, \fBzEC12\fR, \fBz13\fR, \fBz14\fR,
  96. \&\fBz15\fR, and \fBz16\fR.
  97. .IP <string>:<mask>:<mask> 4
  98. .IX Item "<string>:<mask>:<mask>"
  99. The name of an instruction followed by two 64\-bit masks. The part of the
  100. environment variable's mask corresponding to the specified instruction is
  101. set to the specified 128\-bit mask. Possible values are \fBkimd\fR, \fBklmd\fR,
  102. \&\fBkm\fR, \fBkmc\fR, \fBkmac\fR, \fBkmctr\fR, \fBkmo\fR, \fBkmf\fR, \fBprno\fR, \fBkma\fR, \fBpcc\fR
  103. and \fBkdsa\fR.
  104. .IP stfle:<mask>:<mask>:<mask> 4
  105. .IX Item "stfle:<mask>:<mask>:<mask>"
  106. Store-facility-list-extended (stfle) followed by three 64\-bit masks. The
  107. part of the environment variable's mask corresponding to the stfle
  108. instruction is set to the specified 192\-bit mask.
  109. .IP nocex 4
  110. .IX Item "nocex"
  111. Deactivate modular exponentiation and CRT operation offloading to
  112. Crypto Express Adapters.
  113. .PP
  114. The 64\-bit masks are specified in hexadecimal notation. The 0x prefix is
  115. optional. Prefix a mask with a tilde, \f(CW\*(C`~\*(C'\fR, to denote a bitwise NOT operation.
  116. .PP
  117. The following is a list of significant bits for each instruction. Colon
  118. rows separate the individual 64\-bit masks. The bit numbers in the first
  119. column are consistent with [1], that is, 0 denotes the leftmost bit and
  120. the numbering is continuous across 64\-bit mask boundaries.
  121. .PP
  122. .Vb 1
  123. \& Bit Mask Facility/Function
  124. \&
  125. \& stfle:
  126. \& # 17 1<<46 message\-security assist
  127. \& # 25 1<<38 store\-clock\-fast facility
  128. \& :
  129. \& # 76 1<<51 message\-security assist extension 3
  130. \& # 77 1<<50 message\-security assist extension 4
  131. \& # 86 1<<41 message\-security\-assist extension 12
  132. \& :
  133. \& #129 1<<62 vector facility
  134. \& #134 1<<57 vector packed decimal facility
  135. \& #135 1<<56 vector enhancements facility 1
  136. \& #146 1<<45 message\-security assist extension 8
  137. \& #155 1<<36 message\-security assist extension 9
  138. \&
  139. \& kimd :
  140. \& # 1 1<<62 KIMD\-SHA\-1
  141. \& # 2 1<<61 KIMD\-SHA\-256
  142. \& # 3 1<<60 KIMD\-SHA\-512
  143. \& # 32 1<<31 KIMD\-SHA3\-224
  144. \& # 33 1<<30 KIMD\-SHA3\-256
  145. \& # 34 1<<29 KIMD\-SHA3\-384
  146. \& # 35 1<<28 KIMD\-SHA3\-512
  147. \& # 36 1<<27 KIMD\-SHAKE\-128
  148. \& # 37 1<<26 KIMD\-SHAKE\-256
  149. \& :
  150. \& # 65 1<<62 KIMD\-GHASH
  151. \&
  152. \& klmd :
  153. \& # 32 1<<31 KLMD\-SHA3\-224
  154. \& # 33 1<<30 KLMD\-SHA3\-256
  155. \& # 34 1<<29 KLMD\-SHA3\-384
  156. \& # 35 1<<28 KLMD\-SHA3\-512
  157. \& # 36 1<<27 KLMD\-SHAKE\-128
  158. \& # 37 1<<26 KLMD\-SHAKE\-256
  159. \& :
  160. \&
  161. \& km :
  162. \& # 18 1<<45 KM\-AES\-128
  163. \& # 19 1<<44 KM\-AES\-192
  164. \& # 20 1<<43 KM\-AES\-256
  165. \& # 50 1<<13 KM\-XTS\-AES\-128
  166. \& # 52 1<<11 KM\-XTS\-AES\-256
  167. \& :
  168. \& # 82 1<<45 KM\-XTS\-AES\-128\-MSA10
  169. \& # 84 1<<43 KM\-XTS\-AES\-256\-MSA10
  170. \&
  171. \& kmc :
  172. \& # 18 1<<45 KMC\-AES\-128
  173. \& # 19 1<<44 KMC\-AES\-192
  174. \& # 20 1<<43 KMC\-AES\-256
  175. \& :
  176. \&
  177. \& kmac :
  178. \& # 18 1<<45 KMAC\-AES\-128
  179. \& # 19 1<<44 KMAC\-AES\-192
  180. \& # 20 1<<43 KMAC\-AES\-256
  181. \& :
  182. \& # 112 1<<15 KMAC\-SHA\-224
  183. \& # 113 1<<14 KMAC\-SHA\-256
  184. \& # 114 1<<13 KMAC\-SHA\-384
  185. \& # 115 1<<12 KMAC\-SHA\-512
  186. \&
  187. \& kmctr:
  188. \& :
  189. \&
  190. \& kmo :
  191. \& # 18 1<<45 KMO\-AES\-128
  192. \& # 19 1<<44 KMO\-AES\-192
  193. \& # 20 1<<43 KMO\-AES\-256
  194. \& :
  195. \&
  196. \& kmf :
  197. \& # 18 1<<45 KMF\-AES\-128
  198. \& # 19 1<<44 KMF\-AES\-192
  199. \& # 20 1<<43 KMF\-AES\-256
  200. \& :
  201. \&
  202. \& prno :
  203. \& :
  204. \&
  205. \& kma :
  206. \& # 18 1<<45 KMA\-GCM\-AES\-128
  207. \& # 19 1<<44 KMA\-GCM\-AES\-192
  208. \& # 20 1<<43 KMA\-GCM\-AES\-256
  209. \& :
  210. \&
  211. \& pcc :
  212. \& :
  213. \& # 64 1<<63 PCC\-Scalar\-Multiply\-P256
  214. \& # 65 1<<62 PCC\-Scalar\-Multiply\-P384
  215. \& # 66 1<<61 PCC\-Scalar\-Multiply\-P521
  216. \& # 72 1<<55 PCC\-Scalar\-Multiply\-Ed25519
  217. \& # 73 1<<54 PCC\-Scalar\-Multiply\-Ed448
  218. \& # 80 1<<47 PCC\-Scalar\-Multiply\-X25519
  219. \& # 81 1<<46 PCC\-Scalar\-Multiply\-X448
  220. \&
  221. \& kdsa :
  222. \& # 1 1<<62 KDSA\-ECDSA\-Verify\-P256
  223. \& # 2 1<<61 KDSA\-ECDSA\-Verify\-P384
  224. \& # 3 1<<60 KDSA\-ECDSA\-Verify\-P521
  225. \& # 9 1<<54 KDSA\-ECDSA\-Sign\-P256
  226. \& # 10 1<<53 KDSA\-ECDSA\-Sign\-P384
  227. \& # 11 1<<52 KDSA\-ECDSA\-Sign\-P521
  228. \& # 32 1<<31 KDSA\-EdDSA\-Verify\-Ed25519
  229. \& # 36 1<<27 KDSA\-EdDSA\-Verify\-Ed448
  230. \& # 40 1<<23 KDSA\-EdDSA\-Sign\-Ed25519
  231. \& # 44 1<<19 KDSA\-EdDSA\-Sign\-Ed448
  232. \& :
  233. .Ve
  234. .SH "RETURN VALUES"
  235. .IX Header "RETURN VALUES"
  236. Not available.
  237. .SH EXAMPLES
  238. .IX Header "EXAMPLES"
  239. Disables all instruction set extensions which the z196 processor does not implement:
  240. .PP
  241. .Vb 1
  242. \& OPENSSL_s390xcap="z196"
  243. .Ve
  244. .PP
  245. Disables the vector facility:
  246. .PP
  247. .Vb 1
  248. \& OPENSSL_s390xcap="stfle:~0:~0:~0x4000000000000000"
  249. .Ve
  250. .PP
  251. Disables the KM-XTS-AES and the KIMD-SHAKE function codes:
  252. .PP
  253. .Vb 1
  254. \& OPENSSL_s390xcap="km:~0x2800:~0;kimd:~0xc000000:~0"
  255. .Ve
  256. .SH "SEE ALSO"
  257. .IX Header "SEE ALSO"
  258. [1] z/Architecture Principles of Operation, SA22\-7832\-12
  259. .SH COPYRIGHT
  260. .IX Header "COPYRIGHT"
  261. Copyright 2018\-2024 The OpenSSL Project Authors. All Rights Reserved.
  262. .PP
  263. Licensed under the Apache License 2.0 (the "License"). You may not use
  264. this file except in compliance with the License. You can obtain a copy
  265. in the file LICENSE in the source distribution or at
  266. <https://www.openssl.org/source/license.html>.