147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/* 247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Copyright 2012 The WebRTC Project Authors. All rights reserved. 347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * 447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Use of this source code is governed by a BSD-style license 547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * in the file PATENTS. All contributing project authors may 847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */ 1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#ifndef WEBRTC_BASE_SHA1DIGEST_H_ 1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#define WEBRTC_BASE_SHA1DIGEST_H_ 1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/messagedigest.h" 1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/sha1.h" 1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace rtc { 1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// A simple wrapper for our SHA-1 implementation. 2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgclass Sha1Digest : public MessageDigest { 2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org public: 2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org enum { kSize = SHA1_DIGEST_SIZE }; 2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org Sha1Digest() { 2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SHA1Init(&ctx_); 2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org virtual size_t Size() const { 2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org return kSize; 2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org virtual void Update(const void* buf, size_t len) { 3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SHA1Update(&ctx_, static_cast<const uint8*>(buf), len); 3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org virtual size_t Finish(void* buf, size_t len) { 3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org if (len < kSize) { 3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org return 0; 3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SHA1Final(&ctx_, static_cast<uint8*>(buf)); 3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SHA1Init(&ctx_); // Reset for next use. 3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org return kSize; 3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org private: 4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SHA1_CTX ctx_; 4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}; 4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} // namespace rtc 4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#endif // WEBRTC_BASE_SHA1DIGEST_H_ 48