ZXFoundation™ 26h2
Loading...
Searching...
No Matches
cpacf.cxxm File Reference

CPACF instruction wrappers. More...

import std;
import lib.bit;
import zxfoundation.base.types;
import arch.s390x.cpu.types;
Include dependency graph for cpacf.cxxm:

Data Structures

struct  arch::s390x::cpu::cpacf::common_qai_pb
 Common Query Authentication Parameter Block. More...
struct  arch::s390x::cpu::cpacf::common_query_pb
 Common Query Information Parameter Block. More...
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_sign_p256 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_sign_p384 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_sign_p521 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_verify_p256 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_verify_p384 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::ecdsa_verify_p521 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::eddsa_sign_ed25519 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::eddsa_sign_ed448 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::eddsa_verify_ed25519 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::eddsa_verify_ed448 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::enc_ecdsa_sign_p256 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::enc_ecdsa_sign_p384 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::enc_ecdsa_sign_p521 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::enc_eddsa_sign_ed25519 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::enc_eddsa_sign_ed448 >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::query >
struct  arch::s390x::cpu::cpacf::kdsa_pb< kdsa_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::ghash >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::query >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha1 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha256 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha3_224 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha3_384 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha3_512 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::sha512 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::shake128 >
struct  arch::s390x::cpu::cpacf::kimd_pb< kimd_fc::shake256 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::query >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::query_qai >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha1 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha256 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha3_224 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha3_256 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha3_384 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha3_512 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::sha512 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::shake128 >
struct  arch::s390x::cpu::cpacf::klmd_pb< klmd_fc::shake256 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::aes128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::aes192 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::aes256 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::dea >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::paes128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::paes192 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::paes256 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::pdea >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::pxts128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::pxts128full >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::pxts256 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::pxts256full >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::query >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::query_qai >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::xts128 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::xts128full >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::xts256 >
struct  arch::s390x::cpu::cpacf::km_pb< km_fc::xts256full >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_aes128 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_aes192 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_aes256 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_paes128 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_paes192 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::gcm_paes256 >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::query >
struct  arch::s390x::cpu::cpacf::kma_pb< kma_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::aes128 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::aes192 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::aes256 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::dea >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::hmac_sha224 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::hmac_sha256 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::hmac_sha384 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::hmac_sha512 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::paes128 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::paes192 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::paes256 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::pdea >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::phmac_sha224 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::phmac_sha256 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::phmac_sha384 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::phmac_sha512 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::quert_qai >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::query >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::kmac_pb< kmac_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::aes128 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::aes192 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::aes256 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::dea >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::paes128 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::paes192 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::paes256 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::pdea >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::prng >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::query >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::kmc_pb< kmc_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::aes128 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::aes192 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::aes256 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::dea >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::paes128 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::paes192 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::paes256 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::pdea >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::query >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::kmctr_pb< kmctr_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::aes128 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::aes192 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::aes256 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::dea >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::paes128 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::paes192 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::paes256 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::pdea >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::query >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::kmf_pb< kmf_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::aes128 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::aes192 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::aes256 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::dea >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::paes128 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::paes192 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::paes256 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::pdea >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::ptdea128 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::ptdea192 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::query >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::query_qai >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::tdea128 >
struct  arch::s390x::cpu::cpacf::kmo_pb< kmo_fc::tdea192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_aes128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_aes192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_aes256 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_dea >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_paes128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_paes192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_paes256 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_pdea >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_ptdea128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_ptdea192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_tdea128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_last_cmac_tdea192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_xts_param_aes128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_xts_param_aes192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_xts_param_paes128 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::comp_xts_param_paes192 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::query >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::query_qai >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_ed25519 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_ed448 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_p256 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_p384 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_p521 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_x25519 >
struct  arch::s390x::cpu::cpacf::pcc_pb< pcc_fc::scalar_mul_x448 >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::aes_128_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::aes_192_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::aes_256_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::aes_xts128_double_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::aes_xts256_double_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::des_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::ecc_ed25519_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::ecc_ed448_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::ecc_p256_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::ecc_p384_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::ecc_p521_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::hmac_1024_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::hmac_512_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::query >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::query_qai >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::tdes_128_key >
struct  arch::s390x::cpu::cpacf::pckmo_pb< pckmo_fc::tdes_192_key >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::query >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::query_qai >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::sha512_drng_gen >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::sha512_drng_seed >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::trng >
struct  arch::s390x::cpu::cpacf::prno_pb< prno_fc::trng_q_r2c_ratio >

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

Detailed Description

CPACF instruction wrappers.

SPDX-License-Identifier: Apache-2.0