Gerrit Patch Uploader has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/190640

Change subject: mediawiki.user: Simplify mw.user.generateRandomSessionId
......................................................................

mediawiki.user: Simplify mw.user.generateRandomSessionId

Change-Id: I6e6ac9e0813c4ba540e0a53b8e6667162cb60bf7
---
M resources/src/mediawiki/mediawiki.user.js
1 file changed, 9 insertions(+), 21 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/40/190640/1

diff --git a/resources/src/mediawiki/mediawiki.user.js 
b/resources/src/mediawiki/mediawiki.user.js
index c3ec3f3..537eaa5 100644
--- a/resources/src/mediawiki/mediawiki.user.js
+++ b/resources/src/mediawiki/mediawiki.user.js
@@ -3,19 +3,12 @@
  * @singleton
  */
 ( function ( mw, $ ) {
-       var user, i,
+       var user,
                deferreds = {},
-               byteToHex = [],
                // Extend the skeleton mw.user from mediawiki.js
                // This is kind of ugly but we're stuck with this for b/c 
reasons
                options = mw.user.options || new mw.Map(),
                tokens = mw.user.tokens || new mw.Map();
-
-       // Maps for number -> hex string conversion (with padding)
-       // idea from: https://github.com/broofa/node-uuid/blob/master/uuid.js
-       for ( i = 0; i < 256; i++ ) {
-               byteToHex[i] = (i + 0x100).toString(16).substr(1);
-       }
 
        /**
         * Get the current user's groups or rights
@@ -75,28 +68,23 @@
                 * @return {string} 64 bit integer in hex format, padded
                 */
                generateRandomSessionId: function () {
-                       /*jshint bitwise:false */
-                       var rnds, i, r, cryptoObj, hexRnds = new Array( 8 );
+                       var rnds, i, cryptoObj, hexRnds = new Array( 2 );
                        cryptoObj = window.crypto || window.msCrypto; // for IE 
11
 
                        if ( cryptoObj ) {
-                               // We fill an array with 8 random values, each 
of which is 8 bits.
+                               // We fill an array with 2 random values, each 
of which is 32 bits.
                                // note that rnds is an array-like object not a 
true array
-                               rnds = new Uint8Array( 8 );
+                               rnds = new Uint32Array( 2 );
                                cryptoObj.getRandomValues( rnds );
                        } else {
-                               rnds = new Array( 8 );
-                               // From: 
https://github.com/broofa/node-uuid/blob/master/uuid.js
-                               for ( i = 0, r; i < 8; i++ ) {
-                                       if ( ( i & 0x03 ) === 0 ) {
-                                               r = Math.random() * 0x100000000;
-                                       }
-                                       rnds[i] = r >>> ( ( i & 0x03 ) << 3 ) & 
0xff;
+                               rnds = new Array( 2 );
+                               for ( i = 0, r; i < 2; i++ ) {
+                                       rnds[i] = Math.floor( Math.random() * 
0x100000000 );
                                }
                        }
-                       // convert to hex using byteToHex that already contains 
padding
+                       // convert to hex
                        for ( i = 0; i < rnds.length; i++ ) {
-                               hexRnds[i] = byteToHex[rnds[i]];
+                               hexRnds[i] = ( rnds[i] + 0x100000000 
).toString( 16 ).substr( 1 );
                        }
 
                        // concatenation of two random integers with entrophy n 
and m

-- 
To view, visit https://gerrit.wikimedia.org/r/190640
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e6ac9e0813c4ba540e0a53b8e6667162cb60bf7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Gerrit Patch Uploader <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to