feat: v1.0.7, offline init support yubikey
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -1007,7 +1007,7 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "local-mini-kms"
|
name = "local-mini-kms"
|
||||||
version = "1.0.6"
|
version = "1.0.7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm-stream",
|
"aes-gcm-stream",
|
||||||
"aes-kw",
|
"aes-kw",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "local-mini-kms"
|
name = "local-mini-kms"
|
||||||
version = "1.0.6"
|
version = "1.0.7"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|||||||
15
src/cli.rs
15
src/cli.rs
@@ -6,7 +6,7 @@ use clap::{App, Arg, ArgMatches, SubCommand};
|
|||||||
use hyper::body::Buf;
|
use hyper::body::Buf;
|
||||||
use hyper::{Body, Client, Method, Request, Response, StatusCode};
|
use hyper::{Body, Client, Method, Request, Response, StatusCode};
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
use rust_util::{debugging, opt_value_result, simple_error, success, XResult};
|
use rust_util::{debugging, opt_result, opt_value_result, simple_error, success, XResult};
|
||||||
use serde_json::{json, Map, Value};
|
use serde_json::{json, Map, Value};
|
||||||
|
|
||||||
use crate::jose;
|
use crate::jose;
|
||||||
@@ -205,6 +205,19 @@ fn do_offline_init(_arg_matches: &ArgMatches<'_>, _sub_arg_matches: &ArgMatches<
|
|||||||
} else if line.starts_with("base64:") {
|
} else if line.starts_with("base64:") {
|
||||||
let base64: String = line.chars().skip(7).collect();
|
let base64: String = line.chars().skip(7).collect();
|
||||||
STANDARD.decode(&base64)?
|
STANDARD.decode(&base64)?
|
||||||
|
} else if line.starts_with("LKMS:") {
|
||||||
|
#[cfg(feature = "yubikey")]
|
||||||
|
{
|
||||||
|
use crate::yubikey_hmac;
|
||||||
|
// Yubikey Hmac encrypted key
|
||||||
|
let challenge = opt_result!(
|
||||||
|
pinentry_util::read_pin(Some("Input yubikey challenge"), Some("Challenge: ")), "Read challenge failed: {}");
|
||||||
|
let derived_key = yubikey_hmac::yubikey_challenge_as_32_bytes(challenge.get_pin().as_bytes())?;
|
||||||
|
let (key, _) = jose::deserialize_jwe_aes(&line, &derived_key)?;
|
||||||
|
key
|
||||||
|
}
|
||||||
|
#[cfg(not(feature = "yubikey"))]
|
||||||
|
return simple_error!("Yubikey feature is not enabled.");
|
||||||
} else {
|
} else {
|
||||||
line.as_bytes().to_vec()
|
line.as_bytes().to_vec()
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user