openpgp_card_tool_git/
lib.rs1mod card;
6mod notify;
7mod sign;
8mod verify;
9
10use std::path::PathBuf;
11
12pub use card::set_pin;
13use rpgpie::certificate::Certificate;
14use rpgpie_certificate_store::Store;
15pub use sign::sign;
16pub use verify::verify;
17
18#[derive(Copy, Clone)]
19pub enum Armor {
20 NoArmor,
21 Armor,
22}
23
24pub(crate) fn open_store(
25 cert_store_path: Option<&PathBuf>,
26) -> Result<Store, rpgpie_certificate_store::Error> {
27 match cert_store_path {
28 None => Ok(Store::new()?),
29 Some(cert_store) => Ok(Store::with_base_dir(cert_store)?),
30 }
31}
32
33pub fn import_cert(
35 cert_file: &PathBuf,
36 cert_store_path: Option<&PathBuf>,
37) -> Result<(), Box<dyn std::error::Error>> {
38 let store = open_store(cert_store_path)?;
39
40 let certs = Certificate::load(&mut std::fs::File::open(cert_file)?)?;
42 for cert in certs {
43 store.insert(&cert)?;
44 }
45
46 Ok(())
47}