mirror of
https://github.com/trussed-dev/piv-authenticator.git
synced 2026-06-20 04:16:15 -07:00
Add command_response tests for PUT DATA
This commit is contained in:
committed by
Nicolas Stalder
parent
6b822e09fb
commit
dd69f716dd
+4
-1
@@ -273,7 +273,10 @@ impl<'data> TryFrom<&'data [u8]> for PutData<'data> {
|
||||
};
|
||||
|
||||
let (tag, inner, rem) = take_do(rem).ok_or_else(|| {
|
||||
warn!("Failed to parse PUT DATA's second field: {:02x?}", data);
|
||||
warn!(
|
||||
"Failed to parse PUT DATA's second field: {:02x?}, {:02x?}",
|
||||
data, rem
|
||||
);
|
||||
Status::IncorrectDataParameter
|
||||
})?;
|
||||
|
||||
|
||||
@@ -85,5 +85,46 @@
|
||||
output: Len(70),
|
||||
)
|
||||
]
|
||||
),
|
||||
IoTest(
|
||||
name: "PUT DATA",
|
||||
cmd_resp: [
|
||||
GetData(
|
||||
input: "5C 01 7E",
|
||||
output: Data("7e 12 4f 0b a000000308000010000100 5f2f 02 4000")
|
||||
),
|
||||
GetData(
|
||||
input: "5C 03 5FC102",
|
||||
output: Len(61)
|
||||
),
|
||||
PutData(
|
||||
input: "5C 03 5FC102 53 10 000102030405060708090A0B0C0D0E0F",
|
||||
expected_status: SecurityStatusNotSatisfied
|
||||
),
|
||||
GetData(
|
||||
input: "5C 03 5FC102",
|
||||
output: Len(61)
|
||||
),
|
||||
AuthenticateManagement(
|
||||
key: (
|
||||
algorithm: Tdes,
|
||||
key: "0102030405060708 0102030405060708 0102030405060708"
|
||||
)
|
||||
),
|
||||
PutData(
|
||||
input: "5C 03 5FC102 53 10 000102030405060708090A0B0C0D0E0F",
|
||||
),
|
||||
GetData(
|
||||
input: "5C 03 5FC102",
|
||||
output: Data("53 10 000102030405060708090A0B0C0D0E0F")
|
||||
),
|
||||
PutData(
|
||||
input: "5C 01 7E 53 10 000102030405060708090A0B0C0D0E0F",
|
||||
),
|
||||
GetData(
|
||||
input: "5C 01 7E",
|
||||
output: Data("7e 10 000102030405060708090A0B0C0D0E0F")
|
||||
),
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
@@ -258,6 +258,20 @@ enum IoCmd {
|
||||
#[serde(default)]
|
||||
expected_status: Status,
|
||||
},
|
||||
GetData {
|
||||
input: String,
|
||||
#[serde(default)]
|
||||
output: OutputMatcher,
|
||||
#[serde(default)]
|
||||
expected_status: Status,
|
||||
},
|
||||
PutData {
|
||||
input: String,
|
||||
#[serde(default)]
|
||||
output: OutputMatcher,
|
||||
#[serde(default)]
|
||||
expected_status: Status,
|
||||
},
|
||||
VerifyDefaultApplicationPin {
|
||||
#[serde(default)]
|
||||
expected_status: Status,
|
||||
@@ -292,6 +306,16 @@ impl IoCmd {
|
||||
output,
|
||||
expected_status,
|
||||
} => Self::run_iodata(input, output, *expected_status, card),
|
||||
Self::GetData {
|
||||
input,
|
||||
output,
|
||||
expected_status,
|
||||
} => Self::run_get_data(input, output, *expected_status, card),
|
||||
Self::PutData {
|
||||
input,
|
||||
output,
|
||||
expected_status,
|
||||
} => Self::run_put_data(input, output, *expected_status, card),
|
||||
Self::VerifyDefaultApplicationPin { expected_status } => {
|
||||
Self::run_verify_default_application_pin(*expected_status, card)
|
||||
}
|
||||
@@ -373,6 +397,34 @@ impl IoCmd {
|
||||
Self::run_bytes(&parse_hex(input), output, expected_status, card);
|
||||
}
|
||||
|
||||
fn run_get_data(
|
||||
input: &str,
|
||||
output: &OutputMatcher,
|
||||
expected_status: Status,
|
||||
card: &mut setup::Piv,
|
||||
) {
|
||||
Self::run_bytes(
|
||||
&build_command(0x00, 0xCB, 0x3F, 0xFF, &parse_hex(input), 0),
|
||||
output,
|
||||
expected_status,
|
||||
card,
|
||||
);
|
||||
}
|
||||
|
||||
fn run_put_data(
|
||||
input: &str,
|
||||
output: &OutputMatcher,
|
||||
expected_status: Status,
|
||||
card: &mut setup::Piv,
|
||||
) {
|
||||
Self::run_bytes(
|
||||
&build_command(0x00, 0xDB, 0x3F, 0xFF, &parse_hex(input), 0),
|
||||
output,
|
||||
expected_status,
|
||||
card,
|
||||
);
|
||||
}
|
||||
|
||||
fn run_authenticate_management(
|
||||
alg: Algorithm,
|
||||
key: &str,
|
||||
|
||||
Reference in New Issue
Block a user