{-# 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.KMS.Types.SigningAlgorithmSpec
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.KMS.Types.SigningAlgorithmSpec
  ( SigningAlgorithmSpec
      ( ..,
        SigningAlgorithmSpec_ECDSA_SHA_256,
        SigningAlgorithmSpec_ECDSA_SHA_384,
        SigningAlgorithmSpec_ECDSA_SHA_512,
        SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256,
        SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384,
        SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512,
        SigningAlgorithmSpec_RSASSA_PSS_SHA_256,
        SigningAlgorithmSpec_RSASSA_PSS_SHA_384,
        SigningAlgorithmSpec_RSASSA_PSS_SHA_512,
        SigningAlgorithmSpec_SM2DSA
      ),
  )
where

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

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

pattern SigningAlgorithmSpec_ECDSA_SHA_256 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_ECDSA_SHA_256 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_ECDSA_SHA_256 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_ECDSA_SHA_256 = SigningAlgorithmSpec' "ECDSA_SHA_256"

pattern SigningAlgorithmSpec_ECDSA_SHA_384 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_ECDSA_SHA_384 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_ECDSA_SHA_384 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_ECDSA_SHA_384 = SigningAlgorithmSpec' "ECDSA_SHA_384"

pattern SigningAlgorithmSpec_ECDSA_SHA_512 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_ECDSA_SHA_512 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_ECDSA_SHA_512 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_ECDSA_SHA_512 = SigningAlgorithmSpec' "ECDSA_SHA_512"

pattern SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256 = SigningAlgorithmSpec' "RSASSA_PKCS1_V1_5_SHA_256"

pattern SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384 = SigningAlgorithmSpec' "RSASSA_PKCS1_V1_5_SHA_384"

pattern SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512 = SigningAlgorithmSpec' "RSASSA_PKCS1_V1_5_SHA_512"

pattern SigningAlgorithmSpec_RSASSA_PSS_SHA_256 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PSS_SHA_256 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PSS_SHA_256 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PSS_SHA_256 = SigningAlgorithmSpec' "RSASSA_PSS_SHA_256"

pattern SigningAlgorithmSpec_RSASSA_PSS_SHA_384 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PSS_SHA_384 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PSS_SHA_384 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PSS_SHA_384 = SigningAlgorithmSpec' "RSASSA_PSS_SHA_384"

pattern SigningAlgorithmSpec_RSASSA_PSS_SHA_512 :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_RSASSA_PSS_SHA_512 :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_RSASSA_PSS_SHA_512 :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_RSASSA_PSS_SHA_512 = SigningAlgorithmSpec' "RSASSA_PSS_SHA_512"

pattern SigningAlgorithmSpec_SM2DSA :: SigningAlgorithmSpec
pattern $bSigningAlgorithmSpec_SM2DSA :: SigningAlgorithmSpec
$mSigningAlgorithmSpec_SM2DSA :: forall {r}.
SigningAlgorithmSpec -> ((# #) -> r) -> ((# #) -> r) -> r
SigningAlgorithmSpec_SM2DSA = SigningAlgorithmSpec' "SM2DSA"

{-# COMPLETE
  SigningAlgorithmSpec_ECDSA_SHA_256,
  SigningAlgorithmSpec_ECDSA_SHA_384,
  SigningAlgorithmSpec_ECDSA_SHA_512,
  SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_256,
  SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_384,
  SigningAlgorithmSpec_RSASSA_PKCS1_V1_5_SHA_512,
  SigningAlgorithmSpec_RSASSA_PSS_SHA_256,
  SigningAlgorithmSpec_RSASSA_PSS_SHA_384,
  SigningAlgorithmSpec_RSASSA_PSS_SHA_512,
  SigningAlgorithmSpec_SM2DSA,
  SigningAlgorithmSpec'
  #-}