{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CertificateManagerPCA.Types.KeyStorageSecurityStandard
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CertificateManagerPCA.Types.KeyStorageSecurityStandard
  ( KeyStorageSecurityStandard
      ( ..,
        KeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER,
        KeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype KeyStorageSecurityStandard = KeyStorageSecurityStandard'
  { KeyStorageSecurityStandard -> Text
fromKeyStorageSecurityStandard ::
      Core.Text
  }
  deriving stock
    ( Int -> KeyStorageSecurityStandard -> ShowS
[KeyStorageSecurityStandard] -> ShowS
KeyStorageSecurityStandard -> String
(Int -> KeyStorageSecurityStandard -> ShowS)
-> (KeyStorageSecurityStandard -> String)
-> ([KeyStorageSecurityStandard] -> ShowS)
-> Show KeyStorageSecurityStandard
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyStorageSecurityStandard] -> ShowS
$cshowList :: [KeyStorageSecurityStandard] -> ShowS
show :: KeyStorageSecurityStandard -> String
$cshow :: KeyStorageSecurityStandard -> String
showsPrec :: Int -> KeyStorageSecurityStandard -> ShowS
$cshowsPrec :: Int -> KeyStorageSecurityStandard -> ShowS
Prelude.Show,
      ReadPrec [KeyStorageSecurityStandard]
ReadPrec KeyStorageSecurityStandard
Int -> ReadS KeyStorageSecurityStandard
ReadS [KeyStorageSecurityStandard]
(Int -> ReadS KeyStorageSecurityStandard)
-> ReadS [KeyStorageSecurityStandard]
-> ReadPrec KeyStorageSecurityStandard
-> ReadPrec [KeyStorageSecurityStandard]
-> Read KeyStorageSecurityStandard
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [KeyStorageSecurityStandard]
$creadListPrec :: ReadPrec [KeyStorageSecurityStandard]
readPrec :: ReadPrec KeyStorageSecurityStandard
$creadPrec :: ReadPrec KeyStorageSecurityStandard
readList :: ReadS [KeyStorageSecurityStandard]
$creadList :: ReadS [KeyStorageSecurityStandard]
readsPrec :: Int -> ReadS KeyStorageSecurityStandard
$creadsPrec :: Int -> ReadS KeyStorageSecurityStandard
Prelude.Read,
      KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
(KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Bool)
-> Eq KeyStorageSecurityStandard
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c/= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
== :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c== :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
Prelude.Eq,
      Eq KeyStorageSecurityStandard
Eq KeyStorageSecurityStandard
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Ordering)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Bool)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Bool)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Bool)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> Bool)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> KeyStorageSecurityStandard)
-> (KeyStorageSecurityStandard
    -> KeyStorageSecurityStandard -> KeyStorageSecurityStandard)
-> Ord KeyStorageSecurityStandard
KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> Ordering
KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> KeyStorageSecurityStandard
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> KeyStorageSecurityStandard
$cmin :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> KeyStorageSecurityStandard
max :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> KeyStorageSecurityStandard
$cmax :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> KeyStorageSecurityStandard
>= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c>= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
> :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c> :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
<= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c<= :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
< :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
$c< :: KeyStorageSecurityStandard -> KeyStorageSecurityStandard -> Bool
compare :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> Ordering
$ccompare :: KeyStorageSecurityStandard
-> KeyStorageSecurityStandard -> Ordering
$cp1Ord :: Eq KeyStorageSecurityStandard
Prelude.Ord,
      (forall x.
 KeyStorageSecurityStandard -> Rep KeyStorageSecurityStandard x)
-> (forall x.
    Rep KeyStorageSecurityStandard x -> KeyStorageSecurityStandard)
