mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
This streamlines and unifies the use and (de)serialization of structs using a secret id. As a bonus, the hidden `for_pv` module is not longer needed. Signed-off-by: Steffen Eiden <seiden@linux.ibm.com> Reviewed-by: Julian Ruess <julianr@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
96 lines
2.8 KiB
Rust
96 lines
2.8 KiB
Rust
// SPDX-License-Identifier: MIT
|
|
//
|
|
// Copyright IBM Corp. 2023
|
|
|
|
#![deny(missing_docs)]
|
|
//! pv - library for pv-tools
|
|
//!
|
|
//! This library is intened to be used by tools and libraries that
|
|
//! are used for creating and managing IBM Secure Execution guests.
|
|
//! `pv` provides abstraction layers for encryption, secure memory management,
|
|
//! logging, and accessing the uvdevice.
|
|
//!
|
|
//! If you do not need any OpenSSL features use `pv_core`.
|
|
//! This crate reexports all symbols from `pv_core`
|
|
mod brcb;
|
|
mod cli;
|
|
mod crypto;
|
|
mod error;
|
|
mod req;
|
|
mod secret;
|
|
mod utils;
|
|
mod uvsecret;
|
|
mod verify;
|
|
|
|
/// utility functions for writing TESTS!!!
|
|
//hide any test helpers on docs!
|
|
#[doc(hidden)]
|
|
#[allow(dead_code)]
|
|
pub mod test_utils;
|
|
|
|
pub use ::utils::assert_size;
|
|
pub use ::utils::static_assert;
|
|
|
|
const PAGESIZE: usize = 0x1000;
|
|
|
|
/// Definitions and functions for interacting with the Ultravisor
|
|
pub mod uv {
|
|
pub use pv_core::uv::*;
|
|
}
|
|
|
|
/// Miscellaneous functions and definitions
|
|
pub mod misc {
|
|
pub use crate::cli::{
|
|
get_reader_from_cli_file_arg, get_writer_from_cli_file_arg, CertificateOptions, STDIN,
|
|
STDOUT,
|
|
};
|
|
pub use crate::utils::{read_certs, read_crls, read_private_key};
|
|
pub use pv_core::misc::*;
|
|
pub use pv_core::PvLogger;
|
|
}
|
|
|
|
pub use crate::error::HkdVerifyErrorType;
|
|
pub use error::{Error, Result};
|
|
|
|
/// Functionalities to build UV requests
|
|
pub mod request {
|
|
pub use crate::brcb::{BootHdrMagic, BootHdrTags};
|
|
pub use crate::crypto::derive_key;
|
|
pub use crate::crypto::random_array;
|
|
pub use crate::crypto::{encrypt_aes_gcm, gen_ec_key, AesGcmResult};
|
|
pub use crate::crypto::{hash, hkdf_rfc_5869};
|
|
pub use crate::crypto::{sign_msg, verify_signature};
|
|
pub use crate::crypto::{Aes256Key, SymKey, SymKeyType};
|
|
pub use crate::req::{Aad, BinReqValues, Encrypt, Keyslot, ReqEncrCtx, Request};
|
|
pub use crate::secret::{Secret, Zeroize};
|
|
pub use crate::verify::{CertVerifier, HkdVerifier, NoVerifyHkd};
|
|
|
|
/// Reexports some useful OpenSSL symbols
|
|
pub mod openssl {
|
|
pub use openssl::error::ErrorStack;
|
|
pub use openssl::hash::MessageDigest;
|
|
pub use openssl::md::Md;
|
|
pub use openssl::pkey;
|
|
}
|
|
|
|
/// Functionalities for creating add-secret requests
|
|
pub mod uvsecret {
|
|
pub use crate::uvsecret::{
|
|
asrcb::{AddSecretFlags, AddSecretRequest, AddSecretVersion},
|
|
ext_secret::ExtSecret,
|
|
guest_secret::GuestSecret,
|
|
user_data::verify_asrcb_and_get_user_data,
|
|
};
|
|
pub use pv_core::request::uvsecret::AddSecretMagic;
|
|
pub use pv_core::request::uvsecret::UserDataType;
|
|
}
|
|
pub use pv_core::request::RequestMagic;
|
|
}
|
|
|
|
/// Provides cargo version Info about this crate.
|
|
///
|
|
/// Produces `pv-crate <version>`
|
|
pub const fn crate_info() -> &'static str {
|
|
concat!(env!("CARGO_PKG_NAME"), "-crate ", env!("CARGO_PKG_VERSION"))
|
|
}
|