├── .gitignore ├── .tool-versions ├── LICENSE ├── README.md ├── attestation_key_pair.py ├── decode_bufinfo.py ├── docs ├── FAQ.md ├── certs.md ├── fido_certification.md ├── implementation.md ├── installation.md ├── requirements.md └── security_model.md ├── get_install_parameters.py ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── install_attestation_cert.py ├── mds.json ├── python_tests ├── __init__.py └── ctap │ ├── __init__.py │ ├── ctap_hid_device.py │ ├── ctap_test.py │ ├── test_auth_config.py │ ├── test_cred_blob.py │ ├── test_cred_mgmt.py │ ├── test_credprotect.py │ ├── test_ctap_attestation_mode_switch.py │ ├── test_ctap_attestation_mode_switch_with_fixed_key.py │ ├── test_ctap_basic_attestation.py │ ├── test_ctap_basics.py │ ├── test_ctap_locked_self_attestation.py │ ├── test_ctap_pins.py │ ├── test_ctap_resets.py │ ├── test_extended_apdus.py │ ├── test_hmac_secret.py │ ├── test_largeblobs.py │ ├── test_long_request_buffer.py │ ├── test_malformed_input.py │ ├── test_setminpin.py │ ├── test_u2f.py │ └── test_uvm.py ├── requirements.txt ├── settings.gradle └── src ├── main └── java │ └── us │ └── q3q │ └── fido2 │ ├── BufferManager.java │ ├── CannedCBOR.java │ ├── FIDO2Applet.java │ ├── FIDOConstants.java │ ├── P256Constants.java │ ├── PinRetryCounter.java │ ├── ResidentKeyData.java │ ├── SigOpCounter.java │ └── TransientStorage.java └── test └── java └── us └── q3q └── fido2 ├── AppletBasicTest.java └── VSim.java /.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle 2 | /.idea 3 | /build 4 | /venv 5 | __pycache__ 6 | /bin -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | python 3.12 2 | java 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/README.md -------------------------------------------------------------------------------- /attestation_key_pair.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/attestation_key_pair.py -------------------------------------------------------------------------------- /decode_bufinfo.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/decode_bufinfo.py -------------------------------------------------------------------------------- /docs/FAQ.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/FAQ.md -------------------------------------------------------------------------------- /docs/certs.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/certs.md -------------------------------------------------------------------------------- /docs/fido_certification.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/fido_certification.md -------------------------------------------------------------------------------- /docs/implementation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/implementation.md -------------------------------------------------------------------------------- /docs/installation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/installation.md -------------------------------------------------------------------------------- /docs/requirements.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/requirements.md -------------------------------------------------------------------------------- /docs/security_model.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/docs/security_model.md -------------------------------------------------------------------------------- /get_install_parameters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/get_install_parameters.py -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/gradlew.bat -------------------------------------------------------------------------------- /install_attestation_cert.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/install_attestation_cert.py -------------------------------------------------------------------------------- /mds.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/mds.json -------------------------------------------------------------------------------- /python_tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /python_tests/ctap/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /python_tests/ctap/ctap_hid_device.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/ctap_hid_device.py -------------------------------------------------------------------------------- /python_tests/ctap/ctap_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/ctap_test.py -------------------------------------------------------------------------------- /python_tests/ctap/test_auth_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_auth_config.py -------------------------------------------------------------------------------- /python_tests/ctap/test_cred_blob.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_cred_blob.py -------------------------------------------------------------------------------- /python_tests/ctap/test_cred_mgmt.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_cred_mgmt.py -------------------------------------------------------------------------------- /python_tests/ctap/test_credprotect.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_credprotect.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_attestation_mode_switch.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_attestation_mode_switch.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_attestation_mode_switch_with_fixed_key.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_attestation_mode_switch_with_fixed_key.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_basic_attestation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_basic_attestation.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_basics.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_basics.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_locked_self_attestation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_locked_self_attestation.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_pins.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_pins.py -------------------------------------------------------------------------------- /python_tests/ctap/test_ctap_resets.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_ctap_resets.py -------------------------------------------------------------------------------- /python_tests/ctap/test_extended_apdus.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_extended_apdus.py -------------------------------------------------------------------------------- /python_tests/ctap/test_hmac_secret.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_hmac_secret.py -------------------------------------------------------------------------------- /python_tests/ctap/test_largeblobs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_largeblobs.py -------------------------------------------------------------------------------- /python_tests/ctap/test_long_request_buffer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_long_request_buffer.py -------------------------------------------------------------------------------- /python_tests/ctap/test_malformed_input.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_malformed_input.py -------------------------------------------------------------------------------- /python_tests/ctap/test_setminpin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_setminpin.py -------------------------------------------------------------------------------- /python_tests/ctap/test_u2f.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_u2f.py -------------------------------------------------------------------------------- /python_tests/ctap/test_uvm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/python_tests/ctap/test_uvm.py -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/requirements.txt -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = "fido2applet" 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/BufferManager.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/BufferManager.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/CannedCBOR.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/CannedCBOR.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/FIDO2Applet.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/FIDO2Applet.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/FIDOConstants.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/FIDOConstants.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/P256Constants.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/P256Constants.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/PinRetryCounter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/PinRetryCounter.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/ResidentKeyData.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/ResidentKeyData.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/SigOpCounter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/SigOpCounter.java -------------------------------------------------------------------------------- /src/main/java/us/q3q/fido2/TransientStorage.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/main/java/us/q3q/fido2/TransientStorage.java -------------------------------------------------------------------------------- /src/test/java/us/q3q/fido2/AppletBasicTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/test/java/us/q3q/fido2/AppletBasicTest.java -------------------------------------------------------------------------------- /src/test/java/us/q3q/fido2/VSim.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanJacobs/FIDO2Applet/HEAD/src/test/java/us/q3q/fido2/VSim.java --------------------------------------------------------------------------------