function generateTableSASSignature20181109()

in src/table/authentication/ITableSASSignatureValues.ts [127:185]


function generateTableSASSignature20181109(
  tableSASSignatureValues: ITableSASSignatureValues,
  accountName: string,
  sharedKey: Buffer
): [string, string] {
  if (
    !tableSASSignatureValues.identifier &&
    (!tableSASSignatureValues.permissions &&
      !tableSASSignatureValues.expiryTime)
  ) {
    throw new RangeError(
      // tslint:disable-next-line:max-line-length
      "generateTableSASSignature(): Must provide 'permissions' and 'expiryTime' for Table SAS generation when 'identifier' is not provided."
    );
  }

  const version = tableSASSignatureValues.version;
  const verifiedPermissions = tableSASSignatureValues.permissions;

  // Signature is generated on the un-url-encoded values.
  // TODO: Check whether validating the snapshot is necessary.
  const stringToSign = [
    verifiedPermissions ? verifiedPermissions : "",
    tableSASSignatureValues.startTime === undefined
      ? ""
      : typeof tableSASSignatureValues.startTime === "string"
      ? tableSASSignatureValues.startTime
      : truncatedISO8061Date(tableSASSignatureValues.startTime, false),
    tableSASSignatureValues.expiryTime === undefined
      ? ""
      : typeof tableSASSignatureValues.expiryTime === "string"
      ? tableSASSignatureValues.expiryTime
      : truncatedISO8061Date(tableSASSignatureValues.expiryTime, false),
    getCanonicalName(accountName, tableSASSignatureValues.tableName),
    tableSASSignatureValues.identifier, // TODO: ? tableSASSignatureValues.identifier : "",
    tableSASSignatureValues.ipRange
      ? typeof tableSASSignatureValues.ipRange === "string"
        ? tableSASSignatureValues.ipRange
        : ipRangeToString(tableSASSignatureValues.ipRange)
      : "",
    tableSASSignatureValues.protocol ? tableSASSignatureValues.protocol : "",
    version,
    tableSASSignatureValues.startingPartitionKey
      ? tableSASSignatureValues.startingPartitionKey
      : "",
    tableSASSignatureValues.startingRowKey
      ? tableSASSignatureValues.startingRowKey
      : "",
    tableSASSignatureValues.endingPartitionKey
      ? tableSASSignatureValues.endingPartitionKey
      : "",
    tableSASSignatureValues.endingRowKey
      ? tableSASSignatureValues.endingRowKey
      : ""
  ].join("\n");

  const signature = computeHMACSHA256(stringToSign, sharedKey);
  return [signature, stringToSign];
}