in exercises/node-javascript/encryption-context-complete/retrieve.js [16:42]
function retrieve(Key, { expectedContext, expectedContextKeys } = {}) {
return (
s3
.getObject({ Bucket, Key })
.createReadStream()
.pipe(decryptStream(decryptKeyring))
// ENCRYPTION-CONTEXT-COMPLETE: Making Assertions
.once("MessageHeader", function(header) {
const { encryptionContext } = header;
const pairs = Object.entries(expectedContext || {});
const keys = (expectedContextKeys || []).slice();
if (
!(
pairs.every(([key, value]) => encryptionContext[key] === value) &&
keys.every(key =>
Object.hasOwnProperty.call(encryptionContext, key)
)
)
) {
this.emit(
"error",
new Error("Encryption context does not match expected shape")
);
}
})
);
}