feat: init commit
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -4,9 +4,8 @@
|
|||||||
debug/
|
debug/
|
||||||
target/
|
target/
|
||||||
|
|
||||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
.idea/
|
||||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
__git_ignore/
|
||||||
Cargo.lock
|
|
||||||
|
|
||||||
# These are backup files generated by rustfmt
|
# These are backup files generated by rustfmt
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
|
|||||||
1250
Cargo.lock
generated
Normal file
1250
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
13
Cargo.toml
Normal file
13
Cargo.toml
Normal 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
92
src/main.rs
Normal 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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user