Backed out 2 changesets (bug 1881078, bug 1879806) for causing dt failures @ devtools...
[gecko.git] / netwerk / base / nsIRandomGenerator.idl
blob576483b5498f53a3c3948aeb54ff40ee3ca21d13
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/. */
5 #include "nsISupports.idl"
7 %{C++
8 #include <type_traits>
9 %}
11 /**
12 * Interface used to generate random data.
14 * @threadsafe
16 [scriptable, uuid(2362d97a-747a-4576-8863-697667309209)]
17 interface nsIRandomGenerator : nsISupports {
18 /**
19 * Generates the specified amount of random bytes.
21 * @param aLength
22 * The length of the data to generate.
23 * @param aBuffer
24 * A buffer that contains random bytes of size aLength.
26 void generateRandomBytes(in unsigned long aLength,
27 [retval, array, size_is(aLength)] out octet aBuffer);
29 /**
30 * Fills aBuffer with random bytes.
32 * @param aBuffer
33 * A buffer to fill with random bytes.
34 * @param aLength
35 * Length of aBuffer.
37 void generateRandomBytesInto([array, size_is(aLength)] in octet aBuffer,
38 in unsigned long aLength);
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));