| /* |
| * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "video_engine/test/auto_test/helpers/random_encryption.h" |
| |
| #include <algorithm> |
| #include <cstdlib> |
| #include <cmath> |
| |
| #include "video_engine/vie_defines.h" |
| |
| static int Saturate(int value, int min, int max) { |
| return std::min(std::max(value, min), max); |
| } |
| |
| RandomEncryption::RandomEncryption(unsigned int rand_seed) { |
| srand(rand_seed); |
| } |
| |
| // Generates some completely random data with roughly the right length. |
| void RandomEncryption::GenerateRandomData(unsigned char* out_data, int bytes_in, |
| int* bytes_out) { |
| int out_length = MakeUpSimilarLength(bytes_in); |
| for (int i = 0; i < out_length; i++) { |
| // The modulo will skew the random distribution a bit, but I think it |
| // will be random enough. |
| out_data[i] = static_cast<unsigned char>(rand() % 256); |
| } |
| *bytes_out = out_length; |
| } |
| |
| // Makes up a length within +- 50 of the original length, without |
| // overstepping the contract for encrypt / decrypt. |
| int RandomEncryption::MakeUpSimilarLength(int original_length) { |
| int sign = rand() - RAND_MAX / 2; |
| int length = original_length + sign * rand() % 50; |
| |
| return Saturate(length, 0, static_cast<int>(webrtc::kViEMaxMtu)); |
| } |