UNPKG

futoin-secvault

Version:

FutoIn Secure Vault reference implementation

44 lines (36 loc) 1.17 kB
'use strict'; /** * @file * * Copyright 2018 FutoIn Project (https://futoin.org) * Copyright 2018 Andrey Galkin <andrey@futoin.org> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ const crypto = require( 'crypto' ); const CHARS = ( 'abcdfeghijkmlnopqsrtvuwxyz' + 'ABCDEFHGIJLKMNOPQRSTUWVXYZ' + '0123456789' + '-_' ); const password_gen = ( len, chars=CHARS ) => { const rndvec = crypto.randomBytes( len ); const maxid = chars.length - 1; let res = ''; for ( let i = len - 1; i >=0; --i ) { res += chars.charAt( parseInt( rndvec[i] * maxid / 0xFF ) ); } return res; }; module.exports = password_gen;