OPENSSL_s390xcap.pod 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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 three 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. and B<z15>.
  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. =back
  37. The 64-bit masks are specified in hexadecimal notation. The 0x prefix is
  38. optional. Prefix a mask with a tilde, C<~>, to denote a bitwise NOT operation.
  39. The following is a list of significant bits for each instruction. Colon
  40. rows separate the individual 64-bit masks. The bit numbers in the first
  41. column are consistent with [1], that is, 0 denotes the leftmost bit and
  42. the numbering is continuous across 64-bit mask boundaries.
  43. Bit Mask Facility/Function
  44. stfle:
  45. # 17 1<<46 message-security assist
  46. # 25 1<<38 store-clock-fast facility
  47. :
  48. # 76 1<<51 message-security assist extension 3
  49. # 77 1<<50 message-security assist extension 4
  50. :
  51. #129 1<<62 vector facility
  52. #134 1<<57 vector packed decimal facility
  53. #135 1<<56 vector enhancements facility 1
  54. #146 1<<45 message-security assist extension 8
  55. #155 1<<36 message-security assist extension 9
  56. kimd :
  57. # 1 1<<62 KIMD-SHA-1
  58. # 2 1<<61 KIMD-SHA-256
  59. # 3 1<<60 KIMD-SHA-512
  60. # 32 1<<31 KIMD-SHA3-224
  61. # 33 1<<30 KIMD-SHA3-256
  62. # 34 1<<29 KIMD-SHA3-384
  63. # 35 1<<28 KIMD-SHA3-512
  64. # 36 1<<27 KIMD-SHAKE-128
  65. # 37 1<<26 KIMD-SHAKE-256
  66. :
  67. # 65 1<<62 KIMD-GHASH
  68. klmd :
  69. # 32 1<<31 KLMD-SHA3-224
  70. # 33 1<<30 KLMD-SHA3-256
  71. # 34 1<<29 KLMD-SHA3-384
  72. # 35 1<<28 KLMD-SHA3-512
  73. # 36 1<<27 KLMD-SHAKE-128
  74. # 37 1<<26 KLMD-SHAKE-256
  75. :
  76. km :
  77. # 18 1<<45 KM-AES-128
  78. # 19 1<<44 KM-AES-192
  79. # 20 1<<43 KM-AES-256
  80. # 50 1<<13 KM-XTS-AES-128
  81. # 52 1<<11 KM-XTS-AES-256
  82. :
  83. kmc :
  84. # 18 1<<45 KMC-AES-128
  85. # 19 1<<44 KMC-AES-192
  86. # 20 1<<43 KMC-AES-256
  87. :
  88. kmac :
  89. # 18 1<<45 KMAC-AES-128
  90. # 19 1<<44 KMAC-AES-192
  91. # 20 1<<43 KMAC-AES-256
  92. :
  93. kmctr:
  94. :
  95. kmo :
  96. # 18 1<<45 KMO-AES-128
  97. # 19 1<<44 KMO-AES-192
  98. # 20 1<<43 KMO-AES-256
  99. :
  100. kmf :
  101. # 18 1<<45 KMF-AES-128
  102. # 19 1<<44 KMF-AES-192
  103. # 20 1<<43 KMF-AES-256
  104. :
  105. prno :
  106. :
  107. kma :
  108. # 18 1<<45 KMA-GCM-AES-128
  109. # 19 1<<44 KMA-GCM-AES-192
  110. # 20 1<<43 KMA-GCM-AES-256
  111. :
  112. pcc :
  113. :
  114. # 64 1<<63 PCC-Scalar-Multiply-P256
  115. # 65 1<<62 PCC-Scalar-Multiply-P384
  116. # 66 1<<61 PCC-Scalar-Multiply-P521
  117. # 72 1<<55 PCC-Scalar-Multiply-Ed25519
  118. # 73 1<<54 PCC-Scalar-Multiply-Ed448
  119. # 80 1<<47 PCC-Scalar-Multiply-X25519
  120. # 81 1<<46 PCC-Scalar-Multiply-X448
  121. kdsa :
  122. # 1 1<<62 KDSA-ECDSA-Verify-P256
  123. # 2 1<<61 KDSA-ECDSA-Verify-P384
  124. # 3 1<<60 KDSA-ECDSA-Verify-P521
  125. # 9 1<<54 KDSA-ECDSA-Sign-P256
  126. # 10 1<<53 KDSA-ECDSA-Sign-P384
  127. # 11 1<<52 KDSA-ECDSA-Sign-P521
  128. # 32 1<<31 KDSA-EdDSA-Verify-Ed25519
  129. # 36 1<<27 KDSA-EdDSA-Verify-Ed448
  130. # 40 1<<23 KDSA-EdDSA-Sign-Ed25519
  131. # 44 1<<19 KDSA-EdDSA-Sign-Ed448
  132. :
  133. =head1 RETURN VALUES
  134. Not available.
  135. =head1 EXAMPLES
  136. Disables all instruction set extensions which the z196 processor does not implement:
  137. OPENSSL_s390xcap="z196"
  138. Disables the vector facility:
  139. OPENSSL_s390xcap="stfle:~0:~0:~0x4000000000000000"
  140. Disables the KM-XTS-AES and the KIMD-SHAKE function codes:
  141. OPENSSL_s390xcap="km:~0x2800:~0;kimd:~0xc000000:~0"
  142. =head1 SEE ALSO
  143. [1] z/Architecture Principles of Operation, SA22-7832-12
  144. =head1 COPYRIGHT
  145. Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
  146. Licensed under the Apache License 2.0 (the "License"). You may not use
  147. this file except in compliance with the License. You can obtain a copy
  148. in the file LICENSE in the source distribution or at
  149. L<https://www.openssl.org/source/license.html>.
  150. =cut