{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.KMS.ReEncrypt
(
reEncrypt
, ReEncrypt
, reDestinationEncryptionContext
, reSourceEncryptionContext
, reGrantTokens
, reCiphertextBlob
, reDestinationKeyId
, reEncryptResponse
, ReEncryptResponse
, rersSourceKeyId
, rersKeyId
, rersCiphertextBlob
, rersResponseStatus
) where
import Network.AWS.KMS.Types
import Network.AWS.KMS.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ReEncrypt = ReEncrypt'
{ _reDestinationEncryptionContext :: !(Maybe (Map Text Text))
, _reSourceEncryptionContext :: !(Maybe (Map Text Text))
, _reGrantTokens :: !(Maybe [Text])
, _reCiphertextBlob :: !Base64
, _reDestinationKeyId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
reEncrypt
:: ByteString
-> Text
-> ReEncrypt
reEncrypt pCiphertextBlob_ pDestinationKeyId_ =
ReEncrypt'
{ _reDestinationEncryptionContext = Nothing
, _reSourceEncryptionContext = Nothing
, _reGrantTokens = Nothing
, _reCiphertextBlob = _Base64 # pCiphertextBlob_
, _reDestinationKeyId = pDestinationKeyId_
}
reDestinationEncryptionContext :: Lens' ReEncrypt (HashMap Text Text)
reDestinationEncryptionContext = lens _reDestinationEncryptionContext (\ s a -> s{_reDestinationEncryptionContext = a}) . _Default . _Map;
reSourceEncryptionContext :: Lens' ReEncrypt (HashMap Text Text)
reSourceEncryptionContext = lens _reSourceEncryptionContext (\ s a -> s{_reSourceEncryptionContext = a}) . _Default . _Map;
reGrantTokens :: Lens' ReEncrypt [Text]
reGrantTokens = lens _reGrantTokens (\ s a -> s{_reGrantTokens = a}) . _Default . _Coerce;
reCiphertextBlob :: Lens' ReEncrypt ByteString
reCiphertextBlob = lens _reCiphertextBlob (\ s a -> s{_reCiphertextBlob = a}) . _Base64;
reDestinationKeyId :: Lens' ReEncrypt Text
reDestinationKeyId = lens _reDestinationKeyId (\ s a -> s{_reDestinationKeyId = a});
instance AWSRequest ReEncrypt where
type Rs ReEncrypt = ReEncryptResponse
request = postJSON kms
response
= receiveJSON
(\ s h x ->
ReEncryptResponse' <$>
(x .?> "SourceKeyId") <*> (x .?> "KeyId") <*>
(x .?> "CiphertextBlob")
<*> (pure (fromEnum s)))
instance Hashable ReEncrypt
instance NFData ReEncrypt
instance ToHeaders ReEncrypt where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("TrentService.ReEncrypt" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON ReEncrypt where
toJSON ReEncrypt'{..}
= object
(catMaybes
[("DestinationEncryptionContext" .=) <$>
_reDestinationEncryptionContext,
("SourceEncryptionContext" .=) <$>
_reSourceEncryptionContext,
("GrantTokens" .=) <$> _reGrantTokens,
Just ("CiphertextBlob" .= _reCiphertextBlob),
Just ("DestinationKeyId" .= _reDestinationKeyId)])
instance ToPath ReEncrypt where
toPath = const "/"
instance ToQuery ReEncrypt where
toQuery = const mempty
data ReEncryptResponse = ReEncryptResponse'
{ _rersSourceKeyId :: !(Maybe Text)
, _rersKeyId :: !(Maybe Text)
, _rersCiphertextBlob :: !(Maybe Base64)
, _rersResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
reEncryptResponse
:: Int
-> ReEncryptResponse
reEncryptResponse pResponseStatus_ =
ReEncryptResponse'
{ _rersSourceKeyId = Nothing
, _rersKeyId = Nothing
, _rersCiphertextBlob = Nothing
, _rersResponseStatus = pResponseStatus_
}
rersSourceKeyId :: Lens' ReEncryptResponse (Maybe Text)
rersSourceKeyId = lens _rersSourceKeyId (\ s a -> s{_rersSourceKeyId = a});
rersKeyId :: Lens' ReEncryptResponse (Maybe Text)
rersKeyId = lens _rersKeyId (\ s a -> s{_rersKeyId = a});
rersCiphertextBlob :: Lens' ReEncryptResponse (Maybe ByteString)
rersCiphertextBlob = lens _rersCiphertextBlob (\ s a -> s{_rersCiphertextBlob = a}) . mapping _Base64;
rersResponseStatus :: Lens' ReEncryptResponse Int
rersResponseStatus = lens _rersResponseStatus (\ s a -> s{_rersResponseStatus = a});
instance NFData ReEncryptResponse