fast-srp-hap

Is a pure NodeJS implementation of the SRP6a protocol.
It's a derived work of Jed Parson's node-srp and Tom Wu's jsbn.
Full documentation can be found here.
Creating the Verifier
import { SRP } from 'fast-srp-hap';
async function srp6a_create_user(I: string, P: string) {
const salt = await SRP.genKey(32);
return {
salt,
verifier: SRP.computeVerifier(SRP.params[4096], salt, Buffer.from(I), Buffer.from(P)),
};
}
await srp6a_create_user('Zarmack Tanen', '*****').then(({salt, verifier}) => {
console.log('SRP6a verifier and salt of Zarmack Tanen user is %s and %s',
verifier.toString('hex'), salt.toString('hex'));
});
Server
import {SRP, SrpServer} from 'fast-srp-hap';
(async () => {
const user = {
username: 'username',
salt: await SRP.genKey(32),
password: 'password',
salt: Buffer.from('...'),
verifier: Buffer.from('...'),
};
const secret = await SRP.genKey(32);
const server = new SrpServer(SRP.params[3076], user, secret);
})();