19#include "pw_bytes/span.h"
20#include "pw_crypto/sha256_backend.h"
21#include "pw_log/log.h"
22#include "pw_status/status.h"
23#include "pw_status/try.h"
24#include "pw_stream/stream.h"
52Status DoInit(NativeSha256Context& ctx);
71 if (!backend::DoInit(native_ctx_).ok()) {
72 PW_LOG_DEBUG(
"backend::DoInit() failed");
84 PW_LOG_DEBUG(
"The backend is not ready/initialized");
88 if (!backend::DoUpdate(native_ctx_, data).ok()) {
89 PW_LOG_DEBUG(
"backend::DoUpdate() failed");
107 PW_LOG_DEBUG(
"Digest output buffer is too small");
113 PW_LOG_DEBUG(
"The backend is not ready/initialized");
117 auto status = backend::DoFinal(native_ctx_, out_digest);
119 PW_LOG_DEBUG(
"backend::DoFinal() failed");
132 backend::NativeSha256Context native_ctx_;
184 sha256.Update(res.
value());
187 return sha256.Final(out_digest);
constexpr const T & value() const &PW_ATTRIBUTE_LIFETIME_BOUND
Definition: result.h:808
constexpr Status status() const
Definition: result.h:803
constexpr bool IsOutOfRange() const
Definition: status.h:389
static constexpr Status InvalidArgument()
Definition: status.h:164
static constexpr Status FailedPrecondition()
Definition: status.h:243
Result< ByteSpan > Read(ByteSpan dest)
Definition: stream.h:113
Sha256State
A state machine of a hashing session.
Definition: sha256.h:37
Status Final(ByteSpan out_digest)
Definition: sha256.h:105
Sha256 & Update(ConstByteSpan data)
Definition: sha256.h:82
constexpr uint32_t kDigestSizeBytes
The size of a SHA256 digest in bytes.
Definition: sha256.h:34
Status Hash(ConstByteSpan message, ByteSpan out_digest)
Definition: sha256.h:167
@ kReady
Initialized and accepting input (via Update()).
@ kError
In an unrecoverable error state.
#define PW_TRY(expr)
Returns early if expr is a non-OK Status or Result.
Definition: try.h:27
constexpr Status OkStatus()
Definition: status.h:450
Cryptography library.
Definition: ecdsa.h:20