From a16b33031c7bcf2eabf1e0c3571000234b7740df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 24 Jan 2021 22:46:48 +0100 Subject: Attach service --- src/storage.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/storage.cpp') diff --git a/src/storage.cpp b/src/storage.cpp index 51ce9bc..6e2f118 100644 --- a/src/storage.cpp +++ b/src/storage.cpp @@ -613,13 +613,7 @@ Ref Storage::zref() const Digest PartialStorage::Priv::storeBytes(const vector & content) const { - array arr; - int ret = blake2b(arr.data(), content.data(), nullptr, - Digest::size, content.size(), 0); - if (ret != 0) - throw runtime_error("failed to compute digest"); - - Digest digest(arr); + Digest digest = Digest::of(content); backend->storeBytes(digest, content); return digest; } @@ -631,10 +625,7 @@ optional> PartialStorage::Priv::loadBytes(const Digest & digest) return nullopt; auto content = ocontent.value(); - array arr; - int ret = blake2b(arr.data(), content.data(), nullptr, - Digest::size, content.size(), 0); - if (ret != 0 || digest != Digest(arr)) + if (digest != Digest::of(content)) throw runtime_error("digest verification failed"); return content; @@ -820,6 +811,17 @@ bool Digest::isZero() const return true; } +Digest Digest::of(const vector & content) +{ + array arr; + int ret = blake2b(arr.data(), content.data(), nullptr, + size, content.size(), 0); + if (ret != 0) + throw runtime_error("failed to compute digest"); + + return Digest(arr); +} + PartialRef PartialRef::create(PartialStorage st, const Digest & digest) { -- cgit v1.2.3