mirror of
https://github.com/nasa/fprime.git
synced 2025-12-11 13:54:34 -06:00
118 lines
3.1 KiB
C++
118 lines
3.1 KiB
C++
// ======================================================================
|
|
// \title Hash.hpp
|
|
// \author dinkel
|
|
// \brief hpp file for Hash class
|
|
//
|
|
// \copyright
|
|
// Copyright 2009-2015, by the California Institute of Technology.
|
|
// ALL RIGHTS RESERVED. United States Government Sponsorship
|
|
// acknowledged.
|
|
//
|
|
// ======================================================================
|
|
|
|
#ifndef UTILS_HASH_HPP
|
|
#define UTILS_HASH_HPP
|
|
|
|
#include "Fw/Types/EightyCharString.hpp"
|
|
#include <Utils/Hash/HashBuffer.hpp>
|
|
|
|
namespace Utils {
|
|
|
|
//! \class Hash
|
|
//! \brief A generic interface for creating and comparing hash values
|
|
//!
|
|
class Hash {
|
|
|
|
public:
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Construction and destruction
|
|
// ----------------------------------------------------------------------
|
|
|
|
//! Construct a Hash object
|
|
//!
|
|
Hash();
|
|
|
|
//! Destroy a Hash object
|
|
//!
|
|
~Hash();
|
|
|
|
public:
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Public static methods
|
|
// ----------------------------------------------------------------------
|
|
|
|
//! Create a hash value all at once from raw data
|
|
//!
|
|
static void hash(
|
|
const void *data, //! Pointer to start of data
|
|
const NATIVE_INT_TYPE len, //! Length of the data
|
|
HashBuffer& buffer //! Resulting hash value
|
|
);
|
|
|
|
public:
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Public instance methods
|
|
// ----------------------------------------------------------------------
|
|
|
|
//! Initialize a Hash object for incremental hash computation
|
|
//!
|
|
void init(void);
|
|
|
|
//! Set hash value to specified value
|
|
//!
|
|
void setHashValue(
|
|
HashBuffer &value //! Hash value
|
|
);
|
|
|
|
//! Update an incremental computation with new data
|
|
//!
|
|
void update(
|
|
const void *const data, //! Pointer to start of data
|
|
const NATIVE_INT_TYPE len //! Length of the data
|
|
);
|
|
|
|
//! Finalize an incremental computation and return the result
|
|
//!
|
|
void final(
|
|
HashBuffer& buffer //! The result
|
|
);
|
|
|
|
//! Finalize an incremental computation and return the result
|
|
//!
|
|
void final(U32 &hashvalue);
|
|
|
|
//! Get the file extension for the supported hash type
|
|
//! E.g., could return "SHA256"
|
|
//!
|
|
static const char* getFileExtensionString(void);
|
|
|
|
//! Add the extension for the supported hash type
|
|
//!
|
|
static void addFileExtension(
|
|
const Fw::EightyCharString& baseName, //!< The base name
|
|
Fw::EightyCharString& extendedName //!< The extended name
|
|
);
|
|
|
|
//! Get the length of the file extension string
|
|
//!
|
|
static NATIVE_UINT_TYPE getFileExtensionLength(void);
|
|
|
|
private:
|
|
|
|
// ----------------------------------------------------------------------
|
|
// Private member variables
|
|
// ----------------------------------------------------------------------
|
|
|
|
//! The hash handle
|
|
//!
|
|
HASH_HANDLE_TYPE hash_handle;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|