Mercurial > hg > isophonics-drupal-site
comparison vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php @ 16:c2387f117808
Routine composer update
author | Chris Cannam |
---|---|
date | Tue, 10 Jul 2018 15:07:59 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
15:e200cb7efeb3 | 16:c2387f117808 |
---|---|
3 * Random_* Compatibility Library | 3 * Random_* Compatibility Library |
4 * for using the new PHP 7 random_* API in PHP 5 projects | 4 * for using the new PHP 7 random_* API in PHP 5 projects |
5 * | 5 * |
6 * The MIT License (MIT) | 6 * The MIT License (MIT) |
7 * | 7 * |
8 * Copyright (c) 2015 - 2017 Paragon Initiative Enterprises | 8 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises |
9 * | 9 * |
10 * Permission is hereby granted, free of charge, to any person obtaining a copy | 10 * Permission is hereby granted, free of charge, to any person obtaining a copy |
11 * of this software and associated documentation files (the "Software"), to deal | 11 * of this software and associated documentation files (the "Software"), to deal |
12 * in the Software without restriction, including without limitation the rights | 12 * in the Software without restriction, including without limitation the rights |
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
39 * @return string | 39 * @return string |
40 */ | 40 */ |
41 function random_bytes($bytes) | 41 function random_bytes($bytes) |
42 { | 42 { |
43 try { | 43 try { |
44 /** @var int $bytes */ | |
44 $bytes = RandomCompat_intval($bytes); | 45 $bytes = RandomCompat_intval($bytes); |
45 } catch (TypeError $ex) { | 46 } catch (TypeError $ex) { |
46 throw new TypeError( | 47 throw new TypeError( |
47 'random_bytes(): $bytes must be an integer' | 48 'random_bytes(): $bytes must be an integer' |
48 ); | 49 ); |
52 throw new Error( | 53 throw new Error( |
53 'Length must be greater than 0' | 54 'Length must be greater than 0' |
54 ); | 55 ); |
55 } | 56 } |
56 | 57 |
58 /** @var string $buf */ | |
57 $buf = ''; | 59 $buf = ''; |
58 if (!class_exists('COM')) { | 60 if (!class_exists('COM')) { |
59 throw new Error( | 61 throw new Error( |
60 'COM does not exist' | 62 'COM does not exist' |
61 ); | 63 ); |
62 } | 64 } |
65 /** @var COM $util */ | |
63 $util = new COM('CAPICOM.Utilities.1'); | 66 $util = new COM('CAPICOM.Utilities.1'); |
64 $execCount = 0; | 67 $execCount = 0; |
65 | 68 |
66 /** | 69 /** |
67 * Let's not let it loop forever. If we run N times and fail to | 70 * Let's not let it loop forever. If we run N times and fail to |
68 * get N bytes of random data, then CAPICOM has failed us. | 71 * get N bytes of random data, then CAPICOM has failed us. |
69 */ | 72 */ |
70 do { | 73 do { |
71 $buf .= base64_decode($util->GetRandom($bytes, 0)); | 74 $buf .= base64_decode((string) $util->GetRandom($bytes, 0)); |
72 if (RandomCompat_strlen($buf) >= $bytes) { | 75 if (RandomCompat_strlen($buf) >= $bytes) { |
73 /** | 76 /** |
74 * Return our random entropy buffer here: | 77 * Return our random entropy buffer here: |
75 */ | 78 */ |
76 return RandomCompat_substr($buf, 0, $bytes); | 79 return (string) RandomCompat_substr($buf, 0, $bytes); |
77 } | 80 } |
78 ++$execCount; | 81 ++$execCount; |
79 } while ($execCount < $bytes); | 82 } while ($execCount < $bytes); |
80 | 83 |
81 /** | 84 /** |