use super::generate_key::GenerateKeyParams;
use super::{Command, Response};
use {
Adapter, AsymmetricAlg, Capability, CommandType, Domain, ObjectId, ObjectLabel, Session,
SessionError,
};
pub fn generate_asymmetric_key<A: Adapter>(
session: &mut Session<A>,
key_id: ObjectId,
label: ObjectLabel,
domains: Domain,
capabilities: Capability,
algorithm: AsymmetricAlg,
) -> Result<ObjectId, SessionError> {
session
.send_command(GenAsymmetricKeyCommand(GenerateKeyParams {
key_id,
label,
domains,
capabilities,
algorithm: algorithm.into(),
})).map(|response| response.key_id)
}
#[derive(Serialize, Deserialize, Debug)]
pub(crate) struct GenAsymmetricKeyCommand(pub(crate) GenerateKeyParams);
impl Command for GenAsymmetricKeyCommand {
type ResponseType = GenAsymmetricKeyResponse;
}
#[derive(Serialize, Deserialize, Debug)]
pub(crate) struct GenAsymmetricKeyResponse {
pub key_id: ObjectId,
}
impl Response for GenAsymmetricKeyResponse {
const COMMAND_TYPE: CommandType = CommandType::GenerateAsymmetricKey;
}