tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsIRandomGenerator.idl (1318B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "nsISupports.idl"
      6 
      7 %{C++
      8 #include <type_traits>
      9 %}
     10 
     11 /**
     12 * Interface used to generate random data.
     13 *
     14 * @threadsafe
     15 */
     16 [scriptable, uuid(2362d97a-747a-4576-8863-697667309209)]
     17 interface nsIRandomGenerator : nsISupports {
     18  /**
     19   * Generates the specified amount of random bytes.
     20   *
     21   * @param aLength
     22   *        The length of the data to generate.
     23   * @param aBuffer
     24   *        A buffer that contains random bytes of size aLength.
     25   */
     26  void generateRandomBytes(in unsigned long aLength,
     27                           [retval, array, size_is(aLength)] out octet aBuffer);
     28 
     29  /**
     30   * Fills aBuffer with random bytes.
     31   *
     32   * @param aBuffer
     33   *        A buffer to fill with random bytes.
     34   * @param aLength
     35   *        Length of aBuffer.
     36   */
     37  void generateRandomBytesInto([array, size_is(aLength)] in octet aBuffer,
     38                               in unsigned long aLength);
     39 
     40 %{C++
     41  template<typename T>
     42  std::enable_if_t<!std::is_pointer_v<T>, nsresult> GenerateRandomBytesInto(T& aResult) {
     43    return GenerateRandomBytesInto(reinterpret_cast<uint8_t*>(&aResult), sizeof(T));
     44  }
     45 %}
     46 };