1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CRYPTO_SECURE_HASH_H_ 6#define CRYPTO_SECURE_HASH_H_ 7#pragma once 8 9#include "base/basictypes.h" 10 11namespace crypto { 12 13// A wrapper to calculate secure hashes incrementally, allowing to 14// be used when the full input is not known in advance. 15class SecureHash { 16 public: 17 enum Algorithm { 18 SHA256, 19 }; 20 virtual ~SecureHash() {} 21 22 static SecureHash* Create(Algorithm type); 23 24 virtual void Update(const void* input, size_t len) = 0; 25 virtual void Finish(void* output, size_t len) = 0; 26 27 protected: 28 SecureHash() {} 29 30 private: 31 DISALLOW_COPY_AND_ASSIGN(SecureHash); 32}; 33 34} // namespace crypto 35 36#endif // CRYPTO_SECURE_HASH_H_ 37