This is a rebase of #1618 in which @dave-atx added WebAuthn support. Closes #1618
For reference: https://go.dev/doc/go1.4#internalpackages