| Using the CTAP hid gadget |
| ========================= |
| |
| After compiling the programmes, the fido binary is used to write the |
| binary report descriptor to the necessary place in configfs. |
| |
| The script fido_configfs.sh can be used to set up both ends of the |
| gadget. To be used, the /dev/hidrawX end of the gadget *must* be |
| accessible by ordinary users meaning you either give the gadget an ID |
| matching the one udev will append the uaccess tag, which gives a |
| current user ACL. Alternatively you can simply chmod 666 the new |
| hidrawX device. |
| |
| Ideally, you should also run the hidgd as non-root, so you'll have to |
| change the permissions on /dev/hidgX to allow that to happen. Once |
| the permissions are sorted out, you need to create an attestation |
| certificate and key. In theory FIDO relying entities use the |
| attestation certificate to verify the authenticity of the token, but |
| in practice a self signed certificate works. The certificate must |
| represent the public part of a NIST P-256 elliptic curve key becuase |
| the standard requires it. |
| |
| To create the key do |
| |
| openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -out reg_key.key |
| |
| After which you can create the self signed certificate as |
| |
| openssl req -new -x509 -subj '/CN=My Fido Token/' -key reg_key.key -out reg_key.der -outform DER |
| |
| And finally run hidgd as |
| |
| hidgd /dev/hidg0 reg_key.der reg_key.key |
| |
| And it should respond to the firefox browser using U2F sites. |