feat: init commit

This commit is contained in:
2021-08-02 00:18:44 +08:00
parent e345083e85
commit 10350820f9
4 changed files with 1357 additions and 3 deletions

5
.gitignore vendored
View File

@@ -4,9 +4,8 @@
debug/
target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
.idea/
__git_ignore/
# These are backup files generated by rustfmt
**/*.rs.bk

1250
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

13
Cargo.toml Normal file
View File

@@ -0,0 +1,13 @@
[package]
name = "fido2-cli"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
clap = "2.33"
rust_util = { version = "0.6", features = ["use_clap"] }
ctap-hid-fido2 = "2.1.3"
ctap_hmac = "0.4.5"

92
src/main.rs Normal file
View File

@@ -0,0 +1,92 @@
use ctap_hmac::FidoCredentialRequestBuilder;
use ctap_hmac::FidoAssertionRequestBuilder;
use ctap_hmac::{FidoDevice, FidoCredentialRequest};
use ctap_hmac::extensions::HmacExtension;
use ctap_hid_fido2::{HidParam, InfoParam};
use ctap_hid_fido2::verifier;
fn main() {
match ctap_hid_fido2::get_info(&HidParam::get_default_params()) {
Ok(info) => println!("{}", info),
Err(err) => println!("Error: {}", err),
};
println!("{}", "-".repeat(88));
match ctap_hid_fido2::get_info_u2f(&HidParam::get_default_params()) {
Ok(result) => println!("{:?}", result),
Err(e) => println!("error: {:?}", e),
}
println!("{}", "-".repeat(88));
match ctap_hid_fido2::get_pin_retries(&HidParam::get_default_params()) {
Ok(retry) => println!("{}", retry),
Err(e) => println!("error: {:?}", e),
};
println!("{}", "-".repeat(88));
match ctap_hid_fido2::enable_info_param(&HidParam::get_default_params(), &InfoParam::VersionsFido21Pre) {
Ok(result) => println!("FIDO 2.1 PRE = {:?}", result),
Err(e) => println!("- error: {:?}", e),
};
println!("----- test-with-pin-non-rk start -----");
// parameter
let rpid = "test.com";
let pin = "123456";
let challenge = verifier::create_challenge();
// Register
println!("Register - make_credential()");
println!("- rpid = {:?}", rpid);
println!(
"- challenge({:02}) = {:?}",
challenge.len(),
&challenge
);
let att = ctap_hid_fido2::make_credential(
&HidParam::get_default_params(),
rpid,
&challenge,
Some(pin),
).expect("make cred");
println!("- Register Success!!");
println!("Attestation");
println!("{}", att);
}
fn _main2() {
let devices = ctap_hmac::get_devices();
let mut devices = match devices {
Err(e) => {
println!("{}", e);
return;
}
Ok(devices) => devices
};
while let Some(d) = devices.next() {
println!("{:?}", d);
}
let device_info = ctap_hmac::get_devices().unwrap().next().unwrap();
let mut device = FidoDevice::new(&device_info).unwrap();
device.unlock("123456").unwrap();
let cred_request = FidoCredentialRequestBuilder::default()
.rp_id("rp_id")
.user_name("user_name")
.build().unwrap();
let cred = device.make_credential(&cred_request).unwrap();
let cred = &&cred;
println!("{:?}", cred);
let assertion_request = FidoAssertionRequestBuilder::default()
.rp_id("rp_id")
.credential(cred)
.build().unwrap();
let result = device.get_assertion(&assertion_request);
}