aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/store-api.cc
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-01-13 15:23:29 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-01-13 15:39:19 -0500
commita4164762178a0520b6998c864c7752d3497c40d2 (patch)
tree428d3de3acb76c4e2a2ba6e262c55b66c3792e37 /src/libstore/store-api.cc
parentfec527bba1fb08f2382db67d210965d895bd0371 (diff)
Move `ValidPathInfo` defintions to `path-info.cc`
Originally there was no `path-info.*`, then there was `path-info.hh`, then there was `path-info.cc`, but only for new things. Moving this stuff over makes everything consistent.
Diffstat (limited to 'src/libstore/store-api.cc')
-rw-r--r--src/libstore/store-api.cc73
1 files changed, 0 insertions, 73 deletions
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index f959dfd51..5130409d4 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -1210,79 +1210,6 @@ std::string showPaths(const PathSet & paths)
}
-std::string ValidPathInfo::fingerprint(const Store & store) const
-{
- if (narSize == 0)
- throw Error("cannot calculate fingerprint of path '%s' because its size is not known",
- store.printStorePath(path));
- return
- "1;" + store.printStorePath(path) + ";"
- + narHash.to_string(Base32, true) + ";"
- + std::to_string(narSize) + ";"
- + concatStringsSep(",", store.printStorePathSet(references));
-}
-
-
-void ValidPathInfo::sign(const Store & store, const SecretKey & secretKey)
-{
- sigs.insert(secretKey.signDetached(fingerprint(store)));
-}
-
-bool ValidPathInfo::isContentAddressed(const Store & store) const
-{
- if (! ca) return false;
-
- auto caPath = std::visit(overloaded {
- [&](const TextHash & th) {
- return store.makeTextPath(path.name(), th.hash, references);
- },
- [&](const FixedOutputHash & fsh) {
- auto refs = references;
- bool hasSelfReference = false;
- if (refs.count(path)) {
- hasSelfReference = true;
- refs.erase(path);
- }
- return store.makeFixedOutputPath(fsh.method, fsh.hash, path.name(), refs, hasSelfReference);
- }
- }, *ca);
-
- bool res = caPath == path;
-
- if (!res)
- printError("warning: path '%s' claims to be content-addressed but isn't", store.printStorePath(path));
-
- return res;
-}
-
-
-size_t ValidPathInfo::checkSignatures(const Store & store, const PublicKeys & publicKeys) const
-{
- if (isContentAddressed(store)) return maxSigs;
-
- size_t good = 0;
- for (auto & sig : sigs)
- if (checkSignature(store, publicKeys, sig))
- good++;
- return good;
-}
-
-
-bool ValidPathInfo::checkSignature(const Store & store, const PublicKeys & publicKeys, const std::string & sig) const
-{
- return verifyDetached(fingerprint(store), sig, publicKeys);
-}
-
-
-Strings ValidPathInfo::shortRefs() const
-{
- Strings refs;
- for (auto & r : references)
- refs.push_back(std::string(r.to_string()));
- return refs;
-}
-
-
Derivation Store::derivationFromPath(const StorePath & drvPath)
{
ensurePath(drvPath);