Skip to content

Instantly share code, notes, and snippets.

@micolous
Created September 18, 2022 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save micolous/753c172bb23af8a13f99f7677a7e79de to your computer and use it in GitHub Desktop.
Save micolous/753c172bb23af8a13f99f7677a7e79de to your computer and use it in GitHub Desktop.
Yubikey Security Key C NFC trace with webauthn-rs
% RUST_LOG=trace cargo run --example nfc_token_info --features nfc
Running `~/webauthn-rs/target/debug/examples/nfc_token_info`
2022-09-18T09:02:32.931534Z INFO webauthn_authenticator_rs::nfc: Using reader: "ACS ACR122U"
2022-09-18T09:02:32.931588Z INFO nfc_token_info::core: Using reader: NFCReader { reader_id: "ACS ACR122U" }
2022-09-18T09:02:32.933665Z TRACE webauthn_authenticator_rs::nfc: rdr_state: CHANGED | EMPTY
2022-09-18T09:02:32.933690Z INFO webauthn_authenticator_rs::nfc: Card removed
2022-09-18T09:02:39.505864Z TRACE webauthn_authenticator_rs::nfc: rdr_state: CHANGED | PRESENT
2022-09-18T09:02:39.508551Z TRACE webauthn_authenticator_rs::nfc: ATR: [3b, 8d, 80, 01, 80, 73, c0, 21, c0, 57, 59, 75, 62, 69, 4b, 65, 79, f9]
2022-09-18T09:02:39.508662Z TRACE webauthn_authenticator_rs::nfc: Parsed: Atr { protocols: [0, 1], t1: [128, 115, 192, 33, 192, 87, 89, 117, 98, 105, 75, 101, 121], storage_card: false, card_issuers_data: Some([89, 117, 98, 105, 75, 101, 121]), command_chaining: Some(true), extended_lc: Some(true) }
2022-09-18T09:02:39.508696Z INFO nfc_token_info::core: Card detected ...
2022-09-18T09:02:39.508761Z TRACE webauthn_authenticator_rs::nfc: >>> [00, a4, 04, 00, 08, a0, 00, 00, 06, 47, 2f, 00, 01, 00]
2022-09-18T09:02:39.790029Z TRACE webauthn_authenticator_rs::nfc: <<< [55, 32, 46, 5f, 56, 32, 90, 00]
2022-09-18T09:02:39.790115Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 10, 00, 00, 01, 04, 00]
2022-09-18T09:02:39.922228Z TRACE webauthn_authenticator_rs::nfc: <<< [00, ac, 01, 83, 66, 55, 32, 46, 5f, 56, 32, 68, 46, 49, 44, 4f, 5f, 32, 5f, 30, 6c, 46, 49, 44, 4f, 5f, 32, 5f, 31, 5f, 50, 52, 45, 02, 82, 6b, 63, 72, 65, 64, 50, 72, 6f, 74, 65, 63, 74, 6b, 68, 6d, 61, 63, 2d, 73, 65, 63, 72, 65, 74, 03, 50, 14, 9a, 20, 21, 8e, f6, 41, 33, 96, b8, 81, f8, d5, b7, f1, f5, 04, a5, 62, 72, 6b, f5, 62, 75, 70, f5, 64, 70, 6c, 61, 74, f4, 69, 63, 6c, 69, 65, 6e, 74, 50, 69, 6e, f5, 75, 63, 72, 65, 64, 65, 6e, 74, 69, 61, 6c, 4d, 67, 6d, 74, 50, 72, 65, 76, 69, 65, 77, f5, 05, 19, 04, b0, 06, 82, 02, 01, 07, 08, 08, 18, 80, 09, 82, 63, 6e, 66, 63, 63, 75, 73, 62, 0a, 82, a2, 63, 61, 6c, 67, 26, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, a2, 63, 61, 6c, 67, 27, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, 0d, 04, 0e, 1a, 00, 05, 04, 03, 90, 00]
2022-09-18T09:02:39.922544Z DEBUG webauthn_authenticator_rs::nfc: tokinfo=GetInfoResponse { versions: {"FIDO_2_0", "FIDO_2_1_PRE", "U2F_V2"}, extensions: Some(["credProtect", "hmac-secret"]), aaguid: [20, 154, 32, 33, 142, 246, 65, 51, 150, 184, 129, 248, 213, 183, 241, 245], options: Some({"clientPin": true, "credentialMgmtPreview": true, "plat": false, "rk": true, "up": true}), max_msg_size: Some(1200), pin_protocols: Some([2, 1]), max_cred_count_in_list: Some(8), max_cred_id_len: Some(128), transports: Some(["nfc", "usb"]), algorithms: Some(Array([Map({Text("alg"): Integer(-7), Text("type"): Text("public-key")}), Map({Text("alg"): Integer(-8), Text("type"): Text("public-key")})])) }
2022-09-18T09:02:39.922621Z INFO nfc_token_info::core: Using token Ctap2_1_pre { token_info: GetInfoResponse { versions: {"FIDO_2_0", "FIDO_2_1_PRE", "U2F_V2"}, extensions: Some(["credProtect", "hmac-secret"]), aaguid: [20, 154, 32, 33, 142, 246, 65, 51, 150, 184, 129, 248, 213, 183, 241, 245], options: Some({"clientPin": true, "credentialMgmtPreview": true, "plat": false, "rk": true, "up": true}), max_msg_size: Some(1200), pin_protocols: Some([2, 1]), max_cred_count_in_list: Some(8), max_cred_id_len: Some(128), transports: Some(["nfc", "usb"]), algorithms: Some(Array([Map({Text("alg"): Integer(-7), Text("type"): Text("public-key")}), Map({Text("alg"): Integer(-8), Text("type"): Text("public-key")})])) } }
2022-09-18T09:02:39.922690Z INFO webauthn_authenticator_rs::cbor::make_credential: Base64UrlSafeData([116, 101, 115, 116])
2022-09-18T09:02:39.922709Z INFO webauthn_authenticator_rs::cbor::make_credential: Map({Text("id"): Bytes([116, 101, 115, 116]), Text("name"): Text("test"), Text("displayName"): Text("test")})
2022-09-18T09:02:39.922812Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 10, 00, 00, 77, 01, bf, 01, 58, 20, 68, 71, 34, 96, 82, 22, ec, 17, 20, 2e, 42, 50, 5f, 8e, d2, b1, 6a, e2, 2f, 16, bb, 05, b8, 8c, 25, db, 9e, 60, 26, 45, f1, 41, 02, a2, 62, 69, 64, 64, 74, 65, 73, 74, 64, 6e, 61, 6d, 65, 64, 74, 65, 73, 74, 03, a3, 62, 69, 64, 44, 74, 65, 73, 74, 64, 6e, 61, 6d, 65, 64, 74, 65, 73, 74, 6b, 64, 69, 73, 70, 6c, 61, 79, 4e, 61, 6d, 65, 64, 74, 65, 73, 74, 04, 81, a2, 63, 61, 6c, 67, 26, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, ff, 00]
2022-09-18T09:02:39.995550Z TRACE webauthn_authenticator_rs::nfc: <<< [11, 90, 00]
2022-09-18T09:02:39.995596Z TRACE webauthn_authenticator_rs::nfc: got encoded APDU: ISO7816ResponseAPDU { data: [11], sw1: 90, sw2: 0 }
2022-09-18T09:02:39.995660Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 12, 01, 00, 00]
2022-09-18T09:02:40.007692Z TRACE webauthn_authenticator_rs::nfc: <<< [90, 00]
2022-09-18T09:02:42.414578Z TRACE webauthn_authenticator_rs::nfc: rdr_state: CHANGED | EMPTY
2022-09-18T09:02:42.414620Z INFO webauthn_authenticator_rs::nfc: Card removed
2022-09-18T09:02:44.076533Z TRACE webauthn_authenticator_rs::nfc: rdr_state: CHANGED | PRESENT
2022-09-18T09:02:44.078710Z TRACE webauthn_authenticator_rs::nfc: ATR: [3b, 8d, 80, 01, 80, 73, c0, 21, c0, 57, 59, 75, 62, 69, 4b, 65, 79, f9]
2022-09-18T09:02:44.078781Z TRACE webauthn_authenticator_rs::nfc: Parsed: Atr { protocols: [0, 1], t1: [128, 115, 192, 33, 192, 87, 89, 117, 98, 105, 75, 101, 121], storage_card: false, card_issuers_data: Some([89, 117, 98, 105, 75, 101, 121]), command_chaining: Some(true), extended_lc: Some(true) }
2022-09-18T09:02:44.078825Z INFO nfc_token_info::core: Card detected ...
2022-09-18T09:02:44.078869Z TRACE webauthn_authenticator_rs::nfc: >>> [00, a4, 04, 00, 08, a0, 00, 00, 06, 47, 2f, 00, 01, 00]
2022-09-18T09:02:44.360035Z TRACE webauthn_authenticator_rs::nfc: <<< [55, 32, 46, 5f, 56, 32, 90, 00]
2022-09-18T09:02:44.360087Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 10, 00, 00, 01, 04, 00]
2022-09-18T09:02:44.492117Z TRACE webauthn_authenticator_rs::nfc: <<< [00, ac, 01, 83, 66, 55, 32, 46, 5f, 56, 32, 68, 46, 49, 44, 4f, 5f, 32, 5f, 30, 6c, 46, 49, 44, 4f, 5f, 32, 5f, 31, 5f, 50, 52, 45, 02, 82, 6b, 63, 72, 65, 64, 50, 72, 6f, 74, 65, 63, 74, 6b, 68, 6d, 61, 63, 2d, 73, 65, 63, 72, 65, 74, 03, 50, 14, 9a, 20, 21, 8e, f6, 41, 33, 96, b8, 81, f8, d5, b7, f1, f5, 04, a5, 62, 72, 6b, f5, 62, 75, 70, f5, 64, 70, 6c, 61, 74, f4, 69, 63, 6c, 69, 65, 6e, 74, 50, 69, 6e, f5, 75, 63, 72, 65, 64, 65, 6e, 74, 69, 61, 6c, 4d, 67, 6d, 74, 50, 72, 65, 76, 69, 65, 77, f5, 05, 19, 04, b0, 06, 82, 02, 01, 07, 08, 08, 18, 80, 09, 82, 63, 6e, 66, 63, 63, 75, 73, 62, 0a, 82, a2, 63, 61, 6c, 67, 26, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, a2, 63, 61, 6c, 67, 27, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, 0d, 04, 0e, 1a, 00, 05, 04, 03, 90, 00]
2022-09-18T09:02:44.492334Z DEBUG webauthn_authenticator_rs::nfc: tokinfo=GetInfoResponse { versions: {"FIDO_2_0", "FIDO_2_1_PRE", "U2F_V2"}, extensions: Some(["credProtect", "hmac-secret"]), aaguid: [20, 154, 32, 33, 142, 246, 65, 51, 150, 184, 129, 248, 213, 183, 241, 245], options: Some({"clientPin": true, "credentialMgmtPreview": true, "plat": false, "rk": true, "up": true}), max_msg_size: Some(1200), pin_protocols: Some([2, 1]), max_cred_count_in_list: Some(8), max_cred_id_len: Some(128), transports: Some(["nfc", "usb"]), algorithms: Some(Array([Map({Text("alg"): Integer(-7), Text("type"): Text("public-key")}), Map({Text("alg"): Integer(-8), Text("type"): Text("public-key")})])) }
2022-09-18T09:02:44.492383Z INFO nfc_token_info::core: Using token Ctap2_1_pre { token_info: GetInfoResponse { versions: {"FIDO_2_0", "FIDO_2_1_PRE", "U2F_V2"}, extensions: Some(["credProtect", "hmac-secret"]), aaguid: [20, 154, 32, 33, 142, 246, 65, 51, 150, 184, 129, 248, 213, 183, 241, 245], options: Some({"clientPin": true, "credentialMgmtPreview": true, "plat": false, "rk": true, "up": true}), max_msg_size: Some(1200), pin_protocols: Some([2, 1]), max_cred_count_in_list: Some(8), max_cred_id_len: Some(128), transports: Some(["nfc", "usb"]), algorithms: Some(Array([Map({Text("alg"): Integer(-7), Text("type"): Text("public-key")}), Map({Text("alg"): Integer(-8), Text("type"): Text("public-key")})])) } }
2022-09-18T09:02:44.492473Z INFO webauthn_authenticator_rs::cbor::make_credential: Base64UrlSafeData([116, 101, 115, 116])
2022-09-18T09:02:44.492489Z INFO webauthn_authenticator_rs::cbor::make_credential: Map({Text("id"): Bytes([116, 101, 115, 116]), Text("name"): Text("test"), Text("displayName"): Text("test")})
2022-09-18T09:02:44.492565Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 10, 00, 00, 77, 01, bf, 01, 58, 20, 68, 71, 34, 96, 82, 22, ec, 17, 20, 2e, 42, 50, 5f, 8e, d2, b1, 6a, e2, 2f, 16, bb, 05, b8, 8c, 25, db, 9e, 60, 26, 45, f1, 41, 02, a2, 62, 69, 64, 64, 74, 65, 73, 74, 64, 6e, 61, 6d, 65, 64, 74, 65, 73, 74, 03, a3, 62, 69, 64, 44, 74, 65, 73, 74, 64, 6e, 61, 6d, 65, 64, 74, 65, 73, 74, 6b, 64, 69, 73, 70, 6c, 61, 79, 4e, 61, 6d, 65, 64, 74, 65, 73, 74, 04, 81, a2, 63, 61, 6c, 67, 26, 64, 74, 79, 70, 65, 6a, 70, 75, 62, 6c, 69, 63, 2d, 6b, 65, 79, ff, 00]
2022-09-18T09:02:44.565498Z TRACE webauthn_authenticator_rs::nfc: <<< [11, 90, 00]
2022-09-18T09:02:44.565530Z TRACE webauthn_authenticator_rs::nfc: got encoded APDU: ISO7816ResponseAPDU { data: [11], sw1: 90, sw2: 0 }
2022-09-18T09:02:44.565588Z TRACE webauthn_authenticator_rs::nfc: >>> [80, 12, 01, 00, 00]
2022-09-18T09:02:44.577988Z TRACE webauthn_authenticator_rs::nfc: <<< [90, 00]
2022-09-18T09:02:45.971008Z TRACE webauthn_authenticator_rs::nfc: rdr_state: CHANGED | EMPTY
2022-09-18T09:02:45.971037Z INFO webauthn_authenticator_rs::nfc: Card removed
^C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment