UNPKG

@aws-amplify/auth

Version:
41 lines (39 loc) 1.99 kB
'use strict'; // 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