summaryrefslogtreecommitdiff
path: root/hscript/script.cc
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2019-10-31 20:38:27 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2019-10-31 20:38:27 -0500
commit7ab44372d81e86df99b3aefa114a5003df98bc61 (patch)
treea376b212f73518f7633925bf77d403fc33792953 /hscript/script.cc
parentbc96edb1c20b0031479cbf23055651c2c92f7afe (diff)
downloadhorizon-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.cc18
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();