in src/Internal/SetupDecryptionHandler.cs [240:269]
protected bool KMSEnvelopeKeyIsPresent(IExecutionContext executionContext,
out byte[] encryptedKMSEnvelopeKey, out Dictionary<string, string> encryptionContext)
{
var response = executionContext.ResponseContext.Response;
var getObjectResponse = response as GetObjectResponse;
encryptedKMSEnvelopeKey = null;
encryptionContext = null;
if (getObjectResponse != null)
{
var metadata = getObjectResponse.Metadata;
EncryptionUtils.EnsureSupportedAlgorithms(metadata);
var base64EncodedEncryptedKmsEnvelopeKey = metadata[EncryptionUtils.XAmzKeyV2];
if (base64EncodedEncryptedKmsEnvelopeKey != null)
{
var wrapAlgorithm = metadata[EncryptionUtils.XAmzWrapAlg];
if (!(EncryptionUtils.XAmzWrapAlgKmsContextValue.Equals(wrapAlgorithm) || EncryptionUtils.XAmzWrapAlgKmsValue.Equals(wrapAlgorithm)))
{
return false;
}
encryptedKMSEnvelopeKey = Convert.FromBase64String(base64EncodedEncryptedKmsEnvelopeKey);
encryptionContext = EncryptionUtils.GetMaterialDescriptionFromMetaData(metadata);
return true;
}
}
return false;
}