@@ -74,12 +74,15 @@ a getAssertion call is made with an `allowList` given, CTAP2.0 says that the
7474authenticator should iterate through assertions generated with the matching
7575credentials from the allowlist. CTAP2.1 says the authenticator should pick one
7676matching credential, return an assertion generated with it, and ignore any
77- other matches.
77+ other matches.
7878
7979This implementation allows toggling either behavior by flipping a boolean in the
8080code, but because one or the other must be chosen, it can't be both fully CTAP2.0
8181compatible and CTAP2.1 compatible at the same time.
8282
83+ Another more minor difference is that CTAP2.0 allows PINs of 64 bytes or longer.
84+ This authenticator and CTAP2.1 cap PINs at 63 bytes long.
85+
8386## Why don't you implement U2F/CTAP1?
8487
8588U2F doesn't support PINs, and requires an attestation certificate.
@@ -107,7 +110,8 @@ It will store:
107110- the credential ID (an AES256 encrypted blob of the RP ID SHA-256
108111 hash and the credential private key)
109112- up to 32 characters of the RP ID, again AES256 encrypted
110- - a max 64-character-long user ID, again AES256 encrypted
113+ - a max 64-byte-long user ID, again AES256 encrypted
114+ - the 64-byte public key associated with the credential, again AES256 encrypted
111115- the length of the RP ID, unencrypted
112116- the length of the user ID, unencrypted
113117- a boolean set to true on the first credential from a given RP ID, used
0 commit comments