Added login data
Added ability to read and set login data field.
This commit is contained in:
parent
5a77950f85
commit
61ab492d9c
4 changed files with 45 additions and 0 deletions
|
@ -40,6 +40,10 @@ fn main() -> Result<()> {
|
|||
}
|
||||
};
|
||||
|
||||
println!("Set login data");
|
||||
let login_data_out = run_test(&mut card, test_set_login_data, &[])?;
|
||||
println!(" {login_data_out:x?}");
|
||||
|
||||
for key_file in &key_files {
|
||||
// upload keys
|
||||
print!("Upload key '{key_file}'");
|
||||
|
|
|
@ -352,6 +352,22 @@ pub fn test_set_user_data(pgp: &mut OpenPgp, _param: &[&str]) -> Result<TestOutp
|
|||
Ok(vec![])
|
||||
}
|
||||
|
||||
pub fn test_set_login_data(pgp: &mut OpenPgp, _params: &[&str]) -> Result<TestOutput, TestError> {
|
||||
let mut pgpt = pgp.transaction()?;
|
||||
|
||||
pgpt.verify_pw3(b"12345678")?;
|
||||
|
||||
let test_login = b"someone@somewhere.com";
|
||||
pgpt.set_login(test_login)?;
|
||||
|
||||
// Read the previously set login data
|
||||
let read_login_data = pgpt.login_data()?;
|
||||
|
||||
assert_eq!(read_login_data, test_login.to_vec());
|
||||
|
||||
Ok(vec![])
|
||||
}
|
||||
|
||||
pub fn test_private_data(pgp: &mut OpenPgp, _param: &[&str]) -> Result<TestOutput, TestError> {
|
||||
let mut pgpt = pgp.transaction()?;
|
||||
|
||||
|
|
|
@ -47,6 +47,11 @@ pub(crate) fn url() -> Command {
|
|||
get_data(Tags::Url)
|
||||
}
|
||||
|
||||
/// GET DO "Login Data"
|
||||
pub(crate) fn login_data() -> Command {
|
||||
get_data(Tags::LoginData)
|
||||
}
|
||||
|
||||
/// GET DO "Cardholder related data"
|
||||
pub(crate) fn cardholder_related_data() -> Command {
|
||||
get_data(Tags::CardholderRelatedData)
|
||||
|
@ -131,6 +136,11 @@ pub(crate) fn put_private_use_do(num: u8, data: Vec<u8>) -> Command {
|
|||
}
|
||||
}
|
||||
|
||||
/// PUT DO Login Data
|
||||
pub(crate) fn put_login_data(login_data: Vec<u8>) -> Command {
|
||||
put_data(Tags::LoginData, login_data)
|
||||
}
|
||||
|
||||
/// PUT DO Name
|
||||
pub(crate) fn put_name(name: Vec<u8>) -> Command {
|
||||
put_data(Tags::Name, name)
|
||||
|
|
|
@ -110,6 +110,15 @@ impl<'a> OpenPgpTransaction<'a> {
|
|||
Ok(resp.data()?.to_vec())
|
||||
}
|
||||
|
||||
/// Get Login Data (5e)
|
||||
pub fn login_data(&mut self) -> Result<Vec<u8>, Error> {
|
||||
log::info!("OpenPgpTransaction: login_data");
|
||||
|
||||
let resp = apdu::send_command(self.tx(), commands::login_data(), true)?;
|
||||
|
||||
Ok(resp.data()?.to_vec())
|
||||
}
|
||||
|
||||
/// Get cardholder related data (65)
|
||||
pub fn cardholder_related_data(&mut self) -> Result<CardholderRelatedData, Error> {
|
||||
log::info!("OpenPgpTransaction: cardholder_related_data");
|
||||
|
@ -717,6 +726,12 @@ impl<'a> OpenPgpTransaction<'a> {
|
|||
Ok(resp.data()?.to_vec())
|
||||
}
|
||||
|
||||
pub fn set_login(&mut self, login: &[u8]) -> Result<(), Error> {
|
||||
log::info!("OpenPgpTransaction: set_login");
|
||||
let put_login_data = commands::put_login_data(login.to_vec());
|
||||
apdu::send_command(self.tx(), put_login_data, false)?.try_into()
|
||||
}
|
||||
|
||||
pub fn set_name(&mut self, name: &[u8]) -> Result<(), Error> {
|
||||
log::info!("OpenPgpTransaction: set_name");
|
||||
|
||||
|
|
Loading…
Reference in a new issue