aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFJob_argv.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-01-26 19:17:57 +0100
committerJay Berkenbilt <ejb@ql.org>2022-01-30 19:11:03 +0100
commit700dfa40d3d2c5b60bf5937f74c0ab59561115f8 (patch)
tree223b31e15b2778482105fc83330555a5af1826cf /libqpdf/QPDFJob_argv.cc
parentb5d41b16b874e322befbd3fa2dde07714f7090a3 (diff)
downloadqpdf-700dfa40d3d2c5b60bf5937f74c0ab59561115f8.tar.zst
QPDFJob: convert encryption handlers
Diffstat (limited to 'libqpdf/QPDFJob_argv.cc')
-rw-r--r--libqpdf/QPDFJob_argv.cc174
1 files changed, 10 insertions, 164 deletions
diff --git a/libqpdf/QPDFJob_argv.cc b/libqpdf/QPDFJob_argv.cc
index d2b38211..8882a7d7 100644
--- a/libqpdf/QPDFJob_argv.cc
+++ b/libqpdf/QPDFJob_argv.cc
@@ -44,6 +44,7 @@ namespace
std::shared_ptr<QPDFJob::AttConfig> c_att;
std::shared_ptr<QPDFJob::PagesConfig> c_pages;
std::shared_ptr<QPDFJob::UOConfig> c_uo;
+ std::shared_ptr<QPDFJob::EncConfig> c_enc;
std::vector<char*> accumulated_args; // points to member in ap
char* pages_password;
};
@@ -217,35 +218,30 @@ ArgParser::argEncPositional(char* arg)
}
return;
}
- o.user_password = this->accumulated_args.at(0);
- o.owner_password = this->accumulated_args.at(1);
+ std::string user_password = this->accumulated_args.at(0);
+ std::string owner_password = this->accumulated_args.at(1);
std::string len_str = this->accumulated_args.at(2);
+ int keylen = 0;
if (len_str == "40")
{
- o.keylen = 40;
+ keylen = 40;
this->ap.selectOptionTable(O_40_BIT_ENCRYPTION);
}
else if (len_str == "128")
{
- o.keylen = 128;
+ keylen = 128;
this->ap.selectOptionTable(O_128_BIT_ENCRYPTION);
}
else if (len_str == "256")
{
- o.keylen = 256;
- o.use_aes = true;
+ keylen = 256;
this->ap.selectOptionTable(O_256_BIT_ENCRYPTION);
}
else
{
usage("encryption key length must be 40, 128, or 256");
}
-}
-
-void
-ArgParser::argEnc256AllowInsecure()
-{
- o.allow_insecure = true;
+ this->c_enc = c_main->encrypt(keylen, user_password, owner_password);
}
void
@@ -395,160 +391,10 @@ ArgParser::argCopyAttachmentsFrom()
}
void
-ArgParser::argEnc40Print(char* parameter)
-{
- o.r2_print = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc40Modify(char* parameter)
-{
- o.r2_modify = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc40Extract(char* parameter)
-{
- o.r2_extract = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc40Annotate(char* parameter)
-{
- o.r2_annotate = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128Accessibility(char* parameter)
-{
- o.r3_accessibility = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128Extract(char* parameter)
-{
- o.r3_extract = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128Print(char* parameter)
-{
- if (strcmp(parameter, "full") == 0)
- {
- o.r3_print = qpdf_r3p_full;
- }
- else if (strcmp(parameter, "low") == 0)
- {
- o.r3_print = qpdf_r3p_low;
- }
- else if (strcmp(parameter, "none") == 0)
- {
- o.r3_print = qpdf_r3p_none;
- }
- else
- {
- usage("invalid print option");
- }
-}
-
-void
-ArgParser::argEnc128Modify(char* parameter)
-{
- if (strcmp(parameter, "all") == 0)
- {
- o.r3_assemble = true;
- o.r3_annotate_and_form = true;
- o.r3_form_filling = true;
- o.r3_modify_other = true;
- }
- else if (strcmp(parameter, "annotate") == 0)
- {
- o.r3_assemble = true;
- o.r3_annotate_and_form = true;
- o.r3_form_filling = true;
- o.r3_modify_other = false;
- }
- else if (strcmp(parameter, "form") == 0)
- {
- o.r3_assemble = true;
- o.r3_annotate_and_form = false;
- o.r3_form_filling = true;
- o.r3_modify_other = false;
- }
- else if (strcmp(parameter, "assembly") == 0)
- {
- o.r3_assemble = true;
- o.r3_annotate_and_form = false;
- o.r3_form_filling = false;
- o.r3_modify_other = false;
- }
- else if (strcmp(parameter, "none") == 0)
- {
- o.r3_assemble = false;
- o.r3_annotate_and_form = false;
- o.r3_form_filling = false;
- o.r3_modify_other = false;
- }
- else
- {
- usage("invalid modify option");
- }
-}
-
-void
-ArgParser::argEnc128CleartextMetadata()
-{
- o.cleartext_metadata = true;
-}
-
-void
-ArgParser::argEnc128Assemble(char* parameter)
-{
- o.r3_assemble = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128Annotate(char* parameter)
-{
- o.r3_annotate_and_form = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128Form(char* parameter)
-{
- o.r3_form_filling = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128ModifyOther(char* parameter)
-{
- o.r3_modify_other = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128UseAes(char* parameter)
-{
- o.use_aes = (strcmp(parameter, "y") == 0);
-}
-
-void
-ArgParser::argEnc128ForceV4()
-{
- o.force_V4 = true;
-}
-
-void
-ArgParser::argEnc256ForceR5()
-{
- o.force_R5 = true;
-}
-
-void
ArgParser::argEndEncryption()
{
- o.encrypt = true;
- o.decrypt = false;
- o.copy_encryption = false;
+ c_enc->end();
+ c_enc = nullptr;
}
void