From b774c568e0a687dec3be1b390eedd35f46a34428 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Sun, 21 Feb 2016 01:52:11 -0800 Subject: [PATCH] Annotate cryptoUtils with Flow. --- src/cryptoUtils.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/cryptoUtils.js b/src/cryptoUtils.js index 2f83defd..47bc2e45 100644 --- a/src/cryptoUtils.js +++ b/src/cryptoUtils.js @@ -1,7 +1,9 @@ +/* @flow */ + import { randomBytes } from 'crypto'; // Returns a new random hex string of the given even size. -export function randomHexString(size) { +export function randomHexString(size: number): string { if (size === 0) { throw new Error('Zero-length randomHexString is useless.'); } @@ -17,28 +19,28 @@ export function randomHexString(size) { // because chars length of 62 doesn't divide the number of all bytes // (256) evenly. Such bias is acceptable for most cases when the output // length is long enough and doesn't need to be uniform. -export function randomString(size) { +export function randomString(size: number): string { if (size === 0) { throw new Error('Zero-length randomString is useless.'); } - var chars = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' + + let chars = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789'); - var objectId = ''; - var bytes = randomBytes(size); - for (var i = 0; i < bytes.length; ++i) { + let objectId = ''; + let bytes = randomBytes(size); + for (let i = 0; i < bytes.length; ++i) { objectId += chars[bytes.readUInt8(i) % chars.length]; } return objectId; } // Returns a new random alphanumeric string suitable for object ID. -export function newObjectId() { +export function newObjectId(): string { //TODO: increase length to better protect against collisions. return randomString(10); } // Returns a new random hex string suitable for secure tokens. -export function newToken() { +export function newToken(): string { return randomHexString(32); }