UNPKG

azurite

Version:

An open source Azure Storage API compatible server

117 lines 5.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateAccountSASSignature = exports.SASProtocol = void 0; const utils_1 = require("../utils/utils"); const IIPRange_1 = require("./IIPRange"); /** * Protocols for generated SAS. * * @export * @enum {number} */ var SASProtocol; (function (SASProtocol) { /** * Protocol that allows HTTPS only */ SASProtocol["HTTPS"] = "https"; /** * Protocol that allows both HTTPS and HTTP */ SASProtocol["HTTPSandHTTP"] = "https,http"; })(SASProtocol || (exports.SASProtocol = SASProtocol = {})); /** * Generates signature string from account SAS parameters. * * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas * * @param {SharedKeyCredential} sharedKeyCredential * @param {string} accountName * @param {Buffer} sharedKey * @returns {[string, string]} signature and stringToSign * @memberof IAccountSASSignatureValues */ function generateAccountSASSignature(accountSASSignatureValues, accountName, sharedKey) { if (accountSASSignatureValues.version >= "2020-12-06") { return generateAccountSASSignature20201206(accountSASSignatureValues, accountName, sharedKey); } else { return generateAccountSASSignature20150405(accountSASSignatureValues, accountName, sharedKey); } } exports.generateAccountSASSignature = generateAccountSASSignature; function generateAccountSASSignature20201206(accountSASSignatureValues, accountName, sharedKey) { const parsedPermissions = accountSASSignatureValues.permissions.toString(); const parsedServices = accountSASSignatureValues.services.toString(); const parsedResourceTypes = accountSASSignatureValues.resourceTypes.toString(); const parsedStartTime = accountSASSignatureValues.startTime === undefined ? "" : typeof accountSASSignatureValues.startTime === "string" ? accountSASSignatureValues.startTime : (0, utils_1.truncatedISO8061Date)(accountSASSignatureValues.startTime, false); const parsedExpiryTime = typeof accountSASSignatureValues.expiryTime === "string" ? accountSASSignatureValues.expiryTime : (0, utils_1.truncatedISO8061Date)(accountSASSignatureValues.expiryTime, false); const parsedIPRange = accountSASSignatureValues.ipRange === undefined ? "" : typeof accountSASSignatureValues.ipRange === "string" ? accountSASSignatureValues.ipRange : (0, IIPRange_1.ipRangeToString)(accountSASSignatureValues.ipRange); const parsedProtocol = accountSASSignatureValues.protocol === undefined ? "" : accountSASSignatureValues.protocol; const version = accountSASSignatureValues.version; const encryptionScope = accountSASSignatureValues.encryptionScope; const stringToSign = [ accountName, parsedPermissions, parsedServices, parsedResourceTypes, parsedStartTime, parsedExpiryTime, parsedIPRange, parsedProtocol, version, encryptionScope, "" // Account SAS requires an additional newline character ].join("\n"); const signature = (0, utils_1.computeHMACSHA256)(stringToSign, sharedKey); return [signature, stringToSign]; } function generateAccountSASSignature20150405(accountSASSignatureValues, accountName, sharedKey) { const parsedPermissions = accountSASSignatureValues.permissions.toString(); const parsedServices = accountSASSignatureValues.services.toString(); const parsedResourceTypes = accountSASSignatureValues.resourceTypes.toString(); const parsedStartTime = accountSASSignatureValues.startTime === undefined ? "" : typeof accountSASSignatureValues.startTime === "string" ? accountSASSignatureValues.startTime : (0, utils_1.truncatedISO8061Date)(accountSASSignatureValues.startTime, false); const parsedExpiryTime = typeof accountSASSignatureValues.expiryTime === "string" ? accountSASSignatureValues.expiryTime : (0, utils_1.truncatedISO8061Date)(accountSASSignatureValues.expiryTime, false); const parsedIPRange = accountSASSignatureValues.ipRange === undefined ? "" : typeof accountSASSignatureValues.ipRange === "string" ? accountSASSignatureValues.ipRange : (0, IIPRange_1.ipRangeToString)(accountSASSignatureValues.ipRange); const parsedProtocol = accountSASSignatureValues.protocol === undefined ? "" : accountSASSignatureValues.protocol; const version = accountSASSignatureValues.version; const stringToSign = [ accountName, parsedPermissions, parsedServices, parsedResourceTypes, parsedStartTime, parsedExpiryTime, parsedIPRange, parsedProtocol, version, "" // Account SAS requires an additional newline character ].join("\n"); const signature = (0, utils_1.computeHMACSHA256)(stringToSign, sharedKey); return [signature, stringToSign]; } //# sourceMappingURL=IAccountSASSignatureValues.js.map