libhasha 2.2.2
Loading...
Searching...
No Matches
hasha Namespace Reference

Namespaces

namespace  encodings

Classes

struct  basic_encoding
class  Hasher
 C++ wrapper for the EVP hasher. More...

Typedefs

using string = std::string
using byte = uint8_t
using raw_digest = byte *
using raw_cdigest = const byte *
using digest = std::vector<byte>

Functions

template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void put (std::ostream &os, raw_cdigest digest, size_t size, const char *end=NULL, std::shared_ptr< Encoding > encoding=std::make_shared< Encoding >())
template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void put (std::ostream &os, digest &digest, const char *end=NULL, const std::shared_ptr< Encoding > &encoding=std::make_shared< Encoding >())
template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void put (FILE *stream, raw_digest digest, size_t size, const char *end=NULL, const std::shared_ptr< Encoding > &encoding=std::make_shared< Encoding >())
template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void put (FILE *stream, digest &digest, const char *end=NULL, const std::shared_ptr< Encoding > &encoding=std::make_shared< Encoding >())
HA_HDR_PUBFUN void put (FILE *file, raw_cdigest digest, size_t size, const char *end=NULL)
HA_HDR_PUBFUN void put (digest &digest, const char *end=NULL)
HA_HDR_PUBFUN void put (raw_cdigest digest, size_t size, const char *end=NULL)
HA_HDR_PUBFUN bool compare (const digest &lhs, const digest &rhs)
HA_HDR_PUBFUN bool compare (const raw_cdigest lhs, size_t lsize, const raw_cdigest rhs, size_t rsize)
HA_HDR_PUBFUN bool compare (const digest &lhs, const std::string &rhs)

Typedef Documentation

◆ byte

using hasha::byte = uint8_t

Definition at line 20 of file evpp.h.

◆ digest

using hasha::digest = std::vector<byte>

Definition at line 25 of file evpp.h.

◆ raw_cdigest

using hasha::raw_cdigest = const byte *

Definition at line 23 of file evpp.h.

◆ raw_digest

Definition at line 22 of file evpp.h.

◆ string

using hasha::string = std::string

Definition at line 19 of file evpp.h.

Function Documentation

◆ compare() [1/3]

HA_HDR_PUBFUN bool hasha::compare ( const digest & lhs,
const digest & rhs )

Definition at line 147 of file evpp.h.

148{
149 if (lhs.size() != rhs.size()) return false;
150 size_t len = std::min /* using min, not max — safe for UB */ (
151 lhs.size(), rhs.size());
152 return ha_cmphash(lhs.data(), rhs.data(), len) == 0;
153}
HA_PUBFUN int ha_cmphash(ha_cdigest_t lhs, ha_cdigest_t rhs, size_t digestlen)
Compares two hash digests byte by byte.

◆ compare() [2/3]

HA_HDR_PUBFUN bool hasha::compare ( const digest & lhs,
const std::string & rhs )

Definition at line 166 of file evpp.h.

167{
168 size_t len = std::min /* using min, not max — safe for UB */ (
169 lhs.size(), rhs.size());
170 return ha_cmphashstr(lhs.data(), rhs.data(), len) == 0;
171}
HA_PUBFUN int ha_cmphashstr(ha_cdigest_t lhs, const char *rhs, size_t digestlen)
Compares a hash digest with a hexadecimal string representation.

◆ compare() [3/3]

HA_HDR_PUBFUN bool hasha::compare ( const raw_cdigest lhs,
size_t lsize,
const raw_cdigest rhs,
size_t rsize )

Definition at line 156 of file evpp.h.

158{
159 if (lsize != rsize) return false;
160 size_t len =
161 std::min /* using min, not max — safe for UB */ (lsize, rsize);
162 return ha_cmphash(lhs, rhs, len) == 0;
163}

◆ put() [1/7]

HA_HDR_PUBFUN void hasha::put ( digest & digest,
const char * end = NULL )

Definition at line 135 of file evpp.h.

136{
137 put(stdout, digest, end);
138}
std::vector< byte > digest
Definition evpp.h:25
HA_HDR_PUBFUN void put(std::ostream &os, raw_cdigest digest, size_t size, const char *end=NULL, std::shared_ptr< Encoding > encoding=std::make_shared< Encoding >())
Definition evpp.h:86

◆ put() [2/7]

HA_HDR_PUBFUN void hasha::put ( FILE * file,
raw_cdigest digest,
size_t size,
const char * end = NULL )

Definition at line 128 of file evpp.h.

130{
131 ha_fputhash(file, digest, size, end);
132}
HA_PUBFUN size_t ha_fputhash(FILE *stream, ha_cdigest_t digest, size_t digestlen, const char *end)
Writes the hash digest to the specified file stream.

◆ put() [3/7]

template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void hasha::put ( FILE * stream,
digest & digest,
const char * end = NULL,
const std::shared_ptr< Encoding > & encoding = std::make_shared<Encoding>() )

Definition at line 119 of file evpp.h.

123{
124 put<Encoding>(stream, digest.data(), digest.size(), end, encoding);
125}

◆ put() [4/7]

template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void hasha::put ( FILE * stream,
raw_digest digest,
size_t size,
const char * end = NULL,
const std::shared_ptr< Encoding > & encoding = std::make_shared<Encoding>() )

Definition at line 106 of file evpp.h.

110{
111 if (!stream) return;
112 string s = encoding->encode(digest, size);
113 fprintf(stream, "%s", s.c_str());
114 if (end) fprintf(stream, "%s", end);
115 return;
116}

◆ put() [5/7]

HA_HDR_PUBFUN void hasha::put ( raw_cdigest digest,
size_t size,
const char * end = NULL )

Definition at line 141 of file evpp.h.

142{
143 put(stdout, digest, size, end);
144}

◆ put() [6/7]

template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void hasha::put ( std::ostream & os,
digest & digest,
const char * end = NULL,
const std::shared_ptr< Encoding > & encoding = std::make_shared<Encoding>() )

Definition at line 97 of file evpp.h.

101{
102 put<Encoding>(os, digest.data(), digest.size(), end, encoding);
103}

◆ put() [7/7]

template<typename Encoding = encodings::hex_encoding>
HA_HDR_PUBFUN void hasha::put ( std::ostream & os,
raw_cdigest digest,
size_t size,
const char * end = NULL,
std::shared_ptr< Encoding > encoding = std::make_shared<Encoding>() )

Definition at line 86 of file evpp.h.

90{
91 string s = encoding->encode(digest, size);
92 os << s;
93 if (end) os << string(end);
94}
std::string string
Definition evpp.h:19