1
1
'use strict' ;
2
2
3
- Object . defineProperty ( exports , "__esModule" , {
4
- value : true
5
- } ) ;
6
-
7
3
var _log = require ( 'babel-runtime/core-js/math/log10' ) ;
8
4
9
5
var _log3 = _interopRequireDefault ( _log ) ;
@@ -12,10 +8,6 @@ var _log4 = require('babel-runtime/core-js/math/log2');
12
8
13
9
var _log5 = _interopRequireDefault ( _log4 ) ;
14
10
15
- var _charSet = require ( './charSet' ) ;
16
-
17
- var _charSet2 = _interopRequireDefault ( _charSet ) ;
18
-
19
11
var _lcm = require ( './lcm' ) ;
20
12
21
13
var _lcm2 = _interopRequireDefault ( _lcm ) ;
@@ -27,154 +19,43 @@ var _log10 = _log3.default;
27
19
var _log2_10 = _log2 ( 10 ) ;
28
20
var _bitsPerByte = 8 ;
29
21
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 ) {
39
24
return 0 ;
40
25
}
41
26
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 ) ;
45
30
} else {
46
- var n = 2 * _log10 ( total ) + _log10 ( risk ) ;
47
- N = n * _log2_10 - 1 ;
31
+ N = 2 * _log2 ( numStrings ) ;
48
32
}
49
- return N ;
33
+ return N + log2Risk - 1 ;
50
34
} ;
51
35
52
- var bitsWithRiskPower = function bitsWithRiskPower ( total , rPower ) {
36
+ var bits = function bits ( total , risk ) {
53
37
if ( total == 0 ) {
54
38
return 0 ;
55
39
}
40
+ return _totalOf ( total , _log2 ( risk ) ) ;
41
+ } ;
56
42
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 ) ;
65
46
} ;
66
47
67
48
var bitsWithPowers = function bitsWithPowers ( tPower , rPower ) {
68
49
var N = 0 ;
69
50
if ( tPower < 5 ) {
70
51
return bitsWithRiskPower ( Math . pow ( 10 , tPower ) , rPower ) ;
71
52
} else {
72
- var n = 2 * tPower + rPower ;
73
- N = n * _log2_10 - 1 ;
53
+ return ( 2 * tPower + rPower ) * _log2_10 - 1 ;
74
54
}
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 ) ) ;
84
55
} ;
85
56
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 = {
166
58
bits : bits ,
167
59
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
180
61
} ;
0 commit comments