in decrypt_oracle/src/aws_encryption_sdk_decrypt_oracle/app.py [0:0]
def basic_decrypt() -> Response:
"""Basic decrypt handler for decrypt oracle v0.
**Request**
* **Method**: POST
* **Body**: Raw ciphertext bytes
* **Headers**:
* **Content-Type**: ``application/octet-stream``
* **Accept**: ``application/octet-stream``
**Response**
* 200 response code with the raw plaintext bytes as the body
* 400 response code with whatever error code was encountered as the body
"""
APP.log.debug("Request:")
APP.log.debug(json.dumps(APP.current_request.to_dict()))
APP.log.debug("Ciphertext:")
APP.log.debug(APP.current_request.raw_body)
try:
# The decrypt oracle needs to be able to decrypt any message
# it does not encrypt messages for anyone.
client = aws_encryption_sdk.EncryptionSDKClient(commitment_policy=CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT)
ciphertext = APP.current_request.raw_body
plaintext, _header = client.decrypt(source=ciphertext, key_provider=_master_key_provider())
APP.log.debug("Plaintext:")
APP.log.debug(plaintext)
response = Response(body=plaintext, headers={"Content-Type": "application/octet-stream"}, status_code=200)
except Exception as error: # pylint: disable=broad-except
response = Response(body=str(error), status_code=400)
APP.log.debug("Response:")
APP.log.debug(json.dumps(response.to_dict(binary_types=["application/octet-stream"])))
return response