This PR introduces an entirely new and improved model of the types involved in the Webauthn protocol. The previous Crypto.Fido2.Protocol module is to be replaced with Crypto.Fido2.Model.*. Notable improvements:
Better encoding/decoding separation: Between raw bytes and a type-safe Haskell model there is now an additional layer for how the values are represented in JavaScript. This makes encoding/decoding much cleaner and simpler to follow.
The new Haskell model is more type-safe over the previous one, preventing a number of invalid states from occurring and allowing removal of some awkward checks.
The new Haskell model doesn't use DuplicateRecordFields. Instead each field is prefixed with a shorthand of its containing type
Attestation statement formats are now abstracted into a generic typeclass, improving separation of concern
This new model is yet not used for anything, but just introduced alongside the old one.
This PR introduces an entirely new and improved model of the types involved in the Webauthn protocol. The previous
Crypto.Fido2.Protocol
module is to be replaced withCrypto.Fido2.Model.*
. Notable improvements:DuplicateRecordFields
. Instead each field is prefixed with a shorthand of its containing typeThis new model is yet not used for anything, but just introduced alongside the old one.