aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/store-api.hh
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-24 11:41:00 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-24 11:41:00 +0100
commit374198ad6d8747c135ce8d8a8284723b0968aeef (patch)
treefe8f2f60b12494f14272ac5b2adcd3650421e328 /src/libstore/store-api.hh
parent11525377e1b0fdba30713ff3826e7bc26ce488af (diff)
Move signature support from NarInfo to ValidPathInfo
Diffstat (limited to 'src/libstore/store-api.hh')
-rw-r--r--src/libstore/store-api.hh15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 62ee811eb..b7209d4a3 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -2,6 +2,7 @@
#include "hash.hh"
#include "serialise.hh"
+#include "crypto.hh"
#include <string>
#include <limits>
@@ -112,6 +113,20 @@ struct ValidPathInfo
&& narHash == i.narHash
&& references == i.references;
}
+
+ /* Return a fingerprint of the store path to be used in binary
+ cache signatures. It contains the store path, the base-32
+ SHA-256 hash of the NAR serialisation of the path, the size of
+ the NAR, and the sorted references. The size field is strictly
+ speaking superfluous, but might prevent endless/excessive data
+ attacks. */
+ std::string fingerprint() const;
+
+ void sign(const SecretKey & secretKey);
+
+ /* Return the number of signatures on this .narinfo that were
+ produced by one of the specified keys. */
+ unsigned int checkSignatures(const PublicKeys & publicKeys) const;
};
typedef list<ValidPathInfo> ValidPathInfos;