usbd-ctaphid 0.4.0

usb-device driver for CTAPHID
Documentation
import fido2.attestation
import fido2.ctap2
import fido2.hid

dev = fido2.ctap2.CTAP2(next(fido2.hid.CtapHidDevice.list_devices()))

for alg in (-7, -8):
    att = dev.make_credential(
        b"1234567890ABCDEF1234567890ABCDEF",
        {"id": "https://yamnord.com"},
        {"id": b"nickray"},
        [{"type": "public-key", "alg": alg}],
    )

    # basic sanity check - would raise
    assert att.fmt == "packed"
    verifier = fido2.attestation.Attestation.for_type(att.fmt)()
    verifier.verify(
        att.att_statement, att.auth_data, b"1234567890ABCDEF1234567890ABCDEF"
    )

    client_data_hash = b"some_client_data_hash_abcdefghij"
    assn = dev.get_assertion(
        "https://yamnord.com",
        client_data_hash,
        allow_list=[
            {"type": "public-key", "id": att.auth_data.credential_data.credential_id}
        ],
    )

    # basic sanity check - would raise
    assn.verify(client_data_hash, att.auth_data.credential_data.public_key)