11'use strict' ;
22
3- Object . defineProperty ( exports , "__esModule" , {
4- value : true
5- } ) ;
6-
73var _log = require ( 'babel-runtime/core-js/math/log10' ) ;
84
95var _log3 = _interopRequireDefault ( _log ) ;
@@ -12,10 +8,6 @@ var _log4 = require('babel-runtime/core-js/math/log2');
128
139var _log5 = _interopRequireDefault ( _log4 ) ;
1410
15- var _charSet = require ( './charSet' ) ;
16-
17- var _charSet2 = _interopRequireDefault ( _charSet ) ;
18-
1911var _lcm = require ( './lcm' ) ;
2012
2113var _lcm2 = _interopRequireDefault ( _lcm ) ;
@@ -27,154 +19,43 @@ var _log10 = _log3.default;
2719var _log2_10 = _log2 ( 10 ) ;
2820var _bitsPerByte = 8 ;
2921
30- var _endianByteNum = function ( ) {
31- var buf32 = new Uint32Array ( 1 ) ;
32- var buf8 = new Uint8Array ( buf32 . buffer ) ;
33- buf32 [ 0 ] = 0xff ;
34- return buf8 [ 0 ] === 0xff ? [ 2 , 3 , 4 , 5 , 6 , 7 ] : [ 0 , 1 , 2 , 3 , 6 , 7 ] ;
35- } ( ) ;
36-
37- var bits = function bits ( total , risk ) {
38- if ( total == 0 ) {
22+ var _totalOf = function _totalOf ( numStrings , log2Risk ) {
23+ if ( numStrings == 0 ) {
3924 return 0 ;
4025 }
4126
42- var N = 0 ;
43- if ( total < 10001 ) {
44- N = _log2 ( total ) + _log2 ( total - 1 ) + _log2_10 * _log10 ( risk ) - 1 ;
27+ var N = void 0 ;
28+ if ( numStrings < 10001 ) {
29+ N = _log2 ( numStrings ) + _log2 ( numStrings - 1 ) ;
4530 } else {
46- var n = 2 * _log10 ( total ) + _log10 ( risk ) ;
47- N = n * _log2_10 - 1 ;
31+ N = 2 * _log2 ( numStrings ) ;
4832 }
49- return N ;
33+ return N + log2Risk - 1 ;
5034} ;
5135
52- var bitsWithRiskPower = function bitsWithRiskPower ( total , rPower ) {
36+ var bits = function bits ( total , risk ) {
5337 if ( total == 0 ) {
5438 return 0 ;
5539 }
40+ return _totalOf ( total , _log2 ( risk ) ) ;
41+ } ;
5642
57- var N = 0 ;
58- if ( total < 10001 ) {
59- N = _log2 ( total ) + _log2 ( total - 1 ) + _log2_10 * rPower - 1 ;
60- } else {
61- var n = 2 * _log10 ( total ) + rPower ;
62- N = n * _log2_10 - 1 ;
63- }
64- return N ;
43+ var bitsWithRiskPower = function bitsWithRiskPower ( total , rPower ) {
44+ var log2Risk = _log2_10 * rPower ;
45+ return _totalOf ( total , log2Risk ) ;
6546} ;
6647
6748var bitsWithPowers = function bitsWithPowers ( tPower , rPower ) {
6849 var N = 0 ;
6950 if ( tPower < 5 ) {
7051 return bitsWithRiskPower ( Math . pow ( 10 , tPower ) , rPower ) ;
7152 } else {
72- var n = 2 * tPower + rPower ;
73- N = n * _log2_10 - 1 ;
53+ return ( 2 * tPower + rPower ) * _log2_10 - 1 ;
7454 }
75- return N ;
76- } ;
77-
78- var string = function string ( entropyBits , charSet ) {
79- return stringWithBytes ( entropyBits , charSet , _cryptoBytes ( entropyBits , charSet ) ) ;
80- } ;
81-
82- var stringRandom = function stringRandom ( entropyBits , charSet ) {
83- return stringWithBytes ( entropyBits , charSet , _randomBytes ( entropyBits , charSet ) ) ;
8455} ;
8556
86- var stringWithBytes = function stringWithBytes ( entropyBits , charSet , bytes ) {
87- if ( ! _charSet2 . default . isValid ( charSet ) ) {
88- throw new Error ( 'Invalid CharSet' ) ;
89- }
90- if ( entropyBits <= 0 ) {
91- return '' ;
92- }
93-
94- var bitsPerChar = charSet . getBitsPerChar ( ) ;
95- var count = Math . ceil ( entropyBits / bitsPerChar ) ;
96- if ( count <= 0 ) {
97- return '' ;
98- }
99-
100- var needed = Math . ceil ( count * ( bitsPerChar / _bitsPerByte ) ) ;
101- if ( bytes . length < needed ) {
102- throw new Error ( 'Insufficient bytes' ) ;
103- }
104-
105- var charsPerChunk = charSet . getCharsPerChunk ( ) ;
106- var chunks = Math . floor ( count / charsPerChunk ) ;
107- var partials = count % charsPerChunk ;
108-
109- var ndxFn = charSet . getNdxFn ( ) ;
110- var chars = charSet . getChars ( ) ;
111-
112- var string = '' ;
113- for ( var chunk = 0 ; chunk < chunks ; chunk ++ ) {
114- for ( var slice = 0 ; slice < charsPerChunk ; slice ++ ) {
115- var ndx = ndxFn ( chunk , slice , bytes ) ;
116- string += chars [ ndx ] ;
117- }
118- }
119- for ( var _slice = 0 ; _slice < partials ; _slice ++ ) {
120- var _ndx = ndxFn ( chunks , _slice , bytes ) ;
121- string += chars [ _ndx ] ;
122- }
123- return string ;
124- } ;
125-
126- var bytesNeeded = function bytesNeeded ( entropyBits , charSet ) {
127- if ( ! _charSet2 . default . isValid ( charSet ) ) {
128- throw new Error ( 'Invalid CharSet' ) ;
129- }
130-
131- var bitsPerChar = charSet . getBitsPerChar ( ) ;
132- var count = Math . ceil ( entropyBits / bitsPerChar ) ;
133- if ( count <= 0 ) {
134- return 0 ;
135- }
136-
137- var bytesPerSlice = bitsPerChar / _bitsPerByte ;
138- return Math . ceil ( count * bytesPerSlice ) ;
139- } ;
140-
141- var _cryptoBytes = function _cryptoBytes ( entropyBits , charSet ) {
142- var crypto = require ( 'crypto' ) ;
143- return Buffer . from ( crypto . randomBytes ( bytesNeeded ( entropyBits , charSet ) ) ) ;
144- } ;
145-
146- var _randomBytes = function _randomBytes ( entropyBits , charSet ) {
147- var byteCount = bytesNeeded ( entropyBits , charSet ) ;
148- var randCount = Math . ceil ( byteCount / 6 ) ;
149-
150- var buffer = new Buffer ( byteCount ) ;
151- var dataView = new DataView ( new ArrayBuffer ( _bitsPerByte ) ) ;
152- for ( var rNum = 0 ; rNum < randCount ; rNum ++ ) {
153- dataView . setFloat64 ( 0 , Math . random ( ) ) ;
154- for ( var n = 0 ; n < 6 ; n ++ ) {
155- var fByteNum = _endianByteNum [ n ] ;
156- var bByteNum = 6 * rNum + n ;
157- if ( bByteNum < byteCount ) {
158- buffer [ bByteNum ] = dataView . getUint8 ( fByteNum ) ;
159- }
160- }
161- }
162- return buffer ;
163- } ;
164-
165- exports . default = {
57+ module . exports = {
16658 bits : bits ,
16759 bitsWithRiskPower : bitsWithRiskPower ,
168- bitsWithPowers : bitsWithPowers ,
169- string : string ,
170- stringRandom : stringRandom ,
171- stringWithBytes : stringWithBytes ,
172- bytesNeeded : bytesNeeded ,
173-
174- charSet64 : _charSet2 . default . charSet64 ,
175- charSet32 : _charSet2 . default . charSet32 ,
176- charSet16 : _charSet2 . default . charSet16 ,
177- charSet8 : _charSet2 . default . charSet8 ,
178- charSet4 : _charSet2 . default . charSet4 ,
179- charSet2 : _charSet2 . default . charSet2
60+ bitsWithPowers : bitsWithPowers
18061} ;
0 commit comments