module Network.AWS.KMS.ReEncrypt
(
reEncrypt
, ReEncrypt
, reDestinationEncryptionContext
, reSourceEncryptionContext
, reGrantTokens
, reCiphertextBlob
, reDestinationKeyId
, reEncryptResponse
, ReEncryptResponse
, rersSourceKeyId
, rersKeyId
, rersCiphertextBlob
, rersStatus
) where
import Network.AWS.KMS.Types
import Network.AWS.KMS.Types.Product
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 Sv ReEncrypt = KMS
type Rs ReEncrypt = ReEncryptResponse
request = postJSON
response
= receiveJSON
(\ s h x ->
ReEncryptResponse' <$>
(x .?> "SourceKeyId") <*> (x .?> "KeyId") <*>
(x .?> "CiphertextBlob")
<*> (pure (fromEnum s)))
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
["DestinationEncryptionContext" .=
_reDestinationEncryptionContext,
"SourceEncryptionContext" .=
_reSourceEncryptionContext,
"GrantTokens" .= _reGrantTokens,
"CiphertextBlob" .= _reCiphertextBlob,
"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)
, _rersStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
reEncryptResponse
:: Int
-> ReEncryptResponse
reEncryptResponse pStatus_ =
ReEncryptResponse'
{ _rersSourceKeyId = Nothing
, _rersKeyId = Nothing
, _rersCiphertextBlob = Nothing
, _rersStatus = pStatus_
}
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;
rersStatus :: Lens' ReEncryptResponse Int
rersStatus = lens _rersStatus (\ s a -> s{_rersStatus = a});