1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "crypto/random.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <stddef.h> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker #include <string> 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker // Basic functionality tests. Does NOT test the security of the random data. 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // Ensures we don't have all trivial data, i.e. that the data is indeed random. 16*6777b538SAndroid Build Coastguard Worker // Currently, that means the bytes cannot be all the same (e.g. all zeros). IsTrivial(const std::string & bytes)17*6777b538SAndroid Build Coastguard Workerbool IsTrivial(const std::string& bytes) { 18*6777b538SAndroid Build Coastguard Worker for (size_t i = 0; i < bytes.size(); i++) { 19*6777b538SAndroid Build Coastguard Worker if (bytes[i] != bytes[0]) { 20*6777b538SAndroid Build Coastguard Worker return false; 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker } 23*6777b538SAndroid Build Coastguard Worker return true; 24*6777b538SAndroid Build Coastguard Worker } 25*6777b538SAndroid Build Coastguard Worker TEST(RandBytes,RandBytes)26*6777b538SAndroid Build Coastguard WorkerTEST(RandBytes, RandBytes) { 27*6777b538SAndroid Build Coastguard Worker std::string bytes(16, '\0'); 28*6777b538SAndroid Build Coastguard Worker crypto::RandBytes(bytes.data(), bytes.size()); 29*6777b538SAndroid Build Coastguard Worker EXPECT_FALSE(IsTrivial(bytes)); 30*6777b538SAndroid Build Coastguard Worker } 31*6777b538SAndroid Build Coastguard Worker TEST(RandBytes,RandBytesAsVector)32*6777b538SAndroid Build Coastguard WorkerTEST(RandBytes, RandBytesAsVector) { 33*6777b538SAndroid Build Coastguard Worker auto vector = crypto::RandBytesAsVector(16); 34*6777b538SAndroid Build Coastguard Worker EXPECT_FALSE(IsTrivial(std::string(vector.begin(), vector.end()))); 35*6777b538SAndroid Build Coastguard Worker } 36