UNPKG

strophe.js

Version:

Strophe.js is an XMPP library for JavaScript

42 lines (37 loc) 1.18 kB
/** * @typedef {import("./connection.js").default} Connection */ import SASLMechanism from './sasl.js'; import utils from './utils'; class SASLPlain extends SASLMechanism { /** * SASL PLAIN authentication. */ constructor(mechname = 'PLAIN', isClientFirst = true, priority = 50) { super(mechname, isClientFirst, priority); } /** * @param {Connection} connection */ test(connection) { return connection.authcid !== null; } /** * @param {Connection} connection */ onChallenge(connection) { const { authcid, authzid, domain, pass } = connection; if (!domain) { throw new Error('SASLPlain onChallenge: domain is not defined!'); } // Only include authzid if it differs from authcid. // See: https://tools.ietf.org/html/rfc6120#section-6.3.8 let auth_str = authzid !== `${authcid}@${domain}` ? authzid : ''; auth_str = auth_str + '\u0000'; auth_str = auth_str + authcid; auth_str = auth_str + '\u0000'; auth_str = auth_str + pass; return utils.utf16to8(auth_str); } } export default SASLPlain;