Add binary OpenSSH KRL export
This commit is contained in:
parent
5751748458
commit
b9e7c61e67
11 changed files with 209 additions and 20 deletions
|
|
@ -27,6 +27,7 @@ use geth_ssh_identity::{
|
|||
SshCertApproval, SshCertKind, SshCertRequest, SshCertRequestStatus, SshCertificateRecord,
|
||||
SshRevocationEntry, SshRevocationExportFormat, SshRevocationKind, build_ssh_cert_sign_command,
|
||||
cert_request_id, certificate_id, openssh_krl_spec, revocation_id, ssh_public_key_fingerprint,
|
||||
write_openssh_krl,
|
||||
};
|
||||
use geth_store::{
|
||||
Store, StoredAuthOp, StoredDbResource, StoredDocumentResource, StoredFileConflict,
|
||||
|
|
@ -897,7 +898,11 @@ pub fn handle_request(
|
|||
.map(ssh_revocation_from_stored)
|
||||
.collect::<Result<Vec<_>, _>>()?,
|
||||
}),
|
||||
ControlRequest::SshRevocationExport { out, format } => {
|
||||
ControlRequest::SshRevocationExport {
|
||||
out,
|
||||
format,
|
||||
ca_public,
|
||||
} => {
|
||||
let revocations = store
|
||||
.list_ssh_revocations()?
|
||||
.into_iter()
|
||||
|
|
@ -925,8 +930,17 @@ pub fn handle_request(
|
|||
openssh_krl_spec(&revocations)?,
|
||||
"OpenSSH KRL specification; generate a binary KRL with ssh-keygen -k -f <krl> [-s <ca.pub>] <spec>".to_owned(),
|
||||
),
|
||||
SshRevocationExportFormat::OpenSshKrl => {
|
||||
write_openssh_krl(&revocations, &out, ca_public.as_deref())?;
|
||||
(
|
||||
String::new(),
|
||||
"OpenSSH binary KRL generated with ssh-keygen; use ssh-keygen -Q -f <krl> <key-or-cert> to query it".to_owned(),
|
||||
)
|
||||
}
|
||||
};
|
||||
std::fs::write(&out, body)?;
|
||||
if format != SshRevocationExportFormat::OpenSshKrl {
|
||||
std::fs::write(&out, body)?;
|
||||
}
|
||||
Ok(ControlResponse::SshRevocationExported {
|
||||
out,
|
||||
format: format.to_string(),
|
||||
|
|
|
|||
Loading…
Reference in a new issue