/*
 * SHA-1 in C
 * By Steve Reid <sreid@sea-to-sky.net>
 * 100% Public Domain
 *
*/

// Ported to C++, Google style, under namespace rtc.

#ifndef WEBRTC_RTC_BASE_SHA1_H_
#define WEBRTC_RTC_BASE_SHA1_H_

#include <stdint.h>
#include <stdlib.h>

namespace rtc {

struct SHA1_CTX {
  uint32_t state[5];
  // TODO: Change bit count to uint64_t.
  uint32_t count[2];  // Bit count of input.
  uint8_t buffer[64];
};

#define SHA1_DIGEST_SIZE 20

void SHA1Init(SHA1_CTX* context);
void SHA1Update(SHA1_CTX* context, const uint8_t* data, size_t len);
void SHA1Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]);

}  // namespace rtc

#endif  // WEBRTC_RTC_BASE_SHA1_H_
