aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/realisation.hh
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-03-08 11:56:33 +0100
committerregnat <rg@regnat.ovh>2021-03-15 16:34:49 +0100
commit826877cabf9374e0acd5408c6975ee332b1cccc8 (patch)
treea6b376a833a3fbb0594bff8ec00c3735c6990978 /src/libstore/realisation.hh
parent306c154632c03fe27e1513f4fb8797dd81536c05 (diff)
Add some logic for signing realisations
Not exposed anywhere, but built realisations are now signed (and this should be forwarded when copy-ing them around)
Diffstat (limited to 'src/libstore/realisation.hh')
-rw-r--r--src/libstore/realisation.hh8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libstore/realisation.hh b/src/libstore/realisation.hh
index fc92d3c17..f5049c9e9 100644
--- a/src/libstore/realisation.hh
+++ b/src/libstore/realisation.hh
@@ -3,6 +3,7 @@
#include "path.hh"
#include <nlohmann/json_fwd.hpp>
#include "comparator.hh"
+#include "crypto.hh"
namespace nix {
@@ -25,9 +26,16 @@ struct Realisation {
DrvOutput id;
StorePath outPath;
+ StringSet signatures;
+
nlohmann::json toJSON() const;
static Realisation fromJSON(const nlohmann::json& json, const std::string& whence);
+ std::string fingerprint() const;
+ void sign(const SecretKey &);
+ bool checkSignature(const PublicKeys & publicKeys, const std::string & sig) const;
+ size_t checkSignatures(const PublicKeys & publicKeys) const;
+
StorePath getPath() const { return outPath; }
GENERATE_CMP(Realisation, me->id, me->outPath);