From 8e065c6b3e36e4cd113769575c0045b6d42357ef Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 29 Apr 2016 16:47:20 +0200 Subject: [PATCH] BinaryCacheStore: Make the signing key a parameter --- doc/manual/command-ref/conf-file.xml | 10 -------- src/libstore/binary-cache-store.cc | 3 ++- src/libstore/binary-cache-store.hh | 3 ++- src/libstore/http-binary-cache-store.cc | 7 +++--- src/libstore/local-binary-cache-store.cc | 29 ++++++++---------------- src/libstore/s3-binary-cache-store.cc | 7 +++--- src/libstore/s3-binary-cache-store.hh | 4 ++-- src/libstore/store-api.hh | 4 ---- 8 files changed, 21 insertions(+), 46 deletions(-) diff --git a/doc/manual/command-ref/conf-file.xml b/doc/manual/command-ref/conf-file.xml index 598b15827..4c8f3d9d3 100644 --- a/doc/manual/command-ref/conf-file.xml +++ b/doc/manual/command-ref/conf-file.xml @@ -406,16 +406,6 @@ flag, e.g. --option gc-keep-outputs false. - binary-cache-secret-key-file - - Path of the file containing the secret key to be - used for signing binary caches. This file can be generated using - nix-store - --generate-binary-cache-key. - - - - binary-caches-parallel-connections The maximum number of parallel HTTP connections diff --git a/src/libstore/binary-cache-store.cc b/src/libstore/binary-cache-store.cc index 8b72977d6..063d1cce2 100644 --- a/src/libstore/binary-cache-store.cc +++ b/src/libstore/binary-cache-store.cc @@ -15,9 +15,10 @@ namespace nix { BinaryCacheStore::BinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile) + const StoreParams & params) : localStore(localStore) { + auto secretKeyFile = get(params, "secret-key", ""); if (secretKeyFile != "") secretKey = std::unique_ptr(new SecretKey(readFile(secretKeyFile))); diff --git a/src/libstore/binary-cache-store.hh b/src/libstore/binary-cache-store.hh index b732abc38..f6fa0cac0 100644 --- a/src/libstore/binary-cache-store.hh +++ b/src/libstore/binary-cache-store.hh @@ -21,7 +21,8 @@ private: protected: - BinaryCacheStore(std::shared_ptr localStore, const Path & secretKeyFile); + BinaryCacheStore(std::shared_ptr localStore, + const StoreParams & params); [[noreturn]] void notImpl(); diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc index 392945ca7..92d94aeea 100644 --- a/src/libstore/http-binary-cache-store.cc +++ b/src/libstore/http-binary-cache-store.cc @@ -16,8 +16,8 @@ private: public: HttpBinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile, const Path & _cacheUri) - : BinaryCacheStore(localStore, secretKeyFile) + const StoreParams & params, const Path & _cacheUri) + : BinaryCacheStore(localStore, params) , cacheUri(_cacheUri) , downloaders( std::numeric_limits::max(), @@ -92,8 +92,7 @@ static RegisterStoreImplementation regStore([]( if (std::string(uri, 0, 7) != "http://" && std::string(uri, 0, 8) != "https://") return 0; auto store = std::make_shared(std::shared_ptr(0), - settings.get("binary-cache-secret-key-file", string("")), - uri); + params, uri); store->init(); return store; }); diff --git a/src/libstore/local-binary-cache-store.cc b/src/libstore/local-binary-cache-store.cc index 2ec9a0d10..b6e72b039 100644 --- a/src/libstore/local-binary-cache-store.cc +++ b/src/libstore/local-binary-cache-store.cc @@ -12,7 +12,11 @@ private: public: LocalBinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile, const Path & binaryCacheDir); + const StoreParams & params, const Path & binaryCacheDir) + : BinaryCacheStore(localStore, params) + , binaryCacheDir(binaryCacheDir) + { + } void init() override; @@ -31,13 +35,6 @@ protected: }; -LocalBinaryCacheStore::LocalBinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile, const Path & binaryCacheDir) - : BinaryCacheStore(localStore, secretKeyFile) - , binaryCacheDir(binaryCacheDir) -{ -} - void LocalBinaryCacheStore::init() { createDirs(binaryCacheDir + "/nar"); @@ -74,23 +71,15 @@ std::shared_ptr LocalBinaryCacheStore::getFile(const std::string & } } -ref openLocalBinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile, const Path & binaryCacheDir) -{ - auto store = make_ref( - localStore, secretKeyFile, binaryCacheDir); - store->init(); - return store; -} - static RegisterStoreImplementation regStore([]( const std::string & uri, const StoreParams & params) -> std::shared_ptr { if (std::string(uri, 0, 7) != "file://") return 0; - return openLocalBinaryCacheStore(std::shared_ptr(0), - settings.get("binary-cache-secret-key-file", string("")), - std::string(uri, 7)); + auto store = std::make_shared( + std::shared_ptr(0), params, std::string(uri, 7)); + store->init(); + return store; }); } diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc index cd88a3271..58ee0b638 100644 --- a/src/libstore/s3-binary-cache-store.cc +++ b/src/libstore/s3-binary-cache-store.cc @@ -43,8 +43,8 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore Stats stats; S3BinaryCacheStoreImpl(std::shared_ptr localStore, - const Path & secretKeyFile, const std::string & bucketName) - : S3BinaryCacheStore(localStore, secretKeyFile) + const StoreParams & params, const std::string & bucketName) + : S3BinaryCacheStore(localStore, params) , bucketName(bucketName) , config(makeConfig()) , client(make_ref(*config)) @@ -245,8 +245,7 @@ static RegisterStoreImplementation regStore([]( { if (std::string(uri, 0, 5) != "s3://") return 0; auto store = std::make_shared(std::shared_ptr(0), - settings.get("binary-cache-secret-key-file", string("")), - std::string(uri, 5)); + params, std::string(uri, 5)); store->init(); return store; }); diff --git a/src/libstore/s3-binary-cache-store.hh b/src/libstore/s3-binary-cache-store.hh index 0425f6bb9..2751a9d01 100644 --- a/src/libstore/s3-binary-cache-store.hh +++ b/src/libstore/s3-binary-cache-store.hh @@ -11,8 +11,8 @@ class S3BinaryCacheStore : public BinaryCacheStore protected: S3BinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile) - : BinaryCacheStore(localStore, secretKeyFile) + const StoreParams & params) + : BinaryCacheStore(localStore, params) { } public: diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh index cdde0be7b..29685c9d1 100644 --- a/src/libstore/store-api.hh +++ b/src/libstore/store-api.hh @@ -529,10 +529,6 @@ ref openStoreAt(const std::string & uri); ref openStore(); -ref openLocalBinaryCacheStore(std::shared_ptr localStore, - const Path & secretKeyFile, const Path & binaryCacheDir); - - /* Return the default substituter stores, defined by the ‘substituters’ option and various legacy options like ‘binary-caches’. */