OPENSSL_s390xcap.pod 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. =pod
  2. =head1 NAME
  3. OPENSSL_s390xcap - the IBM z processor capabilities vector
  4. =head1 SYNOPSIS
  5. env OPENSSL_s390xcap=... <application>
  6. =head1 DESCRIPTION
  7. libcrypto supports z/Architecture instruction set extensions. These
  8. extensions are denoted by individual bits in the capabilities vector.
  9. When libcrypto is initialized, the bits returned by the STFLE instruction
  10. and by the QUERY functions are stored in the vector.
  11. To change the set of instructions available to an application, you can
  12. set the B<OPENSSL_s390xcap> environment variable before you start the
  13. application. After initialization, the capability vector is ANDed bitwise
  14. with a mask which is derived from the environment variable.
  15. The environment variable is a semicolon-separated list of tokens which is
  16. processed from left to right (whitespace is ignored):
  17. OPENSSL_s390xcap="<tok1>;<tok2>;..."
  18. There are four types of tokens:
  19. =over 4
  20. =item <string>
  21. The name of a processor generation. A bit in the environment variable's
  22. mask is set to one if and only if the specified processor generation
  23. implements the corresponding instruction set extension. Possible values
  24. are B<z900>, B<z990>, B<z9>, B<z10>, B<z196>, B<zEC12>, B<z13>, B<z14>,
  25. B<z15>, and B<z16>.
  26. =item <string>:<mask>:<mask>
  27. The name of an instruction followed by two 64-bit masks. The part of the
  28. environment variable's mask corresponding to the specified instruction is
  29. set to the specified 128-bit mask. Possible values are B<kimd>, B<klmd>,
  30. B<km>, B<kmc>, B<kmac>, B<kmctr>, B<kmo>, B<kmf>, B<prno>, B<kma>, B<pcc>
  31. and B<kdsa>.
  32. =item stfle:<mask>:<mask>:<mask>
  33. Store-facility-list-extended (stfle) followed by three 64-bit masks. The
  34. part of the environment variable's mask corresponding to the stfle
  35. instruction is set to the specified 192-bit mask.
  36. =item nocex
  37. Deactivate modular exponentiation and CRT operation offloading to
  38. Crypto Express Adapters.
  39. =back
  40. The 64-bit masks are specified in hexadecimal notation. The 0x prefix is
  41. optional. Prefix a mask with a tilde, C<~>, to denote a bitwise NOT operation.
  42. The following is a list of significant bits for each instruction. Colon
  43. rows separate the individual 64-bit masks. The bit numbers in the first
  44. column are consistent with [1], that is, 0 denotes the leftmost bit and
  45. the numbering is continuous across 64-bit mask boundaries.
  46. Bit Mask Facility/Function
  47. stfle:
  48. # 17 1<<46 message-security assist
  49. # 25 1<<38 store-clock-fast facility
  50. :
  51. # 76 1<<51 message-security assist extension 3
  52. # 77 1<<50 message-security assist extension 4
  53. :
  54. #129 1<<62 vector facility
  55. #134 1<<57 vector packed decimal facility
  56. #135 1<<56 vector enhancements facility 1
  57. #146 1<<45 message-security assist extension 8
  58. #155 1<<36 message-security assist extension 9
  59. kimd :
  60. # 1 1<<62 KIMD-SHA-1
  61. # 2 1<<61 KIMD-SHA-256
  62. # 3 1<<60 KIMD-SHA-512
  63. # 32 1<<31 KIMD-SHA3-224
  64. # 33 1<<30 KIMD-SHA3-256
  65. # 34 1<<29 KIMD-SHA3-384
  66. # 35 1<<28 KIMD-SHA3-512
  67. # 36 1<<27 KIMD-SHAKE-128
  68. # 37 1<<26 KIMD-SHAKE-256
  69. :
  70. # 65 1<<62 KIMD-GHASH
  71. klmd :
  72. # 32 1<<31 KLMD-SHA3-224
  73. # 33 1<<30 KLMD-SHA3-256
  74. # 34 1<<29 KLMD-SHA3-384
  75. # 35 1<<28 KLMD-SHA3-512
  76. # 36 1<<27 KLMD-SHAKE-128
  77. # 37 1<<26 KLMD-SHAKE-256
  78. :
  79. km :
  80. # 18 1<<45 KM-AES-128
  81. # 19 1<<44 KM-AES-192
  82. # 20 1<<43 KM-AES-256
  83. # 50 1<<13 KM-XTS-AES-128
  84. # 52 1<<11 KM-XTS-AES-256
  85. :
  86. kmc :
  87. # 18 1<<45 KMC-AES-128
  88. # 19 1<<44 KMC-AES-192
  89. # 20 1<<43 KMC-AES-256
  90. :
  91. kmac :
  92. # 18 1<<45 KMAC-AES-128
  93. # 19 1<<44 KMAC-AES-192
  94. # 20 1<<43 KMAC-AES-256
  95. :
  96. kmctr:
  97. :
  98. kmo :
  99. # 18 1<<45 KMO-AES-128
  100. # 19 1<<44 KMO-AES-192
  101. # 20 1<<43 KMO-AES-256
  102. :
  103. kmf :
  104. # 18 1<<45 KMF-AES-128
  105. # 19 1<<44 KMF-AES-192
  106. # 20 1<<43 KMF-AES-256
  107. :
  108. prno :
  109. :
  110. kma :
  111. # 18 1<<45 KMA-GCM-AES-128
  112. # 19 1<<44 KMA-GCM-AES-192
  113. # 20 1<<43 KMA-GCM-AES-256
  114. :
  115. pcc :
  116. :
  117. # 64 1<<63 PCC-Scalar-Multiply-P256
  118. # 65 1<<62 PCC-Scalar-Multiply-P384
  119. # 66 1<<61 PCC-Scalar-Multiply-P521
  120. # 72 1<<55 PCC-Scalar-Multiply-Ed25519
  121. # 73 1<<54 PCC-Scalar-Multiply-Ed448
  122. # 80 1<<47 PCC-Scalar-Multiply-X25519
  123. # 81 1<<46 PCC-Scalar-Multiply-X448
  124. kdsa :
  125. # 1 1<<62 KDSA-ECDSA-Verify-P256
  126. # 2 1<<61 KDSA-ECDSA-Verify-P384
  127. # 3 1<<60 KDSA-ECDSA-Verify-P521
  128. # 9 1<<54 KDSA-ECDSA-Sign-P256
  129. # 10 1<<53 KDSA-ECDSA-Sign-P384
  130. # 11 1<<52 KDSA-ECDSA-Sign-P521
  131. # 32 1<<31 KDSA-EdDSA-Verify-Ed25519
  132. # 36 1<<27 KDSA-EdDSA-Verify-Ed448
  133. # 40 1<<23 KDSA-EdDSA-Sign-Ed25519
  134. # 44 1<<19 KDSA-EdDSA-Sign-Ed448
  135. :
  136. =head1 RETURN VALUES
  137. Not available.
  138. =head1 EXAMPLES
  139. Disables all instruction set extensions which the z196 processor does not implement:
  140. OPENSSL_s390xcap="z196"
  141. Disables the vector facility:
  142. OPENSSL_s390xcap="stfle:~0:~0:~0x4000000000000000"
  143. Disables the KM-XTS-AES and the KIMD-SHAKE function codes:
  144. OPENSSL_s390xcap="km:~0x2800:~0;kimd:~0xc000000:~0"
  145. =head1 SEE ALSO
  146. [1] z/Architecture Principles of Operation, SA22-7832-12
  147. =head1 COPYRIGHT
  148. Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved.
  149. Licensed under the Apache License 2.0 (the "License"). You may not use
  150. this file except in compliance with the License. You can obtain a copy
  151. in the file LICENSE in the source distribution or at
  152. L<https://www.openssl.org/source/license.html>.
  153. =cut