{-# LANGUAGE DuplicateRecordFields #-}
module Crypto.WebAuthn.Metadata.Service.WebIDL
( MetadataBLOBPayloadEntry (..),
BiometricStatusReport (..),
StatusReport (..),
AuthenticatorStatus (..),
MetadataBLOBPayload (..),
)
where
import Crypto.WebAuthn.Internal.Utils (jsonEncodingOptions)
import Crypto.WebAuthn.Metadata.Statement.WebIDL (AAGUID, MetadataStatement)
import qualified Crypto.WebAuthn.Metadata.UAF as UAF
import qualified Crypto.WebAuthn.Metadata.WebIDL as IDL
import qualified Data.Aeson as Aeson
import Data.List.NonEmpty (NonEmpty)
import GHC.Generics (Generic)
data MetadataBLOBPayloadEntry = MetadataBLOBPayloadEntry
{
MetadataBLOBPayloadEntry -> Maybe AAID
aaid :: Maybe UAF.AAID,
MetadataBLOBPayloadEntry -> Maybe AAGUID
aaguid :: Maybe AAGUID,
MetadataBLOBPayloadEntry -> Maybe (NonEmpty DOMString)
attestationCertificateKeyIdentifiers :: Maybe (NonEmpty IDL.DOMString),
MetadataBLOBPayloadEntry -> Maybe MetadataStatement
metadataStatement :: Maybe MetadataStatement,
MetadataBLOBPayloadEntry -> Maybe (NonEmpty BiometricStatusReport)
biometricStatusReports :: Maybe (NonEmpty BiometricStatusReport),
MetadataBLOBPayloadEntry -> NonEmpty StatusReport
statusReports :: NonEmpty StatusReport,
MetadataBLOBPayloadEntry -> DOMString
timeOfLastStatusChange :: IDL.DOMString
}
deriving (Int -> MetadataBLOBPayloadEntry -> ShowS
[MetadataBLOBPayloadEntry] -> ShowS
MetadataBLOBPayloadEntry -> String
(Int -> MetadataBLOBPayloadEntry -> ShowS)
-> (MetadataBLOBPayloadEntry -> String)
-> ([MetadataBLOBPayloadEntry] -> ShowS)
-> Show MetadataBLOBPayloadEntry
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MetadataBLOBPayloadEntry] -> ShowS
$cshowList :: [MetadataBLOBPayloadEntry] -> ShowS
show :: MetadataBLOBPayloadEntry -> String
$cshow :: MetadataBLOBPayloadEntry -> String
showsPrec :: Int -> MetadataBLOBPayloadEntry -> ShowS
$cshowsPrec :: Int -> MetadataBLOBPayloadEntry -> ShowS
Show, MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool
(MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool)
-> (MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool)
-> Eq MetadataBLOBPayloadEntry
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool
$c/= :: MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool
== :: MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool
$c== :: MetadataBLOBPayloadEntry -> MetadataBLOBPayloadEntry -> Bool
Eq, (forall x.
MetadataBLOBPayloadEntry -> Rep MetadataBLOBPayloadEntry x)
-> (forall x.
Rep MetadataBLOBPayloadEntry x -> MetadataBLOBPayloadEntry)
-> Generic MetadataBLOBPayloadEntry
forall x.
Rep MetadataBLOBPayloadEntry x -> MetadataBLOBPayloadEntry
forall x.
MetadataBLOBPayloadEntry -> Rep MetadataBLOBPayloadEntry x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep MetadataBLOBPayloadEntry x -> MetadataBLOBPayloadEntry
$cfrom :: forall x.
MetadataBLOBPayloadEntry -> Rep MetadataBLOBPayloadEntry x
Generic)
instance Aeson.FromJSON MetadataBLOBPayloadEntry where
parseJSON :: Value -> Parser MetadataBLOBPayloadEntry
parseJSON = Options -> Value -> Parser MetadataBLOBPayloadEntry
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
Aeson.genericParseJSON Options
jsonEncodingOptions
instance Aeson.ToJSON MetadataBLOBPayloadEntry where
toJSON :: MetadataBLOBPayloadEntry -> Value
toJSON = Options -> MetadataBLOBPayloadEntry -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
Aeson.genericToJSON Options
jsonEncodingOptions
data BiometricStatusReport = BiometricStatusReport
{
BiometricStatusReport -> UnsignedShort
certLevel :: IDL.UnsignedShort,
BiometricStatusReport -> DOMString
modality :: IDL.DOMString,
BiometricStatusReport -> Maybe DOMString
effectiveDate :: Maybe IDL.DOMString,
BiometricStatusReport -> Maybe DOMString
certificationDescriptor :: Maybe IDL.DOMString,
BiometricStatusReport -> Maybe DOMString
certificateNumber :: Maybe IDL.DOMString,
BiometricStatusReport -> Maybe DOMString
certificationPolicyVersion :: Maybe IDL.DOMString,
BiometricStatusReport -> Maybe DOMString
certificationRequirementsVersion :: Maybe IDL.DOMString
}
deriving (Int -> BiometricStatusReport -> ShowS
[BiometricStatusReport] -> ShowS
BiometricStatusReport -> String
(Int -> BiometricStatusReport -> ShowS)
-> (BiometricStatusReport -> String)
-> ([BiometricStatusReport] -> ShowS)
-> Show BiometricStatusReport
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BiometricStatusReport] -> ShowS
$cshowList :: [BiometricStatusReport] -> ShowS
show :: BiometricStatusReport -> String
$cshow :: BiometricStatusReport -> String
showsPrec :: Int -> BiometricStatusReport -> ShowS
$cshowsPrec :: Int -> BiometricStatusReport -> ShowS
Show, BiometricStatusReport -> BiometricStatusReport -> Bool
(BiometricStatusReport -> BiometricStatusReport -> Bool)
-> (BiometricStatusReport -> BiometricStatusReport -> Bool)
-> Eq BiometricStatusReport
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BiometricStatusReport -> BiometricStatusReport -> Bool
$c/= :: BiometricStatusReport -> BiometricStatusReport -> Bool
== :: BiometricStatusReport -> BiometricStatusReport -> Bool
$c== :: BiometricStatusReport -> BiometricStatusReport -> Bool
Eq, (forall x. BiometricStatusReport -> Rep BiometricStatusReport x)
-> (forall x. Rep BiometricStatusReport x -> BiometricStatusReport)
-> Generic BiometricStatusReport
forall x. Rep BiometricStatusReport x -> BiometricStatusReport
forall x. BiometricStatusReport -> Rep BiometricStatusReport x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BiometricStatusReport x -> BiometricStatusReport
$cfrom :: forall x. BiometricStatusReport -> Rep BiometricStatusReport x
Generic)
instance Aeson.FromJSON BiometricStatusReport where
parseJSON :: Value -> Parser BiometricStatusReport
parseJSON = Options -> Value -> Parser BiometricStatusReport
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
Aeson.genericParseJSON Options
jsonEncodingOptions
instance Aeson.ToJSON BiometricStatusReport where
toJSON :: BiometricStatusReport -> Value
toJSON = Options -> BiometricStatusReport -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
Aeson.genericToJSON Options
jsonEncodingOptions
data StatusReport = StatusReport
{
StatusReport -> AuthenticatorStatus
status :: AuthenticatorStatus,
StatusReport -> Maybe DOMString
effectiveDate :: Maybe IDL.DOMString,
StatusReport -> Maybe UnsignedLong
authenticatorVersion :: Maybe IDL.UnsignedLong,
StatusReport -> Maybe DOMString
certificate :: Maybe IDL.DOMString,
StatusReport -> Maybe DOMString
url :: Maybe IDL.DOMString,
StatusReport -> Maybe DOMString
certificationDescriptor :: Maybe IDL.DOMString,
StatusReport -> Maybe DOMString
certificateNumber :: Maybe IDL.DOMString,
StatusReport -> Maybe DOMString
certificationPolicyVersion :: Maybe IDL.DOMString,
StatusReport -> Maybe DOMString
certificationRequirementsVersion :: Maybe IDL.DOMString
}
deriving (Int -> StatusReport -> ShowS
[StatusReport] -> ShowS
StatusReport -> String
(Int -> StatusReport -> ShowS)
-> (StatusReport -> String)
-> ([StatusReport] -> ShowS)
-> Show StatusReport
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StatusReport] -> ShowS
$cshowList :: [StatusReport] -> ShowS
show :: StatusReport -> String
$cshow :: StatusReport -> String
showsPrec :: Int -> StatusReport -> ShowS
$cshowsPrec :: Int -> StatusReport -> ShowS
Show, StatusReport -> StatusReport -> Bool
(StatusReport -> StatusReport -> Bool)
-> (StatusReport -> StatusReport -> Bool) -> Eq StatusReport
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StatusReport -> StatusReport -> Bool
$c/= :: StatusReport -> StatusReport -> Bool
== :: StatusReport -> StatusReport -> Bool
$c== :: StatusReport -> StatusReport -> Bool
Eq, (forall x. StatusReport -> Rep StatusReport x)
-> (forall x. Rep StatusReport x -> StatusReport)
-> Generic StatusReport
forall x. Rep StatusReport x -> StatusReport
forall x. StatusReport -> Rep StatusReport x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StatusReport x -> StatusReport
$cfrom :: forall x. StatusReport -> Rep StatusReport x
Generic)
instance Aeson.FromJSON StatusReport where
parseJSON :: Value -> Parser StatusReport
parseJSON = Options -> Value -> Parser StatusReport
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
Aeson.genericParseJSON Options
jsonEncodingOptions
instance Aeson.ToJSON StatusReport where
toJSON :: StatusReport -> Value
toJSON = Options -> StatusReport -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
Aeson.genericToJSON Options
jsonEncodingOptions
data AuthenticatorStatus
= NOT_FIDO_CERTIFIED
| FIDO_CERTIFIED
| USER_VERIFICATION_BYPASS
| ATTESTATION_KEY_COMPROMISE
| USER_KEY_REMOTE_COMPROMISE
| USER_KEY_PHYSICAL_COMPROMISE
| UPDATE_AVAILABLE
| REVOKED
| SELF_ASSERTION_SUBMITTED
| FIDO_CERTIFIED_L1
| FIDO_CERTIFIED_L1plus
| FIDO_CERTIFIED_L2
| FIDO_CERTIFIED_L2plus
| FIDO_CERTIFIED_L3
| FIDO_CERTIFIED_L3plus
deriving (Int -> AuthenticatorStatus -> ShowS
[AuthenticatorStatus] -> ShowS
AuthenticatorStatus -> String
(Int -> AuthenticatorStatus -> ShowS)
-> (AuthenticatorStatus -> String)
-> ([AuthenticatorStatus] -> ShowS)
-> Show AuthenticatorStatus
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AuthenticatorStatus] -> ShowS
$cshowList :: [AuthenticatorStatus] -> ShowS
show :: AuthenticatorStatus -> String
$cshow :: AuthenticatorStatus -> String
showsPrec :: Int -> AuthenticatorStatus -> ShowS
$cshowsPrec :: Int -> AuthenticatorStatus -> ShowS
Show, AuthenticatorStatus -> AuthenticatorStatus -> Bool
(AuthenticatorStatus -> AuthenticatorStatus -> Bool)
-> (AuthenticatorStatus -> AuthenticatorStatus -> Bool)
-> Eq AuthenticatorStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AuthenticatorStatus -> AuthenticatorStatus -> Bool
$c/= :: AuthenticatorStatus -> AuthenticatorStatus -> Bool
== :: AuthenticatorStatus -> AuthenticatorStatus -> Bool
$c== :: AuthenticatorStatus -> AuthenticatorStatus -> Bool
Eq, (forall x. AuthenticatorStatus -> Rep AuthenticatorStatus x)
-> (forall x. Rep AuthenticatorStatus x -> AuthenticatorStatus)
-> Generic AuthenticatorStatus
forall x. Rep AuthenticatorStatus x -> AuthenticatorStatus
forall x. AuthenticatorStatus -> Rep AuthenticatorStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AuthenticatorStatus x -> AuthenticatorStatus
$cfrom :: forall x. AuthenticatorStatus -> Rep AuthenticatorStatus x
Generic)
instance Aeson.FromJSON AuthenticatorStatus where
parseJSON :: Value -> Parser AuthenticatorStatus
parseJSON = Options -> Value -> Parser AuthenticatorStatus
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
Aeson.genericParseJSON Options
jsonEncodingOptions
instance Aeson.ToJSON AuthenticatorStatus where
toJSON :: AuthenticatorStatus -> Value
toJSON = Options -> AuthenticatorStatus -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
Aeson.genericToJSON Options
jsonEncodingOptions
data MetadataBLOBPayload = MetadataBLOBPayload
{
:: Maybe IDL.DOMString,
MetadataBLOBPayload -> Int
no :: Int,
MetadataBLOBPayload -> DOMString
nextUpdate :: IDL.DOMString,
MetadataBLOBPayload -> [MetadataBLOBPayloadEntry]
entries :: [MetadataBLOBPayloadEntry]
}
deriving (Int -> MetadataBLOBPayload -> ShowS
[MetadataBLOBPayload] -> ShowS
MetadataBLOBPayload -> String
(Int -> MetadataBLOBPayload -> ShowS)
-> (MetadataBLOBPayload -> String)
-> ([MetadataBLOBPayload] -> ShowS)
-> Show MetadataBLOBPayload
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MetadataBLOBPayload] -> ShowS
$cshowList :: [MetadataBLOBPayload] -> ShowS
show :: MetadataBLOBPayload -> String
$cshow :: MetadataBLOBPayload -> String
showsPrec :: Int -> MetadataBLOBPayload -> ShowS
$cshowsPrec :: Int -> MetadataBLOBPayload -> ShowS
Show, MetadataBLOBPayload -> MetadataBLOBPayload -> Bool
(MetadataBLOBPayload -> MetadataBLOBPayload -> Bool)
-> (MetadataBLOBPayload -> MetadataBLOBPayload -> Bool)
-> Eq MetadataBLOBPayload
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MetadataBLOBPayload -> MetadataBLOBPayload -> Bool
$c/= :: MetadataBLOBPayload -> MetadataBLOBPayload -> Bool
== :: MetadataBLOBPayload -> MetadataBLOBPayload -> Bool
$c== :: MetadataBLOBPayload -> MetadataBLOBPayload -> Bool
Eq, (forall x. MetadataBLOBPayload -> Rep MetadataBLOBPayload x)
-> (forall x. Rep MetadataBLOBPayload x -> MetadataBLOBPayload)
-> Generic MetadataBLOBPayload
forall x. Rep MetadataBLOBPayload x -> MetadataBLOBPayload
forall x. MetadataBLOBPayload -> Rep MetadataBLOBPayload x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MetadataBLOBPayload x -> MetadataBLOBPayload
$cfrom :: forall x. MetadataBLOBPayload -> Rep MetadataBLOBPayload x
Generic)
instance Aeson.FromJSON MetadataBLOBPayload where
parseJSON :: Value -> Parser MetadataBLOBPayload
parseJSON = Options -> Value -> Parser MetadataBLOBPayload
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
Aeson.genericParseJSON Options
jsonEncodingOptions
instance Aeson.ToJSON MetadataBLOBPayload where
toJSON :: MetadataBLOBPayload -> Value
toJSON = Options -> MetadataBLOBPayload -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
Aeson.genericToJSON Options
jsonEncodingOptions