CPACF instruction wrappers. More...
Concepts | |
| concept | arch::s390x::cpu::cpacf::kdsa_pb_for |
| concept | arch::s390x::cpu::cpacf::kimd_pb_for |
| concept | arch::s390x::cpu::cpacf::klmd_pb_for |
| concept | arch::s390x::cpu::cpacf::km_pb_for |
| concept | arch::s390x::cpu::cpacf::kma_pb_for |
| concept | arch::s390x::cpu::cpacf::kmac_is_hmac |
| concept | arch::s390x::cpu::cpacf::kmac_pb_for |
| concept | arch::s390x::cpu::cpacf::kmc_pb_for |
| concept | arch::s390x::cpu::cpacf::kmctr_pb_for |
| concept | arch::s390x::cpu::cpacf::kmf_pb_for |
| concept | arch::s390x::cpu::cpacf::kmo_pb_for |
| concept | arch::s390x::cpu::cpacf::pcc_pb_for |
| concept | arch::s390x::cpu::cpacf::pckmo_pb_for |
| concept | arch::s390x::cpu::cpacf::prno_pb_for |
| concept | arch::s390x::cpu::cpacf::valid_kma_flags |
Enumerations | |
| enum class | arch::s390x::cpu::cpacf::cipher_modifiers : u64 { encrypt = 0x00 , decrypt = 0x80 } |
| Encrypt/Decrypt modifier for CIPHER*. | |
Functions | |
| __endian__ (BIG) | |
|
template<typename T> requires (std::is_arithmetic_v<T> || std::is_enum_v<T>) | |
| constexpr auto | arch::s390x::cpu::cpacf::make_cipher_function_control (T fc, cipher_modifiers mod, std::optional< u8 > lcfb=std::nullopt) -> u64 |
|
template<typename Ta, typename Tb> requires (std::is_arithmetic_v<Ta> || std::is_enum_v<Ta>) && (std::is_arithmetic_v<Ta> || std::is_enum_v<Ta>) | |
| constexpr auto | arch::s390x::cpu::cpacf::make_digest_function_control (Ta fc, Tb flg) -> u64 |
|
template<typename T> requires (std::is_arithmetic_v<T> || std::is_enum_v<T>) | |
| consteval auto | arch::s390x::cpu::cpacf::operator| (T a, cipher_modifiers b) -> u32 |
KM - CIPHER MESSAGE | |
|
template<km_fc Fc, cipher_modifiers Mod, typename Pb> requires km_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::km (Pb &pb, u8 &dest, std::span< const u8 > src) -> i32 |
| enum class | km_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x09 , ptdea128 = 0x0a , ptdea192 = 0x0b , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , xts128 = 0x32 , xts256 = 0x34 , pxts128 = 0x3a , pxts256 = 0x3c , xts128full = 0x52 , xts256full = 0x54 , pxts128full = 0x5a , pxts256full = 0x5c , query_qai = 0x7f } |
| template<km_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::km_pb_v = km_pb<Fc>::value |
KMF - CIPHER MESSAGE WITH CIPHER FEEDBACK | |
|
template<kmf_fc Fc, cipher_modifiers Mod, typename Pb> requires kmf_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kmf (Pb &pb, u8 &dest, u8 lfcb, std::span< const u8 > src) -> i32 |
| enum class | kmf_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x09 , ptdea128 = 0x0a , ptdea192 = 0x0b , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , query_qai = 0x7f } |
| template<kmf_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmf_pb_v = kmf_pb<Fc>::value |
KMO - CIPHER MESSAGE WITH OUTPUT FEEDBACK | |
|
template<kmo_fc Fc, cipher_modifiers Mod, typename Pb> requires kmo_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kmf (Pb &pb, u8 &dest, std::span< const u8 > src) -> i32 |
| enum class | kmo_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x09 , ptdea128 = 0x0a , ptdea192 = 0x0b , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , query_qai = 0x7f } |
| template<kmo_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmo_pb_v = kmo_pb<Fc>::value |
KMC - CIPHER MESSAGE WITH CHAINING | |
|
template<kmc_fc Fc, cipher_modifiers Mod, typename Pb> requires kmc_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kmc (Pb &pb, u8 &dest, std::span< const u8 > src) -> i32 |
| enum class | arch::s390x::cpu::cpacf::kmc_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x09 , ptdea128 = 0x0a , ptdea192 = 0x0b , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , prng = 0x43 , query_qai = 0x7f } |
| KMC function codes. | |
| template<kmc_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmc_pb_v = kmc_pb<Fc>::value |
KIMD - COMPUTE INTERMEDIATE MESSAGE DIGEST | |
|
template<kimd_fc Fc, kimd_flags Fl, kimd_fv_flag Fvl = kimd_fv_flag::flags_field_valid, typename Pb> requires kimd_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kimd (Pb &pb, std::span< const u8 > src) -> void |
| enum class | kimd_fc : u64 { query = 0 , sha1 = 1 , sha256 = 2 , sha512 = 3 , sha3_224 = 0x20 , sha3_256 = 0x21 , sha3_384 = 0x22 , sha3_512 = 0x23 , shake128 = 0x24 , shake256 = 0x25 , ghash = 0x41 , query_qai = 0x7f } |
| enum class | kimd_flags : u64 { none = 0x0 , nip = ibmbitmask64(48) } |
| enum class | kimd_fv_flag : u8 { flags_field_valid = 0b1000 , none = 0 } |
| template<kimd_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kimd_pb_v = kimd_pb<Fc>::value |
| consteval auto | arch::s390x::cpu::cpacf::operator| (kimd_flags a, kimd_flags b) -> kimd_flags |
KLMD - COMPUTE LAST MESSAGE DIGEST | |
|
template<klmd_fc Fc, klmd_flags Fl, klmd_fv_flag Fvl = klmd_fv_flag::flags_field_valid, typename Pb> requires klmd_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::klmd (Pb &pb, std::span< const u8 > src) -> void |
| enum class | klmd_fc : u64 { query = 0x0 , sha1 = 0x1 , sha256 = 0x2 , sha512 = 0x3 , sha3_224 = 0x20 , sha3_256 = 0x21 , sha3_384 = 0x22 , sha3_512 = 0x23 , shake128 = 0x24 , shake256 = 0x25 , query_qai = 0x7f } |
| enum class | klmd_flags : u64 { none = 0x0 , nip = ibmbitmask64(48) , dufop = ibmbitmask64(49) , ps = ibmbitmask64(55) } |
| enum class | klmd_fv_flag : u8 { flags_field_valid = 0b1000 , none = 0 } |
| template<klmd_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::klmd_pb_v = klmd_pb<Fc>::value |
| consteval auto | arch::s390x::cpu::cpacf::operator| (klmd_flags a, klmd_flags b) -> klmd_flags |
KMAC - COMPUTE MESSAGE AUTHENTICATION CODE | |
|
template<kmac_fc Fc, kmac_flags Fl, typename Pb> requires kmac_pb_for<Fc, Pb> && (!kmac_is_hmac<Fc> || Fl != kmac_flags::none) | |
| auto | arch::s390x::cpu::cpacf::kmac (Pb &pb, std::span< const u8 > src) -> i32 |
| enum class | kmac_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x9 , ptdea128 = 0xa , ptdea192 = 0xb , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , hmac_sha224 = 0x70 , hmac_sha256 = 0x71 , hmac_sha384 = 0x72 , hmac_sha512 = 0x73 , phmac_sha224 = 0x78 , phmac_sha256 = 0x79 , phmac_sha384 = 0x7a , phmac_sha512 = 0x7b , quert_qai = 0x7f } |
| enum class | kmac_flags : u64 { none = 0x000 , ikp = ibmbitmask64(48) , iimp = ibmbitmask64(49) , ccup = ibmbitmask64(50) } |
| template<kmac_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmac_is_hmac_v = kmac_pb<Fc>::is_hmac |
| template<kmac_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmac_pb_v = kmac_pb<Fc>::value |
| constexpr auto | arch::s390x::cpu::cpacf::operator| (kmac_flags a, kmac_flags b) -> kmac_flags |
KMA - CIPHER MESSAGE WITH AUTHENTICATION | |
|
template<kma_fc Fc, kma_flags Fl, cipher_modifiers Mod, typename Pb> requires kma_pb_for<Fc, Pb> && valid_kma_flags<Fl> | |
| auto | arch::s390x::cpu::cpacf::kma (Pb &pb, u8 &dest, std::span< const u8 > src, std::span< const u8 > aad) -> void |
| enum class | kma_fc : u64 { query = 0x0 , gcm_aes128 = 0x12 , gcm_aes192 = 0x13 , gcm_aes256 = 0x14 , gcm_paes128 = 0x1a , gcm_paes192 = 0x1b , gcm_paes256 = 0x1c , query_qai = 0x7f } |
| enum class | kma_flags : u64 { none = 0x0 , hs = ibmbitmask64(53) , laad = ibmbitmask64(54) , lpc = ibmbitmask64(55) } |
| consteval auto | arch::s390x::cpu::cpacf::kma_has_flag (kma_flags value, kma_flags flag) -> bool |
| template<kma_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kma_pb_v = kma_pb<Fc>::value |
| consteval auto | arch::s390x::cpu::cpacf::operator& (kma_flags a, kma_flags b) -> kma_flags |
| consteval auto | arch::s390x::cpu::cpacf::operator| (kma_flags a, kma_flags b) -> kma_flags |
KMCTR - CIPHER MESSAGE WITH COUNTER | |
|
template<kmctr_fc Fc, cipher_modifiers Mod, typename Pb> requires kmctr_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kmctr (Pb &pb, u8 &dest, std::span< const u8 > src, u8 &counter) -> i32 |
| enum class | kmctr_fc : u64 { query = 0x0 , dea = 0x1 , tdea128 = 0x2 , tdea192 = 0x3 , pdea = 0x09 , ptdea128 = 0x0a , ptdea192 = 0x0b , aes128 = 0x12 , aes192 = 0x13 , aes256 = 0x14 , paes128 = 0x1a , paes192 = 0x1b , paes256 = 0x1c , query_qai = 0x7f } |
| template<kmctr_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kmctr_pb_v = kmctr_pb<Fc>::value |
|
template<prno_fc Fc, typename Pb> requires prno_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::prno (Pb &pb, std::span< u8 > dest, std::span< u8 > seed) -> void |
| enum class | arch::s390x::cpu::cpacf::prno_fc : u64 { query = 0x00 , sha512_drng_gen = 0x03 , sha512_drng_seed = 0x83 , trng_q_r2c_ratio = 0x70 , trng = 0x72 , query_qai = 0x7f } |
| PRNO/TRNG - PERFORM RANDOM NUMBER OPERATION/TRUE RANDOM NUMBER GENERATOR. | |
| template<prno_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::prno_pb_v = prno_pb<Fc>::value |
| auto | arch::s390x::cpu::cpacf::trng (std::span< u8 > dest, std::span< u8 > seed) -> void |
PCC - PERFORM CRYPTOGRAPHIC COMPUTATION | |
|
template<pcc_fc Fc, typename Pb> requires pcc_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::pcc (Pb &pb) -> condition_code |
| enum class | pcc_fc : u64 { query = 0x0 , comp_last_cmac_dea = 0x1 , comp_last_cmac_tdea128 = 0x2 , comp_last_cmac_tdea192 = 0x3 , comp_last_cmac_pdea = 0x9 , comp_last_cmac_ptdea128 = 0xa , comp_last_cmac_ptdea192 = 0xb , comp_last_cmac_aes128 = 0x12 , comp_last_cmac_aes192 = 0x13 , comp_last_cmac_aes256 = 0x14 , comp_last_cmac_paes128 = 0x1a , comp_last_cmac_paes192 = 0x1b , comp_last_cmac_paes256 = 0x1c , comp_xts_param_aes128 = 0x32 , comp_xts_param_aes192 = 0x34 , comp_xts_param_paes128 = 0x3a , comp_xts_param_paes192 = 0x3c , scalar_mul_p256 = 0x40 , scalar_mul_p384 = 0x41 , scalar_mul_p521 = 0x42 , scalar_mul_ed25519 = 0x48 , scalar_mul_ed448 = 0x49 , scalar_mul_x25519 = 0x50 , scalar_mul_x448 = 0x51 , query_qai = 0x7f } |
| template<pcc_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::pcc_pb_v = pcc_pb<Fc>::value |
PERFORM CRYPTOGRAPHIC KEY MANAGEMENT OPERATION | |
|
template<pckmo_fc Fc, typename Pb> requires pckmo_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::pckmo (Pb &pb) -> void |
| enum class | pckmo_fc : u64 { query = 0x0 , des_key = 0x1 , tdes_128_key = 0x2 , tdes_192_key = 0x3 , aes_128_key = 0x12 , aes_192_key = 0x13 , aes_256_key = 0x14 , aes_xts128_double_key = 0x15 , aes_xts256_double_key = 0x16 , ecc_p256_key = 0x20 , ecc_p384_key = 0x21 , ecc_p521_key = 0x22 , ecc_ed25519_key = 0x28 , ecc_ed448_key = 0x29 , hmac_512_key = 0x76 , hmac_1024_key = 0x7a , query_qai = 0x7f } |
| template<pckmo_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::pckmo_pb_v = pckmo_pb<Fc>::value |
KDSA - COMPUTE DIGITAL SIGNATURE AUTHENTICATION | |
|
template<kdsa_fc Fc, kdsa_deterministic_bit Fl, typename Pb> requires kdsa_pb_for<Fc, Pb> | |
| auto | arch::s390x::cpu::cpacf::kdsa (Pb &pb, std::span< const u8 > src) -> i32 |
| enum class | kdsa_deterministic_bit : u64 { non_deterministic = 0x0 , deterministic = ibmbitmask64(56) } |
| enum class | kdsa_fc : u64 { query = 0x00 , ecdsa_verify_p256 = 0x01 , ecdsa_verify_p384 = 0x02 , ecdsa_verify_p521 = 0x03 , ecdsa_sign_p256 = 0x09 , ecdsa_sign_p384 = 0x0a , ecdsa_sign_p521 = 0x0b , enc_ecdsa_sign_p256 = 0x11 , enc_ecdsa_sign_p384 = 0x12 , enc_ecdsa_sign_p521 = 0x13 , eddsa_verify_ed25519 = 0x20 , eddsa_verify_ed448 = 0x24 , eddsa_sign_ed25519 = 0x28 , eddsa_sign_ed448 = 0x2c , enc_eddsa_sign_ed25519 = 0x30 , enc_eddsa_sign_ed448 = 0x34 , query_qai = 0x7f } |
| template<kdsa_fc Fc> | |
| constexpr usize | arch::s390x::cpu::cpacf::kdsa_pb_v = kdsa_pb<Fc>::value |
CPACF instruction wrappers.
SPDX-License-Identifier: Apache-2.0