@aws-amplify/auth
Version:
Auth category of aws-amplify
41 lines (39 loc) • 1.99 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignatureString = void 0;
const sha256_js_1 = require("@aws-crypto/sha256-js");
const utils_1 = require("@aws-amplify/core/internals/utils");
const textEncoder_1 = require("../textEncoder");
const getSignatureString = ({ userPoolName, username, challengeParameters, dateNow, hkdf, }) => {
const bufUPIDaToB = textEncoder_1.textEncoder.convert(userPoolName);
const bufUNaToB = textEncoder_1.textEncoder.convert(username);
const bufSBaToB = urlB64ToUint8Array(challengeParameters.SECRET_BLOCK);
const bufDNaToB = textEncoder_1.textEncoder.convert(dateNow);
const bufConcat = new Uint8Array(bufUPIDaToB.byteLength +
bufUNaToB.byteLength +
bufSBaToB.byteLength +
bufDNaToB.byteLength);
bufConcat.set(bufUPIDaToB, 0);
bufConcat.set(bufUNaToB, bufUPIDaToB.byteLength);
bufConcat.set(bufSBaToB, bufUPIDaToB.byteLength + bufUNaToB.byteLength);
bufConcat.set(bufDNaToB, bufUPIDaToB.byteLength + bufUNaToB.byteLength + bufSBaToB.byteLength);
const awsCryptoHash = new sha256_js_1.Sha256(hkdf);
awsCryptoHash.update(bufConcat);
const resultFromAWSCrypto = awsCryptoHash.digestSync();
const signatureString = utils_1.base64Encoder.convert(resultFromAWSCrypto);
return signatureString;
};
exports.getSignatureString = getSignatureString;
const urlB64ToUint8Array = (base64String) => {
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
const rawData = utils_1.base64Decoder.convert(base64);
const outputArray = new Uint8Array(rawData.length);
for (let i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
};
//# sourceMappingURL=getSignatureString.js.map
;