diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-10-31 20:38:27 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-10-31 20:38:27 -0500 |
commit | 7ab44372d81e86df99b3aefa114a5003df98bc61 (patch) | |
tree | a376b212f73518f7633925bf77d403fc33792953 /hscript/script.cc | |
parent | bc96edb1c20b0031479cbf23055651c2c92f7afe (diff) | |
download | horizon-7ab44372d81e86df99b3aefa114a5003df98bc61.tar.gz horizon-7ab44372d81e86df99b3aefa114a5003df98bc61.tar.bz2 horizon-7ab44372d81e86df99b3aefa114a5003df98bc61.tar.xz horizon-7ab44372d81e86df99b3aefa114a5003df98bc61.zip |
hscript: Implement SigningKey, add tests
Diffstat (limited to 'hscript/script.cc')
-rw-r--r-- | hscript/script.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/hscript/script.cc b/hscript/script.cc index 319ba14..ea083a8 100644 --- a/hscript/script.cc +++ b/hscript/script.cc @@ -173,6 +173,10 @@ struct Script::ScriptPrivate { std::unique_ptr<Repository> repo(dynamic_cast<Repository *>(obj)); this->repos.push_back(std::move(repo)); return true; + } else if(key_name == "signingkey") { + std::unique_ptr<SigningKey> key(dynamic_cast<SigningKey *>(obj)); + this->repo_keys.push_back(std::move(key)); + return true; } else if(key_name == "username") { return store_username(obj, lineno, errors, warnings, opts); } else if(key_name == "useralias") { @@ -808,7 +812,19 @@ bool Script::validate() const { "You may only specify up to 10 repositories."); } - /* signingkey */ + /* REQ: Runner.Validate.signingkey */ + for(auto &key : this->internal->repo_keys) { + if(!key->validate(this->opts)) { + failures++; + } + } + if(this->internal->repo_keys.size() > 10) { + failures++; + output_error("installfile:" + + std::to_string(this->internal->repo_keys[11]->lineno()), + "signingkey: too many keys specified", + "You may only specify up to 10 repository keys."); + } for(auto &acct : this->internal->accounts) { UserDetail *detail = acct.second.get(); |