webauthn-0.11.0.0: src/Crypto/WebAuthn/Metadata/FidoRegistry.hs
{-# LANGUAGE DataKinds #-}
-- | Stability: experimental
-- [Fido Registry of Predefined Values](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#authenticator-attestation-types)
-- FIDO Alliance Proposed Standard 17 December 2019
module Crypto.WebAuthn.Metadata.FidoRegistry
( UserVerificationMethod (..),
KeyProtectionType (..),
MatcherProtectionType (..),
AuthenticatorAttachmentHint (..),
TransactionConfirmationDisplayType (..),
AuthenticationAlgorithm (..),
PublicKeyRepresentationFormat (..),
AuthenticatorAttestationType (..),
)
where
import Crypto.WebAuthn.Internal.Utils (enumJSONEncodingOptions)
import qualified Data.Aeson as Aeson
import GHC.Generics (Generic)
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#user-verification-methods)
data UserVerificationMethod
= USER_VERIFY_PRESENCE_INTERNAL
| USER_VERIFY_FINGERPRINT_INTERNAL
| USER_VERIFY_PASSCODE_INTERNAL
| USER_VERIFY_VOICEPRINT_INTERNAL
| USER_VERIFY_FACEPRINT_INTERNAL
| USER_VERIFY_LOCATION_INTERNAL
| USER_VERIFY_EYEPRINT_INTERNAL
| USER_VERIFY_PATTERN_INTERNAL
| USER_VERIFY_HANDPRINT_INTERNAL
| USER_VERIFY_PASSCODE_EXTERNAL
| USER_VERIFY_PATTERN_EXTERNAL
| USER_VERIFY_NONE
| USER_VERIFY_ALL
deriving (Show, Eq, Generic)
instance Aeson.FromJSON UserVerificationMethod where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "USER_VERIFY_"
instance Aeson.ToJSON UserVerificationMethod where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "USER_VERIFY_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#key-protection-types)
data KeyProtectionType
= KEY_PROTECTION_SOFTWARE
| KEY_PROTECTION_HARDWARE
| KEY_PROTECTION_TEE
| KEY_PROTECTION_SECURE_ELEMENT
| KEY_PROTECTION_REMOTE_HANDLE
deriving (Show, Eq, Generic)
instance Aeson.FromJSON KeyProtectionType where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "KEY_PROTECTION_"
instance Aeson.ToJSON KeyProtectionType where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "KEY_PROTECTION_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#matcher-protection-types)
data MatcherProtectionType
= MATCHER_PROTECTION_SOFTWARE
| MATCHER_PROTECTION_TEE
| MATCHER_PROTECTION_ON_CHIP
deriving (Show, Eq, Generic)
instance Aeson.FromJSON MatcherProtectionType where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "MATCHER_PROTECTION_"
instance Aeson.ToJSON MatcherProtectionType where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "MATCHER_PROTECTION_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#authenticator-attachment-hints)
data AuthenticatorAttachmentHint
= ATTACHMENT_HINT_INTERNAL
| ATTACHMENT_HINT_EXTERNAL
| ATTACHMENT_HINT_WIRED
| ATTACHMENT_HINT_WIRELESS
| ATTACHMENT_HINT_NFC
| ATTACHMENT_HINT_BLUETOOTH
| ATTACHMENT_HINT_NETWORK
| ATTACHMENT_HINT_READY
| ATTACHMENT_HINT_WIFI_DIRECT
deriving (Show, Eq, Generic)
instance Aeson.FromJSON AuthenticatorAttachmentHint where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "ATTACHMENT_HINT_"
instance Aeson.ToJSON AuthenticatorAttachmentHint where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "ATTACHMENT_HINT_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#transaction-confirmation-display-types)
data TransactionConfirmationDisplayType
= TRANSACTION_CONFIRMATION_DISPLAY_ANY
| TRANSACTION_CONFIRMATION_DISPLAY_PRIVILEGED_SOFTWARE
| TRANSACTION_CONFIRMATION_DISPLAY_TEE
| TRANSACTION_CONFIRMATION_DISPLAY_HARDWARE
| TRANSACTION_CONFIRMATION_DISPLAY_REMOTE
deriving (Show, Eq, Generic)
instance Aeson.FromJSON TransactionConfirmationDisplayType where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "TRANSACTION_CONFIRMATION_DISPLAY_"
instance Aeson.ToJSON TransactionConfirmationDisplayType where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "TRANSACTION_CONFIRMATION_DISPLAY_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#authentication-algorithms)
data AuthenticationAlgorithm
= ALG_SIGN_SECP256R1_ECDSA_SHA256_RAW
| ALG_SIGN_SECP256R1_ECDSA_SHA256_DER
| ALG_SIGN_RSASSA_PSS_SHA256_RAW
| ALG_SIGN_RSASSA_PSS_SHA256_DER
| ALG_SIGN_SECP256K1_ECDSA_SHA256_RAW
| ALG_SIGN_SECP256K1_ECDSA_SHA256_DER
| ALG_SIGN_SM2_SM3_RAW
| ALG_SIGN_RSA_EMSA_PKCS1_SHA256_RAW
| ALG_SIGN_RSA_EMSA_PKCS1_SHA256_DER
| ALG_SIGN_RSASSA_PSS_SHA384_RAW
| ALG_SIGN_RSASSA_PSS_SHA512_RAW
| ALG_SIGN_RSASSA_PKCSV15_SHA256_RAW
| ALG_SIGN_RSASSA_PKCSV15_SHA384_RAW
| ALG_SIGN_RSASSA_PKCSV15_SHA512_RAW
| ALG_SIGN_RSASSA_PKCSV15_SHA1_RAW
| ALG_SIGN_SECP384R1_ECDSA_SHA384_RAW
| ALG_SIGN_SECP521R1_ECDSA_SHA512_RAW
| ALG_SIGN_ED25519_EDDSA_SHA512_RAW
deriving (Show, Eq, Generic)
instance Aeson.FromJSON AuthenticationAlgorithm where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "ALG_SIGN_"
instance Aeson.ToJSON AuthenticationAlgorithm where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "ALG_SIGN_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#public-key-representation-formats)
data PublicKeyRepresentationFormat
= ALG_KEY_ECC_X962_RAW
| ALG_KEY_ECC_X962_DER
| ALG_KEY_RSA_2048_RAW
| ALG_KEY_RSA_2048_DER
| ALG_KEY_COSE
deriving (Show, Eq, Generic)
instance Aeson.FromJSON PublicKeyRepresentationFormat where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "ALG_KEY_"
instance Aeson.ToJSON PublicKeyRepresentationFormat where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "ALG_KEY_"
-- | [(spec)](https://fidoalliance.org/specs/common-specs/fido-registry-v2.1-ps-20191217.html#authenticator-attestation-types)
data AuthenticatorAttestationType
= ATTESTATION_BASIC_FULL
| ATTESTATION_BASIC_SURROGATE
| ATTESTATION_ECDAA
| ATTESTATION_ATTCA
deriving (Show, Eq, Generic)
instance Aeson.FromJSON AuthenticatorAttestationType where
parseJSON = Aeson.genericParseJSON $ enumJSONEncodingOptions "ATTESTATION_"
instance Aeson.ToJSON AuthenticatorAttestationType where
toJSON = Aeson.genericToJSON $ enumJSONEncodingOptions "ATTESTATION_"