azurite
Version:
An open source Azure Storage API compatible server
60 lines • 2.9 kB
JavaScript
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
;