module Network.AWS.KMS.GenerateDataKey
(
GenerateDataKey
, generateDataKey
, gdkEncryptionContext
, gdkGrantTokens
, gdkKeyId
, gdkKeySpec
, gdkNumberOfBytes
, GenerateDataKeyResponse
, generateDataKeyResponse
, gdkrCiphertextBlob
, gdkrKeyId
, gdkrPlaintext
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.KMS.Types
import qualified GHC.Exts
data GenerateDataKey = GenerateDataKey
{ _gdkEncryptionContext :: Map Text Text
, _gdkGrantTokens :: List "GrantTokens" Text
, _gdkKeyId :: Text
, _gdkKeySpec :: Maybe DataKeySpec
, _gdkNumberOfBytes :: Maybe Nat
} deriving (Eq, Read, Show)
generateDataKey :: Text
-> GenerateDataKey
generateDataKey p1 = GenerateDataKey
{ _gdkKeyId = p1
, _gdkEncryptionContext = mempty
, _gdkNumberOfBytes = Nothing
, _gdkKeySpec = Nothing
, _gdkGrantTokens = mempty
}
gdkEncryptionContext :: Lens' GenerateDataKey (HashMap Text Text)
gdkEncryptionContext =
lens _gdkEncryptionContext (\s a -> s { _gdkEncryptionContext = a })
. _Map
gdkGrantTokens :: Lens' GenerateDataKey [Text]
gdkGrantTokens = lens _gdkGrantTokens (\s a -> s { _gdkGrantTokens = a }) . _List
gdkKeyId :: Lens' GenerateDataKey Text
gdkKeyId = lens _gdkKeyId (\s a -> s { _gdkKeyId = a })
gdkKeySpec :: Lens' GenerateDataKey (Maybe DataKeySpec)
gdkKeySpec = lens _gdkKeySpec (\s a -> s { _gdkKeySpec = a })
gdkNumberOfBytes :: Lens' GenerateDataKey (Maybe Natural)
gdkNumberOfBytes = lens _gdkNumberOfBytes (\s a -> s { _gdkNumberOfBytes = a }) . mapping _Nat
data GenerateDataKeyResponse = GenerateDataKeyResponse
{ _gdkrCiphertextBlob :: Maybe Base64
, _gdkrKeyId :: Maybe Text
, _gdkrPlaintext :: Maybe Base64
} deriving (Eq, Read, Show)
generateDataKeyResponse :: GenerateDataKeyResponse
generateDataKeyResponse = GenerateDataKeyResponse
{ _gdkrCiphertextBlob = Nothing
, _gdkrPlaintext = Nothing
, _gdkrKeyId = Nothing
}
gdkrCiphertextBlob :: Lens' GenerateDataKeyResponse (Maybe Base64)
gdkrCiphertextBlob =
lens _gdkrCiphertextBlob (\s a -> s { _gdkrCiphertextBlob = a })
gdkrKeyId :: Lens' GenerateDataKeyResponse (Maybe Text)
gdkrKeyId = lens _gdkrKeyId (\s a -> s { _gdkrKeyId = a })
gdkrPlaintext :: Lens' GenerateDataKeyResponse (Maybe Base64)
gdkrPlaintext = lens _gdkrPlaintext (\s a -> s { _gdkrPlaintext = a })
instance ToPath GenerateDataKey where
toPath = const "/"
instance ToQuery GenerateDataKey where
toQuery = const mempty
instance ToHeaders GenerateDataKey
instance ToJSON GenerateDataKey where
toJSON GenerateDataKey{..} = object
[ "KeyId" .= _gdkKeyId
, "EncryptionContext" .= _gdkEncryptionContext
, "NumberOfBytes" .= _gdkNumberOfBytes
, "KeySpec" .= _gdkKeySpec
, "GrantTokens" .= _gdkGrantTokens
]
instance AWSRequest GenerateDataKey where
type Sv GenerateDataKey = KMS
type Rs GenerateDataKey = GenerateDataKeyResponse
request = post "GenerateDataKey"
response = jsonResponse
instance FromJSON GenerateDataKeyResponse where
parseJSON = withObject "GenerateDataKeyResponse" $ \o -> GenerateDataKeyResponse
<$> o .:? "CiphertextBlob"
<*> o .:? "KeyId"
<*> o .:? "Plaintext"