You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
// Copyright 2020 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "util/crypto/random_bytes.h"
|
|
|
|
#include <algorithm>
|
|
#include <utility>
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace openscreen {
|
|
namespace {
|
|
|
|
struct NonZero {
|
|
NonZero() = default;
|
|
bool operator()(int n) const { return n > 0; }
|
|
};
|
|
|
|
} // namespace
|
|
|
|
TEST(RandomBytesTest, CanGenerateRandomBytes) {
|
|
std::array<uint8_t, 4> bytes;
|
|
GenerateRandomBytes(bytes.begin(), bytes.size());
|
|
|
|
NonZero pred;
|
|
ASSERT_TRUE(std::any_of(bytes.begin(), bytes.end(), pred));
|
|
}
|
|
|
|
TEST(RandomBytesTest, CanGenerate16RandomBytes) {
|
|
std::array<uint8_t, 16> bytes = GenerateRandomBytes16();
|
|
|
|
NonZero pred;
|
|
ASSERT_TRUE(std::any_of(bytes.begin(), bytes.end(), pred));
|
|
}
|
|
|
|
TEST(RandomBytesTest, KeysAreNotIdentical) {
|
|
constexpr int kNumKeys = 100;
|
|
constexpr int kKeyLength = 100;
|
|
std::array<std::array<uint8_t, kKeyLength>, kNumKeys> keys;
|
|
for (int i = 0; i < kNumKeys; ++i) {
|
|
GenerateRandomBytes(keys[i].begin(), kKeyLength);
|
|
}
|
|
|
|
std::sort(std::begin(keys), std::end(keys));
|
|
ASSERT_TRUE(std::adjacent_find(std::begin(keys), std::end(keys)) ==
|
|
std::end(keys));
|
|
}
|
|
|
|
} // namespace openscreen
|