1*b077aed3SPierre Pronchery=pod 2*b077aed3SPierre Pronchery 3*b077aed3SPierre Pronchery=head1 NAME 4*b077aed3SPierre Pronchery 5*b077aed3SPierre ProncheryOPENSSL_s390xcap - the IBM z processor capabilities vector 6*b077aed3SPierre Pronchery 7*b077aed3SPierre Pronchery=head1 SYNOPSIS 8*b077aed3SPierre Pronchery 9*b077aed3SPierre Pronchery env OPENSSL_s390xcap=... <application> 10*b077aed3SPierre Pronchery 11*b077aed3SPierre Pronchery=head1 DESCRIPTION 12*b077aed3SPierre Pronchery 13*b077aed3SPierre Proncherylibcrypto supports z/Architecture instruction set extensions. These 14*b077aed3SPierre Proncheryextensions are denoted by individual bits in the capabilities vector. 15*b077aed3SPierre ProncheryWhen libcrypto is initialized, the bits returned by the STFLE instruction 16*b077aed3SPierre Proncheryand by the QUERY functions are stored in the vector. 17*b077aed3SPierre Pronchery 18*b077aed3SPierre ProncheryTo change the set of instructions available to an application, you can 19*b077aed3SPierre Proncheryset the B<OPENSSL_s390xcap> environment variable before you start the 20*b077aed3SPierre Proncheryapplication. After initialization, the capability vector is ANDed bitwise 21*b077aed3SPierre Proncherywith a mask which is derived from the environment variable. 22*b077aed3SPierre Pronchery 23*b077aed3SPierre ProncheryThe environment variable is a semicolon-separated list of tokens which is 24*b077aed3SPierre Proncheryprocessed from left to right (whitespace is ignored): 25*b077aed3SPierre Pronchery 26*b077aed3SPierre Pronchery OPENSSL_s390xcap="<tok1>;<tok2>;..." 27*b077aed3SPierre Pronchery 28*b077aed3SPierre ProncheryThere are three types of tokens: 29*b077aed3SPierre Pronchery 30*b077aed3SPierre Pronchery=over 4 31*b077aed3SPierre Pronchery 32*b077aed3SPierre Pronchery=item <string> 33*b077aed3SPierre Pronchery 34*b077aed3SPierre ProncheryThe name of a processor generation. A bit in the environment variable's 35*b077aed3SPierre Proncherymask is set to one if and only if the specified processor generation 36*b077aed3SPierre Proncheryimplements the corresponding instruction set extension. Possible values 37*b077aed3SPierre Proncheryare B<z900>, B<z990>, B<z9>, B<z10>, B<z196>, B<zEC12>, B<z13>, B<z14> 38*b077aed3SPierre Proncheryand B<z15>. 39*b077aed3SPierre Pronchery 40*b077aed3SPierre Pronchery=item <string>:<mask>:<mask> 41*b077aed3SPierre Pronchery 42*b077aed3SPierre ProncheryThe name of an instruction followed by two 64-bit masks. The part of the 43*b077aed3SPierre Proncheryenvironment variable's mask corresponding to the specified instruction is 44*b077aed3SPierre Proncheryset to the specified 128-bit mask. Possible values are B<kimd>, B<klmd>, 45*b077aed3SPierre ProncheryB<km>, B<kmc>, B<kmac>, B<kmctr>, B<kmo>, B<kmf>, B<prno>, B<kma>, B<pcc> 46*b077aed3SPierre Proncheryand B<kdsa>. 47*b077aed3SPierre Pronchery 48*b077aed3SPierre Pronchery=item stfle:<mask>:<mask>:<mask> 49*b077aed3SPierre Pronchery 50*b077aed3SPierre ProncheryStore-facility-list-extended (stfle) followed by three 64-bit masks. The 51*b077aed3SPierre Proncherypart of the environment variable's mask corresponding to the stfle 52*b077aed3SPierre Proncheryinstruction is set to the specified 192-bit mask. 53*b077aed3SPierre Pronchery 54*b077aed3SPierre Pronchery=back 55*b077aed3SPierre Pronchery 56*b077aed3SPierre ProncheryThe 64-bit masks are specified in hexadecimal notation. The 0x prefix is 57*b077aed3SPierre Proncheryoptional. Prefix a mask with a tilde, C<~>, to denote a bitwise NOT operation. 58*b077aed3SPierre Pronchery 59*b077aed3SPierre ProncheryThe following is a list of significant bits for each instruction. Colon 60*b077aed3SPierre Proncheryrows separate the individual 64-bit masks. The bit numbers in the first 61*b077aed3SPierre Proncherycolumn are consistent with [1], that is, 0 denotes the leftmost bit and 62*b077aed3SPierre Proncherythe numbering is continuous across 64-bit mask boundaries. 63*b077aed3SPierre Pronchery 64*b077aed3SPierre Pronchery Bit Mask Facility/Function 65*b077aed3SPierre Pronchery 66*b077aed3SPierre Pronchery stfle: 67*b077aed3SPierre Pronchery # 17 1<<46 message-security assist 68*b077aed3SPierre Pronchery # 25 1<<38 store-clock-fast facility 69*b077aed3SPierre Pronchery : 70*b077aed3SPierre Pronchery # 76 1<<51 message-security assist extension 3 71*b077aed3SPierre Pronchery # 77 1<<50 message-security assist extension 4 72*b077aed3SPierre Pronchery : 73*b077aed3SPierre Pronchery #129 1<<62 vector facility 74*b077aed3SPierre Pronchery #134 1<<57 vector packed decimal facility 75*b077aed3SPierre Pronchery #135 1<<56 vector enhancements facility 1 76*b077aed3SPierre Pronchery #146 1<<45 message-security assist extension 8 77*b077aed3SPierre Pronchery #155 1<<36 message-security assist extension 9 78*b077aed3SPierre Pronchery 79*b077aed3SPierre Pronchery kimd : 80*b077aed3SPierre Pronchery # 1 1<<62 KIMD-SHA-1 81*b077aed3SPierre Pronchery # 2 1<<61 KIMD-SHA-256 82*b077aed3SPierre Pronchery # 3 1<<60 KIMD-SHA-512 83*b077aed3SPierre Pronchery # 32 1<<31 KIMD-SHA3-224 84*b077aed3SPierre Pronchery # 33 1<<30 KIMD-SHA3-256 85*b077aed3SPierre Pronchery # 34 1<<29 KIMD-SHA3-384 86*b077aed3SPierre Pronchery # 35 1<<28 KIMD-SHA3-512 87*b077aed3SPierre Pronchery # 36 1<<27 KIMD-SHAKE-128 88*b077aed3SPierre Pronchery # 37 1<<26 KIMD-SHAKE-256 89*b077aed3SPierre Pronchery : 90*b077aed3SPierre Pronchery # 65 1<<62 KIMD-GHASH 91*b077aed3SPierre Pronchery 92*b077aed3SPierre Pronchery klmd : 93*b077aed3SPierre Pronchery # 32 1<<31 KLMD-SHA3-224 94*b077aed3SPierre Pronchery # 33 1<<30 KLMD-SHA3-256 95*b077aed3SPierre Pronchery # 34 1<<29 KLMD-SHA3-384 96*b077aed3SPierre Pronchery # 35 1<<28 KLMD-SHA3-512 97*b077aed3SPierre Pronchery # 36 1<<27 KLMD-SHAKE-128 98*b077aed3SPierre Pronchery # 37 1<<26 KLMD-SHAKE-256 99*b077aed3SPierre Pronchery : 100*b077aed3SPierre Pronchery 101*b077aed3SPierre Pronchery km : 102*b077aed3SPierre Pronchery # 18 1<<45 KM-AES-128 103*b077aed3SPierre Pronchery # 19 1<<44 KM-AES-192 104*b077aed3SPierre Pronchery # 20 1<<43 KM-AES-256 105*b077aed3SPierre Pronchery # 50 1<<13 KM-XTS-AES-128 106*b077aed3SPierre Pronchery # 52 1<<11 KM-XTS-AES-256 107*b077aed3SPierre Pronchery : 108*b077aed3SPierre Pronchery 109*b077aed3SPierre Pronchery kmc : 110*b077aed3SPierre Pronchery # 18 1<<45 KMC-AES-128 111*b077aed3SPierre Pronchery # 19 1<<44 KMC-AES-192 112*b077aed3SPierre Pronchery # 20 1<<43 KMC-AES-256 113*b077aed3SPierre Pronchery : 114*b077aed3SPierre Pronchery 115*b077aed3SPierre Pronchery kmac : 116*b077aed3SPierre Pronchery # 18 1<<45 KMAC-AES-128 117*b077aed3SPierre Pronchery # 19 1<<44 KMAC-AES-192 118*b077aed3SPierre Pronchery # 20 1<<43 KMAC-AES-256 119*b077aed3SPierre Pronchery : 120*b077aed3SPierre Pronchery 121*b077aed3SPierre Pronchery kmctr: 122*b077aed3SPierre Pronchery : 123*b077aed3SPierre Pronchery 124*b077aed3SPierre Pronchery kmo : 125*b077aed3SPierre Pronchery # 18 1<<45 KMO-AES-128 126*b077aed3SPierre Pronchery # 19 1<<44 KMO-AES-192 127*b077aed3SPierre Pronchery # 20 1<<43 KMO-AES-256 128*b077aed3SPierre Pronchery : 129*b077aed3SPierre Pronchery 130*b077aed3SPierre Pronchery kmf : 131*b077aed3SPierre Pronchery # 18 1<<45 KMF-AES-128 132*b077aed3SPierre Pronchery # 19 1<<44 KMF-AES-192 133*b077aed3SPierre Pronchery # 20 1<<43 KMF-AES-256 134*b077aed3SPierre Pronchery : 135*b077aed3SPierre Pronchery 136*b077aed3SPierre Pronchery prno : 137*b077aed3SPierre Pronchery : 138*b077aed3SPierre Pronchery 139*b077aed3SPierre Pronchery kma : 140*b077aed3SPierre Pronchery # 18 1<<45 KMA-GCM-AES-128 141*b077aed3SPierre Pronchery # 19 1<<44 KMA-GCM-AES-192 142*b077aed3SPierre Pronchery # 20 1<<43 KMA-GCM-AES-256 143*b077aed3SPierre Pronchery : 144*b077aed3SPierre Pronchery 145*b077aed3SPierre Pronchery pcc : 146*b077aed3SPierre Pronchery : 147*b077aed3SPierre Pronchery # 64 1<<63 PCC-Scalar-Multiply-P256 148*b077aed3SPierre Pronchery # 65 1<<62 PCC-Scalar-Multiply-P384 149*b077aed3SPierre Pronchery # 66 1<<61 PCC-Scalar-Multiply-P521 150*b077aed3SPierre Pronchery # 72 1<<55 PCC-Scalar-Multiply-Ed25519 151*b077aed3SPierre Pronchery # 73 1<<54 PCC-Scalar-Multiply-Ed448 152*b077aed3SPierre Pronchery # 80 1<<47 PCC-Scalar-Multiply-X25519 153*b077aed3SPierre Pronchery # 81 1<<46 PCC-Scalar-Multiply-X448 154*b077aed3SPierre Pronchery 155*b077aed3SPierre Pronchery kdsa : 156*b077aed3SPierre Pronchery # 1 1<<62 KDSA-ECDSA-Verify-P256 157*b077aed3SPierre Pronchery # 2 1<<61 KDSA-ECDSA-Verify-P384 158*b077aed3SPierre Pronchery # 3 1<<60 KDSA-ECDSA-Verify-P521 159*b077aed3SPierre Pronchery # 9 1<<54 KDSA-ECDSA-Sign-P256 160*b077aed3SPierre Pronchery # 10 1<<53 KDSA-ECDSA-Sign-P384 161*b077aed3SPierre Pronchery # 11 1<<52 KDSA-ECDSA-Sign-P521 162*b077aed3SPierre Pronchery # 32 1<<31 KDSA-EdDSA-Verify-Ed25519 163*b077aed3SPierre Pronchery # 36 1<<27 KDSA-EdDSA-Verify-Ed448 164*b077aed3SPierre Pronchery # 40 1<<23 KDSA-EdDSA-Sign-Ed25519 165*b077aed3SPierre Pronchery # 44 1<<19 KDSA-EdDSA-Sign-Ed448 166*b077aed3SPierre Pronchery : 167*b077aed3SPierre Pronchery 168*b077aed3SPierre Pronchery=head1 RETURN VALUES 169*b077aed3SPierre Pronchery 170*b077aed3SPierre ProncheryNot available. 171*b077aed3SPierre Pronchery 172*b077aed3SPierre Pronchery=head1 EXAMPLES 173*b077aed3SPierre Pronchery 174*b077aed3SPierre ProncheryDisables all instruction set extensions which the z196 processor does not implement: 175*b077aed3SPierre Pronchery 176*b077aed3SPierre Pronchery OPENSSL_s390xcap="z196" 177*b077aed3SPierre Pronchery 178*b077aed3SPierre ProncheryDisables the vector facility: 179*b077aed3SPierre Pronchery 180*b077aed3SPierre Pronchery OPENSSL_s390xcap="stfle:~0:~0:~0x4000000000000000" 181*b077aed3SPierre Pronchery 182*b077aed3SPierre ProncheryDisables the KM-XTS-AES and the KIMD-SHAKE function codes: 183*b077aed3SPierre Pronchery 184*b077aed3SPierre Pronchery OPENSSL_s390xcap="km:~0x2800:~0;kimd:~0xc000000:~0" 185*b077aed3SPierre Pronchery 186*b077aed3SPierre Pronchery=head1 SEE ALSO 187*b077aed3SPierre Pronchery 188*b077aed3SPierre Pronchery[1] z/Architecture Principles of Operation, SA22-7832-12 189*b077aed3SPierre Pronchery 190*b077aed3SPierre Pronchery=head1 COPYRIGHT 191*b077aed3SPierre Pronchery 192*b077aed3SPierre ProncheryCopyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. 193*b077aed3SPierre Pronchery 194*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 195*b077aed3SPierre Proncherythis file except in compliance with the License. You can obtain a copy 196*b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at 197*b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>. 198*b077aed3SPierre Pronchery 199*b077aed3SPierre Pronchery=cut 200