scram_sha_256
Version:
A framework for using scram-sha-256 in javascript
44 lines (43 loc) • 1.22 kB
JavaScript
/*** server_parse_client_final_message(client_final_message)
* @brief parses client final message
*
* @param {string} client_final_message client final message
* @returns {{random_nonce: Buffer, client_proof: Buffer}}} on false: undefined, on success: Object
*/
module.exports = function server_parse_client_final_message(client_final_message) {
let params = client_final_message.split(",");
let client_proof;
let random_nonce;
if (params.length < 2)
return undefined;
for (let i=0;i<params.length;i++)
{
if (params[i][1] != "=")
return undefined;
if (params[i][0] == "p")
{
if (client_proof)
return undefined;
client_proof = Buffer.from(params[i].substring(2), 'base64');
if (client_proof.length == 0)
return undefined;
}
if (params[i][0] == "r")
{
if (random_nonce)
return undefined;
random_nonce = Buffer.from(params[i].substring(2), 'base64');
if (random_nonce.length == 0)
return undefined;
}
}
if (!client_proof)
return undefined;
if (!random_nonce)
return undefined;
let data = new Object();
data.random_nonce = random_nonce;
data.client_proof = client_proof;
return data;
};
;