Support some more weird pcr_id specifications
This change makes it pass all the different possible values provided by the clevis tpm2 pin test suite. Signed-off-by: Patrick Uiterwijk <patrick@puiterwijk.org>
This commit is contained in:
parent
6a37627500
commit
e2f32d0fa0
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "clevis-pin-tpm2"
|
name = "clevis-pin-tpm2"
|
||||||
version = "0.1.2"
|
version = "0.1.3"
|
||||||
description = "Clevis TPM2 PIN with policy support"
|
description = "Clevis TPM2 PIN with policy support"
|
||||||
authors = ["Patrick Uiterwijk <patrick@puiterwijk.org>"]
|
authors = ["Patrick Uiterwijk <patrick@puiterwijk.org>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
12
src/cli.rs
12
src/cli.rs
|
@ -110,12 +110,20 @@ impl TPM2Config {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn normalize_pcr_ids(&mut self) -> Result<(), PinError> {
|
fn normalize_pcr_ids(&mut self) -> Result<(), PinError> {
|
||||||
|
// Normalize from array with one string to just string
|
||||||
|
if let Some(serde_json::Value::Array(vals)) = &self.pcr_ids {
|
||||||
|
if vals.len() == 1 {
|
||||||
|
if let serde_json::Value::String(val) = &vals[0] {
|
||||||
|
self.pcr_ids = Some(serde_json::Value::String(val.to_string()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Normalize pcr_ids from comma-separated string to array
|
// Normalize pcr_ids from comma-separated string to array
|
||||||
if let Some(serde_json::Value::String(val)) = &self.pcr_ids {
|
if let Some(serde_json::Value::String(val)) = &self.pcr_ids {
|
||||||
// Was a string, do a split
|
// Was a string, do a split
|
||||||
let newval: Vec<serde_json::Value> = val
|
let newval: Vec<serde_json::Value> = val
|
||||||
.split(',')
|
.split(',')
|
||||||
.map(|x| serde_json::Value::String(x.to_string()))
|
.map(|x| serde_json::Value::String(x.trim().to_string()))
|
||||||
.collect();
|
.collect();
|
||||||
self.pcr_ids = Some(serde_json::Value::Array(newval));
|
self.pcr_ids = Some(serde_json::Value::Array(newval));
|
||||||
}
|
}
|
||||||
|
@ -124,7 +132,7 @@ impl TPM2Config {
|
||||||
let newvals: Result<Vec<serde_json::Value>, _> = vals
|
let newvals: Result<Vec<serde_json::Value>, _> = vals
|
||||||
.iter()
|
.iter()
|
||||||
.map(|x| match x {
|
.map(|x| match x {
|
||||||
serde_json::Value::String(val) => match val.parse::<serde_json::Number>() {
|
serde_json::Value::String(val) => match val.trim().parse::<serde_json::Number>() {
|
||||||
Ok(res) => {
|
Ok(res) => {
|
||||||
let new = serde_json::Value::Number(res);
|
let new = serde_json::Value::Number(res);
|
||||||
if !new.is_u64() {
|
if !new.is_u64() {
|
||||||
|
|
Loading…
Reference in a new issue