diff options
Diffstat (limited to 'netwerk/base/nsIRandomGenerator.idl')
-rw-r--r-- | netwerk/base/nsIRandomGenerator.idl | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/netwerk/base/nsIRandomGenerator.idl b/netwerk/base/nsIRandomGenerator.idl new file mode 100644 index 0000000000..576483b549 --- /dev/null +++ b/netwerk/base/nsIRandomGenerator.idl @@ -0,0 +1,46 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +%{C++ +#include <type_traits> +%} + +/** + * Interface used to generate random data. + * + * @threadsafe + */ +[scriptable, uuid(2362d97a-747a-4576-8863-697667309209)] +interface nsIRandomGenerator : nsISupports { + /** + * Generates the specified amount of random bytes. + * + * @param aLength + * The length of the data to generate. + * @param aBuffer + * A buffer that contains random bytes of size aLength. + */ + void generateRandomBytes(in unsigned long aLength, + [retval, array, size_is(aLength)] out octet aBuffer); + + /** + * Fills aBuffer with random bytes. + * + * @param aBuffer + * A buffer to fill with random bytes. + * @param aLength + * Length of aBuffer. + */ + void generateRandomBytesInto([array, size_is(aLength)] in octet aBuffer, + in unsigned long aLength); + +%{C++ + template<typename T> + std::enable_if_t<!std::is_pointer_v<T>, nsresult> GenerateRandomBytesInto(T& aResult) { + return GenerateRandomBytesInto(reinterpret_cast<uint8_t*>(&aResult), sizeof(T)); + } +%} +}; |