diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-01-26 19:17:57 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-01-30 19:11:03 +0100 |
commit | 700dfa40d3d2c5b60bf5937f74c0ab59561115f8 (patch) | |
tree | 223b31e15b2778482105fc83330555a5af1826cf /libqpdf/QPDFJob_config.cc | |
parent | b5d41b16b874e322befbd3fa2dde07714f7090a3 (diff) | |
download | qpdf-700dfa40d3d2c5b60bf5937f74c0ab59561115f8.tar.zst |
QPDFJob: convert encryption handlers
Diffstat (limited to 'libqpdf/QPDFJob_config.cc')
-rw-r--r-- | libqpdf/QPDFJob_config.cc | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/libqpdf/QPDFJob_config.cc b/libqpdf/QPDFJob_config.cc index c313c219..85aa3a3b 100644 --- a/libqpdf/QPDFJob_config.cc +++ b/libqpdf/QPDFJob_config.cc @@ -963,3 +963,198 @@ QPDFJob::UOConfig::password(char const* parameter) config.o.under_overlay->password = QUtil::make_shared_cstr(parameter); return *this; } + +std::shared_ptr<QPDFJob::EncConfig> +QPDFJob::Config::encrypt(int keylen, + std::string const& user_password, + std::string const& owner_password) +{ + o.keylen = keylen; + if (keylen == 256) + { + o.use_aes = true; + } + o.user_password = user_password; + o.owner_password = owner_password; + return std::shared_ptr<EncConfig>(new EncConfig(*this)); +} + +QPDFJob::EncConfig::EncConfig(Config& c) : + config(c) +{ +} + +QPDFJob::Config& +QPDFJob::EncConfig::end() +{ + config.o.encrypt = true; + config.o.decrypt = false; + config.o.copy_encryption = false; + return this->config; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::allowInsecure() +{ + config.o.allow_insecure = true; + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::accessibility(char const* parameter) +{ + config.o.r3_accessibility = (strcmp(parameter, "y") == 0); + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::extract(char const* parameter) +{ + if (config.o.keylen == 40) + { + config.o.r2_extract = (strcmp(parameter, "y") == 0); + } + else + { + config.o.r3_extract = (strcmp(parameter, "y") == 0); + } + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::print(char const* parameter) +{ + if (config.o.keylen == 40) + { + config.o.r2_print = (strcmp(parameter, "y") == 0); + } + else if (strcmp(parameter, "full") == 0) + { + config.o.r3_print = qpdf_r3p_full; + } + else if (strcmp(parameter, "low") == 0) + { + config.o.r3_print = qpdf_r3p_low; + } + else if (strcmp(parameter, "none") == 0) + { + config.o.r3_print = qpdf_r3p_none; + } + else + { + usage("invalid print option"); + } + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::modify(char const* parameter) +{ + if (config.o.keylen == 40) + { + config.o.r2_modify = (strcmp(parameter, "y") == 0); + } + else if (strcmp(parameter, "all") == 0) + { + config.o.r3_assemble = true; + config.o.r3_annotate_and_form = true; + config.o.r3_form_filling = true; + config.o.r3_modify_other = true; + } + else if (strcmp(parameter, "annotate") == 0) + { + config.o.r3_assemble = true; + config.o.r3_annotate_and_form = true; + config.o.r3_form_filling = true; + config.o.r3_modify_other = false; + } + else if (strcmp(parameter, "form") == 0) + { + config.o.r3_assemble = true; + config.o.r3_annotate_and_form = false; + config.o.r3_form_filling = true; + config.o.r3_modify_other = false; + } + else if (strcmp(parameter, "assembly") == 0) + { + config.o.r3_assemble = true; + config.o.r3_annotate_and_form = false; + config.o.r3_form_filling = false; + config.o.r3_modify_other = false; + } + else if (strcmp(parameter, "none") == 0) + { + config.o.r3_assemble = false; + config.o.r3_annotate_and_form = false; + config.o.r3_form_filling = false; + config.o.r3_modify_other = false; + } + else + { + usage("invalid modify option"); + } + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::cleartextMetadata() +{ + config.o.cleartext_metadata = true; + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::assemble(char const* parameter) +{ + config.o.r3_assemble = (strcmp(parameter, "y") == 0); + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::annotate(char const* parameter) +{ + if (config.o.keylen == 40) + { + config.o.r2_annotate = (strcmp(parameter, "y") == 0); + } + else + { + config.o.r3_annotate_and_form = (strcmp(parameter, "y") == 0); + } + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::form(char const* parameter) +{ + config.o.r3_form_filling = (strcmp(parameter, "y") == 0); + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::modifyOther(char const* parameter) +{ + config.o.r3_modify_other = (strcmp(parameter, "y") == 0); + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::useAes(char const* parameter) +{ + config.o.use_aes = (strcmp(parameter, "y") == 0); + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::forceV4() +{ + config.o.force_V4 = true; + return *this; +} + +QPDFJob::EncConfig& +QPDFJob::EncConfig::forceR5() +{ + config.o.force_R5 = true; + return *this; +} |