1*3f982cf4SFabien Sanglard // Copyright 2020 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #include "util/crypto/random_bytes.h" 6*3f982cf4SFabien Sanglard 7*3f982cf4SFabien Sanglard #include "openssl/rand.h" 8*3f982cf4SFabien Sanglard #include "util/osp_logging.h" 9*3f982cf4SFabien Sanglard 10*3f982cf4SFabien Sanglard namespace openscreen { 11*3f982cf4SFabien Sanglard GenerateRandomBytes16()12*3f982cf4SFabien Sanglardstd::array<uint8_t, 16> GenerateRandomBytes16() { 13*3f982cf4SFabien Sanglard std::array<uint8_t, 16> result; 14*3f982cf4SFabien Sanglard GenerateRandomBytes(result.begin(), result.size()); 15*3f982cf4SFabien Sanglard return result; 16*3f982cf4SFabien Sanglard } 17*3f982cf4SFabien Sanglard GenerateRandomBytes(uint8_t * out,int len)18*3f982cf4SFabien Sanglardvoid GenerateRandomBytes(uint8_t* out, int len) { 19*3f982cf4SFabien Sanglard // Working cryptography is mandatory for our library to run. 20*3f982cf4SFabien Sanglard OSP_CHECK(RAND_bytes(out, len) == 1); 21*3f982cf4SFabien Sanglard } 22*3f982cf4SFabien Sanglard 23*3f982cf4SFabien Sanglard } // namespace openscreen 24