blob: c75dba59854184c0e9ed7cfd0d38a631610c3f90 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_HELPERS_H_
12#define WEBRTC_BASE_HELPERS_H_
13
14#include <string>
15#include "webrtc/base/basictypes.h"
16
17namespace rtc {
18
19// For testing, we can return predictable data.
20void SetRandomTestMode(bool test);
21
22// Initializes the RNG, and seeds it with the specified entropy.
23bool InitRandom(int seed);
24bool InitRandom(const char* seed, size_t len);
25
26// Generates a (cryptographically) random string of the given length.
27// We generate base64 values so that they will be printable.
28// WARNING: could silently fail. Use the version below instead.
29std::string CreateRandomString(size_t length);
30
31// Generates a (cryptographically) random string of the given length.
32// We generate base64 values so that they will be printable.
33// Return false if the random number generator failed.
34bool CreateRandomString(size_t length, std::string* str);
35
36// Generates a (cryptographically) random string of the given length,
37// with characters from the given table. Return false if the random
38// number generator failed.
39bool CreateRandomString(size_t length, const std::string& table,
40 std::string* str);
41
jbauchcb560652016-08-04 05:20:32 -070042// Generates (cryptographically) random data of the given length.
43// Return false if the random number generator failed.
44bool CreateRandomData(size_t length, std::string* data);
45
deadbeeffac06552015-11-25 11:26:01 -080046// Generates a (cryptographically) random UUID version 4 string.
47std::string CreateRandomUuid();
48
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000049// Generates a random id.
Peter Boström0c4e06b2015-10-07 12:23:21 +020050uint32_t CreateRandomId();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000051
52// Generates a 64 bit random id.
Peter Boström0c4e06b2015-10-07 12:23:21 +020053uint64_t CreateRandomId64();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000054
55// Generates a random id > 0.
Peter Boström0c4e06b2015-10-07 12:23:21 +020056uint32_t CreateRandomNonZeroId();
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000057
58// Generates a random double between 0.0 (inclusive) and 1.0 (exclusive).
59double CreateRandomDouble();
60
61} // namespace rtc
62
63#endif // WEBRTC_BASE_HELPERS_H_