Use generic MessageDigest class instead of MD5 / SHA-1 specific classes.

This allows removing the specific classes in a later CL.

Bug: webrtc:8677
Change-Id: I3b9c1f3191c38e6d31a3de990e2d882505e79adc
Reviewed-on: https://webrtc-review.googlesource.com/35040
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Joachim Bauch <jbauch@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21412}
This commit is contained in:
Joachim Bauch 2017-12-19 22:27:51 +01:00 committed by Commit Bot
parent 046f78cae6
commit 4e90919ad6
4 changed files with 27 additions and 17 deletions

View File

@ -1142,6 +1142,7 @@ rtc_source_set("neteq_test_tools") {
"../../api:libjingle_peerconnection_api",
"../../common_audio",
"../../rtc_base:checks",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_base_tests_utils",
"../../test:rtp_test_utils",

View File

@ -34,7 +34,7 @@
#include "modules/audio_coding/neteq/tools/rtp_file_source.h"
#include "modules/include/module_common_types.h"
#include "rtc_base/criticalsection.h"
#include "rtc_base/md5digest.h"
#include "rtc_base/messagedigest.h"
#include "rtc_base/numerics/safe_conversions.h"
#include "rtc_base/platform_thread.h"
#include "rtc_base/refcountedobject.h"
@ -1121,7 +1121,8 @@ class AcmSenderBitExactnessOldApi : public ::testing::Test,
packet_count_(0),
payload_type_(0),
last_sequence_number_(0),
last_timestamp_(0) {}
last_timestamp_(0),
payload_checksum_(rtc::MessageDigestFactory::Create(rtc::DIGEST_MD5)) {}
// Sets up the test::AcmSendTest object. Returns true on success, otherwise
// false.
@ -1196,9 +1197,10 @@ class AcmSenderBitExactnessOldApi : public ::testing::Test,
EXPECT_EQ(audio_checksum_ref, checksum_string);
// Extract and verify the payload checksum.
char checksum_result[rtc::Md5Digest::kSize];
payload_checksum_.Finish(checksum_result, rtc::Md5Digest::kSize);
checksum_string = rtc::hex_encode(checksum_result, rtc::Md5Digest::kSize);
rtc::Buffer checksum_result(payload_checksum_->Size());
payload_checksum_->Finish(checksum_result.data(), checksum_result.size());
checksum_string =
rtc::hex_encode(checksum_result.data<char>(), checksum_result.size());
EXPECT_EQ(payload_checksum_ref, checksum_string);
// Verify number of packets produced.
@ -1238,7 +1240,8 @@ class AcmSenderBitExactnessOldApi : public ::testing::Test,
last_sequence_number_ = packet->header().sequenceNumber;
last_timestamp_ = packet->header().timestamp;
// Update the checksum.
payload_checksum_.Update(packet->payload(), packet->payload_length_bytes());
payload_checksum_->Update(packet->payload(),
packet->payload_length_bytes());
}
void SetUpTest(const char* codec_name,
@ -1270,7 +1273,7 @@ class AcmSenderBitExactnessOldApi : public ::testing::Test,
uint8_t payload_type_;
uint16_t last_sequence_number_;
uint32_t last_timestamp_;
rtc::Md5Digest payload_checksum_;
std::unique_ptr<rtc::MessageDigest> payload_checksum_;
};
class AcmSenderBitExactnessNewApi : public AcmSenderBitExactnessOldApi {};

View File

@ -28,9 +28,9 @@
#include "modules/include/module_common_types.h"
#include "rtc_base/flags.h"
#include "rtc_base/ignore_wundef.h"
#include "rtc_base/messagedigest.h"
#include "rtc_base/numerics/safe_conversions.h"
#include "rtc_base/protobuf_utils.h"
#include "rtc_base/sha1digest.h"
#include "rtc_base/stringencode.h"
#include "test/field_trial.h"
#include "test/gtest.h"
@ -174,9 +174,9 @@ class ResultSink {
std::unique_ptr<rtc::MessageDigest> digest_;
};
ResultSink::ResultSink(const std::string &output_file)
ResultSink::ResultSink(const std::string& output_file)
: output_fp_(nullptr),
digest_(new rtc::Sha1Digest()) {
digest_(rtc::MessageDigestFactory::Create(rtc::DIGEST_SHA_1)) {
if (!output_file.empty()) {
output_fp_ = fopen(output_file.c_str(), "wb");
EXPECT_TRUE(output_fp_ != NULL);

View File

@ -11,11 +11,13 @@
#ifndef MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_CHECKSUM_H_
#define MODULES_AUDIO_CODING_NETEQ_TOOLS_AUDIO_CHECKSUM_H_
#include <memory>
#include <string>
#include "modules/audio_coding/neteq/tools/audio_sink.h"
#include "rtc_base/buffer.h"
#include "rtc_base/constructormagic.h"
#include "rtc_base/md5digest.h"
#include "rtc_base/messagedigest.h"
#include "rtc_base/stringencode.h"
#include "typedefs.h" // NOLINT(build/include)
@ -24,7 +26,10 @@ namespace test {
class AudioChecksum : public AudioSink {
public:
AudioChecksum() : finished_(false) {}
AudioChecksum()
: checksum_(rtc::MessageDigestFactory::Create(rtc::DIGEST_MD5)),
checksum_result_(checksum_->Size()),
finished_(false) {}
bool WriteArray(const int16_t* audio, size_t num_samples) override {
if (finished_)
@ -33,7 +38,7 @@ class AudioChecksum : public AudioSink {
#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
#error "Big-endian gives a different checksum"
#endif
checksum_.Update(audio, num_samples * sizeof(*audio));
checksum_->Update(audio, num_samples * sizeof(*audio));
return true;
}
@ -41,14 +46,15 @@ class AudioChecksum : public AudioSink {
std::string Finish() {
if (!finished_) {
finished_ = true;
checksum_.Finish(checksum_result_, rtc::Md5Digest::kSize);
checksum_->Finish(checksum_result_.data(), checksum_result_.size());
}
return rtc::hex_encode(checksum_result_, rtc::Md5Digest::kSize);
return rtc::hex_encode(checksum_result_.data<char>(),
checksum_result_.size());
}
private:
rtc::Md5Digest checksum_;
char checksum_result_[rtc::Md5Digest::kSize];
std::unique_ptr<rtc::MessageDigest> checksum_;
rtc::Buffer checksum_result_;
bool finished_;
RTC_DISALLOW_COPY_AND_ASSIGN(AudioChecksum);