diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-03-24T10·41+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-03-24T10·41+0100 |
commit | 374198ad6d8747c135ce8d8a8284723b0968aeef (patch) | |
tree | fe8f2f60b12494f14272ac5b2adcd3650421e328 /src/libstore/store-api.cc | |
parent | 11525377e1b0fdba30713ff3826e7bc26ce488af (diff) |
Move signature support from NarInfo to ValidPathInfo
Diffstat (limited to 'src/libstore/store-api.cc')
-rw-r--r-- | src/libstore/store-api.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc index 5f3f621e8d00..b47376e5594a 100644 --- a/src/libstore/store-api.cc +++ b/src/libstore/store-api.cc @@ -1,5 +1,6 @@ -#include "store-api.hh" +#include "crypto.hh" #include "globals.hh" +#include "store-api.hh" #include "util.hh" @@ -309,6 +310,32 @@ void Store::exportPaths(const Paths & paths, } +std::string ValidPathInfo::fingerprint() const +{ + return + "1;" + path + ";" + + printHashType(narHash.type) + ":" + printHash32(narHash) + ";" + + std::to_string(narSize) + ";" + + concatStringsSep(",", references); +} + + +void ValidPathInfo::sign(const SecretKey & secretKey) +{ + sigs.insert(secretKey.signDetached(fingerprint())); +} + + +unsigned int ValidPathInfo::checkSignatures(const PublicKeys & publicKeys) const +{ + unsigned int good = 0; + for (auto & sig : sigs) + if (verifyDetached(fingerprint(), sig, publicKeys)) + good++; + return good; +} + + } |