UNPKG

tink-crypto

Version:

A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

25 lines 2.22 kB
/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** * @fileoverview Several simple wrappers of crypto.getRandomValues. */ import { InvalidArgumentsException } from '../exception/invalid_arguments_exception'; /** * Randomly generates `n` bytes. * * @param n number of bytes to generate * @return the random bytes * @static */ export function randBytes(n) { if (!Number.isInteger(n) || n < 0) { throw new InvalidArgumentsException('n must be a nonnegative integer'); } const result = new Uint8Array(n); crypto.getRandomValues(result); return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3VidGxlL3JhbmRvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBR0g7O0dBRUc7QUFDSCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVM7SUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQyxNQUFNLElBQUkseUJBQXlCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztLQUN4RTtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEdvb2dsZSBMTENcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU2V2ZXJhbCBzaW1wbGUgd3JhcHBlcnMgb2YgY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5cbiAqL1xuaW1wb3J0IHtJbnZhbGlkQXJndW1lbnRzRXhjZXB0aW9ufSBmcm9tICcuLi9leGNlcHRpb24vaW52YWxpZF9hcmd1bWVudHNfZXhjZXB0aW9uJztcblxuLyoqXG4gKiBSYW5kb21seSBnZW5lcmF0ZXMgYG5gIGJ5dGVzLlxuICpcbiAqIEBwYXJhbSBuIG51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICogQHJldHVybiB0aGUgcmFuZG9tIGJ5dGVzXG4gKiBAc3RhdGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYW5kQnl0ZXMobjogbnVtYmVyKTogVWludDhBcnJheSB7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihuKSB8fCBuIDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRzRXhjZXB0aW9uKCduIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyJyk7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==