WordPress.org

Make WordPress Core


Ignore:
Timestamp:
11/08/2017 11:47:04 AM (4 years ago)
Author:
dd32
Message:

External Libraries: Update Random_Compat from 1.2.1 to 2.0.11.

Notably this fixes PHP7 parse errors of the files and removes the OpenSSL functionality.
Full Changes: https://github.com/paragonie/random_compat/compare/v1.2.1...v2.0.11

Props jrdelarosa.
See #42439.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/random_compat/random_bytes_com_dotnet.php

    r36886 r42130  
    66 * The MIT License (MIT)
    77 *
    8  * Copyright (c) 2015 Paragon Initiative Enterprises
     8 * Copyright (c) 2015 - 2017 Paragon Initiative Enterprises
    99 *
    1010 * Permission is hereby granted, free of charge, to any person obtaining a copy
     
    2727 */
    2828
    29 /**
    30  * Windows with PHP < 5.3.0 will not have the function
    31  * openssl_random_pseudo_bytes() available, so let's use
    32  * CAPICOM to work around this deficiency.
    33  *
    34  * @param int $bytes
    35  *
    36  * @throws Exception
    37  *
    38  * @return string
    39  */
    40 function random_bytes($bytes)
    41 {
    42     try {
    43         $bytes = RandomCompat_intval($bytes);
    44     } catch (TypeError $ex) {
    45         throw new TypeError(
    46             'random_bytes(): $bytes must be an integer'
     29if (!is_callable('random_bytes')) {
     30    /**
     31     * Windows with PHP < 5.3.0 will not have the function
     32     * openssl_random_pseudo_bytes() available, so let's use
     33     * CAPICOM to work around this deficiency.
     34     *
     35     * @param int $bytes
     36     *
     37     * @throws Exception
     38     *
     39     * @return string
     40     */
     41    function random_bytes($bytes)
     42    {
     43        try {
     44            $bytes = RandomCompat_intval($bytes);
     45        } catch (TypeError $ex) {
     46            throw new TypeError(
     47                'random_bytes(): $bytes must be an integer'
     48            );
     49        }
     50
     51        if ($bytes < 1) {
     52            throw new Error(
     53                'Length must be greater than 0'
     54            );
     55        }
     56
     57        $buf = '';
     58        if (!class_exists('COM')) {
     59            throw new Error(
     60                'COM does not exist'
     61            );
     62        }
     63        $util = new COM('CAPICOM.Utilities.1');
     64        $execCount = 0;
     65
     66        /**
     67         * 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.
     69         */
     70        do {
     71            $buf .= base64_decode($util->GetRandom($bytes, 0));
     72            if (RandomCompat_strlen($buf) >= $bytes) {
     73                /**
     74                 * Return our random entropy buffer here:
     75                 */
     76                return RandomCompat_substr($buf, 0, $bytes);
     77            }
     78            ++$execCount;
     79        } while ($execCount < $bytes);
     80
     81        /**
     82         * If we reach here, PHP has failed us.
     83         */
     84        throw new Exception(
     85            'Could not gather sufficient random data'
    4786        );
    4887    }
    49 
    50     if ($bytes < 1) {
    51         throw new Error(
    52             'Length must be greater than 0'
    53         );
    54     }
    55 
    56     $buf = '';
    57     $util = new COM('CAPICOM.Utilities.1');
    58     $execCount = 0;
    59 
    60     /**
    61      * Let's not let it loop forever. If we run N times and fail to
    62      * get N bytes of random data, then CAPICOM has failed us.
    63      */
    64     do {
    65         $buf .= base64_decode($util->GetRandom($bytes, 0));
    66         if (RandomCompat_strlen($buf) >= $bytes) {
    67             /**
    68              * Return our random entropy buffer here:
    69              */
    70             return RandomCompat_substr($buf, 0, $bytes);
    71         }
    72         ++$execCount;
    73     } while ($execCount < $bytes);
    74 
    75     /**
    76      * If we reach here, PHP has failed us.
    77      */
    78     throw new Exception(
    79         'Could not gather sufficient random data'
    80     );
    8188}
Note: See TracChangeset for help on using the changeset viewer.