1<?php
2/**
3 * Copyright 2017 Facebook, Inc.
4 *
5 * You are hereby granted a non-exclusive, worldwide, royalty-free license to
6 * use, copy, modify, and distribute this software in source code or binary
7 * form for use in connection with the web services and APIs provided by
8 * Facebook.
9 *
10 * As with any software that integrates with the Facebook platform, your use
11 * of this software is subject to the Facebook Developer Principles and
12 * Policies [http://developers.facebook.com/policy/]. This copyright notice
13 * shall be included in all copies or substantial portions of the software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 *
23 */
24namespace Facebook\PseudoRandomString;
25
26trait PseudoRandomStringGeneratorTrait
27{
28    /**
29     * Validates the length argument of a random string.
30     *
31     * @param int $length The length to validate.
32     *
33     * @throws \InvalidArgumentException
34     */
35    public function validateLength($length)
36    {
37        if (!is_int($length)) {
38            throw new \InvalidArgumentException('getPseudoRandomString() expects an integer for the string length');
39        }
40
41        if ($length < 1) {
42            throw new \InvalidArgumentException('getPseudoRandomString() expects a length greater than 1');
43        }
44    }
45
46    /**
47     * Converts binary data to hexadecimal of arbitrary length.
48     *
49     * @param string $binaryData The binary data to convert to hex.
50     * @param int    $length     The length of the string to return.
51     *
52     * @return string
53     */
54    public function binToHex($binaryData, $length)
55    {
56        return \substr(\bin2hex($binaryData), 0, $length);
57    }
58}
59