aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/nar-info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/nar-info.cc')
-rw-r--r--src/libstore/nar-info.cc44
1 files changed, 8 insertions, 36 deletions
diff --git a/src/libstore/nar-info.cc b/src/libstore/nar-info.cc
index e9260a09b..c0c5cecd1 100644
--- a/src/libstore/nar-info.cc
+++ b/src/libstore/nar-info.cc
@@ -1,4 +1,3 @@
-#include "crypto.hh"
#include "globals.hh"
#include "nar-info.hh"
@@ -6,16 +5,16 @@ namespace nix {
NarInfo::NarInfo(const std::string & s, const std::string & whence)
{
- auto corrupt = [&]() {
+ auto corrupt = [&]() [[noreturn]] {
throw Error("NAR info file ‘%1%’ is corrupt");
};
auto parseHashField = [&](const string & s) {
- string::size_type colon = s.find(':');
- if (colon == string::npos) corrupt();
- HashType ht = parseHashType(string(s, 0, colon));
- if (ht == htUnknown) corrupt();
- return parseHash16or32(ht, string(s, colon + 1));
+ try {
+ return parseHash(s);
+ } catch (BadHash &) {
+ corrupt();
+ }
};
size_t pos = 0;
@@ -66,7 +65,7 @@ NarInfo::NarInfo(const std::string & s, const std::string & whence)
else if (name == "System")
system = value;
else if (name == "Sig")
- sig = value;
+ sigs.insert(value);
pos = eol + 1;
}
@@ -98,37 +97,10 @@ std::string NarInfo::to_string() const
if (!system.empty())
res += "System: " + system + "\n";
- if (!sig.empty())
+ for (auto sig : sigs)
res += "Sig: " + sig + "\n";
return res;
}
-std::string NarInfo::fingerprint() const
-{
- return
- "1;" + path + ";"
- + printHashType(narHash.type) + ":" + printHash32(narHash) + ";"
- + std::to_string(narSize) + ";"
- + concatStringsSep(",", references);
-}
-
-Strings NarInfo::shortRefs() const
-{
- Strings refs;
- for (auto & r : references)
- refs.push_back(baseNameOf(r));
- return refs;
-}
-
-void NarInfo::sign(const SecretKey & secretKey)
-{
- sig = secretKey.signDetached(fingerprint());
-}
-
-bool NarInfo::checkSignature(const PublicKeys & publicKeys) const
-{
- return sig != "" && verifyDetached(fingerprint(), sig, publicKeys);
-}
-
}