UNPKG

@nos-sdk/nos-node-sdk

Version:

NOS Node.js SDK实现了NOS对象操作接口,基于此SDK能方便快速地实现JavaScript应用程序来使用NOS的对象存储服务。

32 lines 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = require("crypto"); const ramda_1 = require("ramda"); const ramda_adjunct_1 = require("ramda-adjunct"); const resource_1 = require("./resource"); // lower-case header name const normalizeHeaders = ramda_adjunct_1.renameKeysWith(ramda_1.toLower); const canonicalizedHeaders = ramda_1.pipe(ramda_1.pickBy((_, key) => key.startsWith('x-nos-')), ramda_1.toPairs, ramda_1.sortBy(ramda_1.prop('0')), ramda_1.map(ramda_1.join(':')), ramda_1.join('\n')); const normalizeDate = function (date) { return new Date(date).toUTCString(); }; const joinParts = ramda_1.join('\n'); function signature(secretKey, verb, headers, resource) { headers = normalizeHeaders(headers); const contentMD5 = headers['content-md5'] || ''; const contentType = headers['content-type'] || ''; const date = normalizeDate(headers['date'] || Date.now()); const parts = [ verb.toUpperCase(), contentMD5, contentType, date, `${canonicalizedHeaders(headers)}\n${resource_1.getResourceString(resource)}`.trim(), ]; const hmac = crypto_1.createHmac('sha256', secretKey); const content = joinParts(parts); hmac.update(content); return hmac.digest('base64'); } exports.signature = signature; //# sourceMappingURL=authorization.js.map