File Explorer

/proc/self/root/var/runtime/node_modules/@aws-sdk/middleware-ssec/dist-cjs

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

index.js2.4 KB · 74 lines
'use strict'; function ssecMiddleware(options) {    return (next) => async (args) => {        const input = { ...args.input };        const properties = [            {                target: "SSECustomerKey",                hash: "SSECustomerKeyMD5",            },            {                target: "CopySourceSSECustomerKey",                hash: "CopySourceSSECustomerKeyMD5",            },        ];        for (const prop of properties) {            const value = input[prop.target];            if (value) {                let valueForHash;                if (typeof value === "string") {                    if (isValidBase64EncodedSSECustomerKey(value, options)) {                        valueForHash = options.base64Decoder(value);                    }                    else {                        valueForHash = options.utf8Decoder(value);                        input[prop.target] = options.base64Encoder(valueForHash);                    }                }                else {                    valueForHash = ArrayBuffer.isView(value)                        ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength)                        : new Uint8Array(value);                    input[prop.target] = options.base64Encoder(valueForHash);                }                const hash = new options.md5();                hash.update(valueForHash);                input[prop.hash] = options.base64Encoder(await hash.digest());            }        }        return next({            ...args,            input,        });    };}const ssecMiddlewareOptions = {    name: "ssecMiddleware",    step: "initialize",    tags: ["SSE"],    override: true,};const getSsecPlugin = (config) => ({    applyToStack: (clientStack) => {        clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions);    },});function isValidBase64EncodedSSECustomerKey(str, options) {    const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;    if (!base64Regex.test(str))        return false;    try {        const decodedBytes = options.base64Decoder(str);        return decodedBytes.length === 32;    }    catch {        return false;    }} exports.getSsecPlugin = getSsecPlugin;exports.isValidBase64EncodedSSECustomerKey = isValidBase64EncodedSSECustomerKey;exports.ssecMiddleware = ssecMiddleware;exports.ssecMiddlewareOptions = ssecMiddlewareOptions;