UNPKG

@azure/data-tables

Version:

An isomorphic client library for the Azure Tables service.

55 lines 2.84 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { accountSasPermissionsToString } from "./accountSasPermissions"; import { ipRangeToString } from "./sasIPRange"; import { SasQueryParameters } from "./sasQueryParameters"; import { accountSasResourceTypesFromString, accountSasResourceTypesToString, } from "./accountSasResourceTypes"; import { accountSasServicesFromString, accountSasServicesToString } from "./accountSasServices"; import { SERVICE_VERSION } from "../utils/constants"; import { computeHMACSHA256 } from "../utils/computeHMACSHA256"; import { truncatedISO8061Date } from "../utils/truncateISO8061Date"; /** * ONLY AVAILABLE IN NODE.JS RUNTIME. * * Generates a {@link SasQueryParameters} object which contains all SAS query parameters needed to make an actual * REST request. * * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas * * @param accountSasSignatureValues - * @param sharedKeyCredential - */ export function generateAccountSasQueryParameters(accountSasSignatureValues, credential) { const version = accountSasSignatureValues.version ? accountSasSignatureValues.version : SERVICE_VERSION; const parsedPermissions = accountSasPermissionsToString(accountSasSignatureValues.permissions); const parsedServices = accountSasServicesToString(accountSasServicesFromString(accountSasSignatureValues.services)); // to and from string to guarantee the correct order of resoruce types is generated const parsedResourceTypes = accountSasResourceTypesToString(accountSasResourceTypesFromString(accountSasSignatureValues.resourceTypes)); const stringToSign = [ credential.name, parsedPermissions, parsedServices, parsedResourceTypes, accountSasSignatureValues.startsOn ? truncatedISO8061Date(accountSasSignatureValues.startsOn, false) : "", truncatedISO8061Date(accountSasSignatureValues.expiresOn, false), accountSasSignatureValues.ipRange ? ipRangeToString(accountSasSignatureValues.ipRange) : "", accountSasSignatureValues.protocol ? accountSasSignatureValues.protocol : "", version, "", // Account SAS requires an additional newline character ].join("\n"); const signature = computeHMACSHA256(stringToSign, credential.key); return new SasQueryParameters(version, signature, { permissions: parsedPermissions.toString(), services: parsedServices, resourceTypes: parsedResourceTypes, protocol: accountSasSignatureValues.protocol, startsOn: accountSasSignatureValues.startsOn, expiresOn: accountSasSignatureValues.expiresOn, ipRange: accountSasSignatureValues.ipRange, }); } //# sourceMappingURL=accountSasSignatureValues.js.map