-> Generic KeyStorageSecurityStandard
forall x.
Rep KeyStorageSecurityStandard x -> KeyStorageSecurityStandard
forall x.
KeyStorageSecurityStandard -> Rep KeyStorageSecurityStandard x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep KeyStorageSecurityStandard x -> KeyStorageSecurityStandard
$cfrom :: forall x.
KeyStorageSecurityStandard -> Rep KeyStorageSecurityStandard x
Prelude.Generic
    )
  deriving newtype
    ( Int -> KeyStorageSecurityStandard -> Int
KeyStorageSecurityStandard -> Int
(Int -> KeyStorageSecurityStandard -> Int)
-> (KeyStorageSecurityStandard -> Int)
-> Hashable KeyStorageSecurityStandard
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: KeyStorageSecurityStandard -> Int
$chash :: KeyStorageSecurityStandard -> Int
hashWithSalt :: Int -> KeyStorageSecurityStandard -> Int
$chashWithSalt :: Int -> KeyStorageSecurityStandard -> Int
Prelude.Hashable,
      KeyStorageSecurityStandard -> ()
(KeyStorageSecurityStandard -> ())
-> NFData KeyStorageSecurityStandard
forall a. (a -> ()) -> NFData a
rnf :: KeyStorageSecurityStandard -> ()
$crnf :: KeyStorageSecurityStandard -> ()
Prelude.NFData,
      Text -> Either String KeyStorageSecurityStandard
(Text -> Either String KeyStorageSecurityStandard)
-> FromText KeyStorageSecurityStandard
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String KeyStorageSecurityStandard
$cfromText :: Text -> Either String KeyStorageSecurityStandard
Core.FromText,
      KeyStorageSecurityStandard -> Text
(KeyStorageSecurityStandard -> Text)
-> ToText KeyStorageSecurityStandard
forall a. (a -> Text) -> ToText a
toText :: KeyStorageSecurityStandard -> Text
$ctoText :: KeyStorageSecurityStandard -> Text
Core.ToText,
      KeyStorageSecurityStandard -> ByteString
(KeyStorageSecurityStandard -> ByteString)
-> ToByteString KeyStorageSecurityStandard
forall a. (a -> ByteString) -> ToByteString a
toBS :: KeyStorageSecurityStandard -> ByteString
$ctoBS :: KeyStorageSecurityStandard -> ByteString
Core.ToByteString,
      KeyStorageSecurityStandard -> ByteStringBuilder
(KeyStorageSecurityStandard -> ByteStringBuilder)
-> ToLog KeyStorageSecurityStandard
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: KeyStorageSecurityStandard -> ByteStringBuilder
$cbuild :: KeyStorageSecurityStandard -> ByteStringBuilder
Core.ToLog,
      HeaderName -> KeyStorageSecurityStandard -> [Header]
(HeaderName -> KeyStorageSecurityStandard -> [Header])
-> ToHeader KeyStorageSecurityStandard
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> KeyStorageSecurityStandard -> [Header]
$ctoHeader :: HeaderName -> KeyStorageSecurityStandard -> [Header]
Core.ToHeader,
      KeyStorageSecurityStandard -> QueryString
(KeyStorageSecurityStandard -> QueryString)
-> ToQuery KeyStorageSecurityStandard
forall a. (a -> QueryString) -> ToQuery a
toQuery :: KeyStorageSecurityStandard -> QueryString
$ctoQuery :: KeyStorageSecurityStandard -> QueryString
Core.ToQuery,
      Value -> Parser [KeyStorageSecurityStandard]
Value -> Parser KeyStorageSecurityStandard
(Value -> Parser KeyStorageSecurityStandard)
-> (Value -> Parser [KeyStorageSecurityStandard])
-> FromJSON KeyStorageSecurityStandard
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [KeyStorageSecurityStandard]
$cparseJSONList :: Value -> Parser [KeyStorageSecurityStandard]
parseJSON :: Value -> Parser KeyStorageSecurityStandard
$cparseJSON :: Value -> Parser KeyStorageSecurityStandard
Core.FromJSON,
      FromJSONKeyFunction [KeyStorageSecurityStandard]
FromJSONKeyFunction KeyStorageSecurityStandard
FromJSONKeyFunction KeyStorageSecurityStandard
-> FromJSONKeyFunction [KeyStorageSecurityStandard]
-> FromJSONKey KeyStorageSecurityStandard
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [KeyStorageSecurityStandard]
$cfromJSONKeyList :: FromJSONKeyFunction [KeyStorageSecurityStandard]
fromJSONKey :: FromJSONKeyFunction KeyStorageSecurityStandard
$cfromJSONKey :: FromJSONKeyFunction KeyStorageSecurityStandard
Core.FromJSONKey,
      [KeyStorageSecurityStandard] -> Encoding
[KeyStorageSecurityStandard] -> Value
KeyStorageSecurityStandard -> Encoding
KeyStorageSecurityStandard -> Value
(KeyStorageSecurityStandard -> Value)
-> (KeyStorageSecurityStandard -> Encoding)
-> ([KeyStorageSecurityStandard] -> Value)
-> ([KeyStorageSecurityStandard] -> Encoding)
-> ToJSON KeyStorageSecurityStandard
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [KeyStorageSecurityStandard] -> Encoding
$ctoEncodingList :: [KeyStorageSecurityStandard] -> Encoding
toJSONList :: [KeyStorageSecurityStandard] -> Value
$ctoJSONList :: [KeyStorageSecurityStandard] -> Value
toEncoding :: KeyStorageSecurityStandard -> Encoding
$ctoEncoding :: KeyStorageSecurityStandard -> Encoding
toJSON :: KeyStorageSecurityStandard -> Value
$ctoJSON :: KeyStorageSecurityStandard -> Value
Core.ToJSON,
      ToJSONKeyFunction [KeyStorageSecurityStandard]
ToJSONKeyFunction KeyStorageSecurityStandard
ToJSONKeyFunction KeyStorageSecurityStandard
-> ToJSONKeyFunction [KeyStorageSecurityStandard]
-> ToJSONKey KeyStorageSecurityStandard
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [KeyStorageSecurityStandard]
$ctoJSONKeyList :: ToJSONKeyFunction [KeyStorageSecurityStandard]
toJSONKey :: ToJSONKeyFunction KeyStorageSecurityStandard
$ctoJSONKey :: ToJSONKeyFunction KeyStorageSecurityStandard
Core.ToJSONKey,
      [Node] -> Either String KeyStorageSecurityStandard
([Node] -> Either String KeyStorageSecurityStandard)
-> FromXML KeyStorageSecurityStandard
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String KeyStorageSecurityStandard
$cparseXML :: [Node] -> Either String KeyStorageSecurityStandard
Core.FromXML,
      KeyStorageSecurityStandard -> XML
(KeyStorageSecurityStandard -> XML)
-> ToXML KeyStorageSecurityStandard
forall a. (a -> XML) -> ToXML a
toXML :: KeyStorageSecurityStandard -> XML
$ctoXML :: KeyStorageSecurityStandard -> XML
Core.ToXML
    )

pattern KeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER :: KeyStorageSecurityStandard
pattern $bKeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER :: KeyStorageSecurityStandard
$mKeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER :: forall r.
KeyStorageSecurityStandard -> (Void# -> r) -> (Void# -> r) -> r
KeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER = KeyStorageSecurityStandard' "FIPS_140_2_LEVEL_2_OR_HIGHER"

pattern KeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER :: KeyStorageSecurityStandard
pattern $bKeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER :: KeyStorageSecurityStandard
$mKeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER :: forall r.
KeyStorageSecurityStandard -> (Void# -> r) -> (Void# -> r) -> r
KeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER = KeyStorageSecurityStandard' "FIPS_140_2_LEVEL_3_OR_HIGHER"

{-# COMPLETE
  KeyStorageSecurityStandard_FIPS_140_2_LEVEL_2_OR_HIGHER,
  KeyStorageSecurityStandard_FIPS_140_2_LEVEL_3_OR_HIGHER,
  KeyStorageSecurityStandard'
  #-}