UNPKG

azurite

Version:

An open source Azure Storage API compatible server

60 lines 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateQueueSASSignature = void 0; const utils_1 = require("../../common/utils/utils"); const IIPRange_1 = require("../../common/authentication/IIPRange"); /** * Creates an instance of SASQueryParameters. * * Only accepts required settings needed to create a SAS. For optional settings please * set corresponding properties directly, such as permissions, startTime and identifier. * * WARNING: When identifier is not provided, permissions and expiryTime are required. * You MUST assign value to identifier or expiryTime & permissions manually if you initial with * this constructor. * * @export * @param {IQueueSASSignatureValues} queueSASSignatureValues * @param {SharedKeyCredential} sharedKeyCredential * @returns {SASQueryParameters} */ function generateQueueSASSignature(queueSASSignatureValues, accountName, sharedKey) { if (!queueSASSignatureValues.identifier && (!queueSASSignatureValues.permissions && !queueSASSignatureValues.expiryTime)) { throw new RangeError("Must provide 'permissions' and 'expiryTime' for Queue SAS generation when 'identifier' is not provided."); } const version = queueSASSignatureValues.version; const verifiedPermissions = queueSASSignatureValues.permissions; // Signature is generated on the un-url-encoded values. const stringToSign = [ verifiedPermissions ? verifiedPermissions : "", queueSASSignatureValues.startTime ? typeof queueSASSignatureValues.startTime === "string" ? queueSASSignatureValues.startTime : (0, utils_1.truncatedISO8061Date)(queueSASSignatureValues.startTime, false) : "", queueSASSignatureValues.expiryTime ? typeof queueSASSignatureValues.expiryTime === "string" ? queueSASSignatureValues.expiryTime : (0, utils_1.truncatedISO8061Date)(queueSASSignatureValues.expiryTime, false) : "", getCanonicalName(accountName, queueSASSignatureValues.queueName), queueSASSignatureValues.identifier, queueSASSignatureValues.ipRange ? typeof queueSASSignatureValues.ipRange === "string" ? queueSASSignatureValues.ipRange : (0, IIPRange_1.ipRangeToString)(queueSASSignatureValues.ipRange) : "", queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : "", version ].join("\n"); const signature = (0, utils_1.computeHMACSHA256)(stringToSign, sharedKey); return [signature, stringToSign]; } exports.generateQueueSASSignature = generateQueueSASSignature; function getCanonicalName(accountName, queueName) { // Queue: "/queue/account/queueName" return `/queue/${accountName}/${queueName}`; } //# sourceMappingURL=IQueueSASSignatureValues.js.map