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_;
179 if (res.status().IsOutOfRange()) {
184 sha256.Update(res.value());
187 return sha256.Final(out_digest);
static constexpr Status InvalidArgument()
Argument was malformed; e.g. invalid characters when parsing integer.
Definition: status.h:131
static constexpr Status FailedPrecondition()
System isn’t in the required state; e.g. deleting a non-empty directory.
Definition: status.h:162
Result< ByteSpan > Read(ByteSpan dest)
Definition: stream.h:122
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:297
Cryptography library.
Definition: ecdsa.h:20