| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/rand_util.h" |
| |
| #include <nacl/nacl_random.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "base/check_op.h" |
| #include "base/containers/span.h" |
| |
| namespace base { |
| |
| void RandBytes(span<uint8_t> output) { |
| while (!output.empty()) { |
| size_t nread; |
| const int error = nacl_secure_random(output.data(), output.size(), &nread); |
| CHECK_EQ(error, 0); |
| CHECK_LE(nread, output.size()); |
| output = output.subspan(nread); |
| } |
| } |
| |
| void RandBytes(void* output, size_t output_length) { |
| RandBytes(make_span(static_cast<uint8_t*>(output), output_length)); |
| } |
| |
| } // namespace base |