-
Notifications
You must be signed in to change notification settings - Fork 219
/
Copy pathRecryptPDF.cpp
103 lines (85 loc) · 2.94 KB
/
RecryptPDF.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
Source File : TIFFImageTest.cpp
Copyright 2011 Gal Kahana PDFWriter
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include "PDFWriter.h"
#include <iostream>
#include "testing/TestIO.h"
int RecryptPDF(int argc, char* argv[])
{
EStatusCode status;
do
{
// recrypt a document with AES encryption, and remove it
status = PDFWriter::RecryptPDF(
BuildRelativeInputPath(argv,"china.pdf"),
"",
BuildRelativeOutputPath(argv,"chinaWithoutEncryption.pdf"),
LogConfiguration::DefaultLogConfiguration(),
PDFCreationSettings(true, true));
if (status != PDFHummus::eSuccess)
{
cout << "failed to decrypt PDF\n";
break;
}
// recrypt an encrypted document with no password
status = PDFWriter::RecryptPDF(
BuildRelativeInputPath(argv,"PDFWithPassword.pdf"),
"user",
BuildRelativeOutputPath(argv,"RecryptPDFWithPasswordToNothing.pdf"),
LogConfiguration::DefaultLogConfiguration(),
PDFCreationSettings(true,true));
if (status != PDFHummus::eSuccess)
{
cout << "failed to decrypt PDF\n";
break;
}
// recrypt an encrypted document with new password
status = PDFWriter::RecryptPDF(
BuildRelativeInputPath(argv,"PDFWithPassword.pdf"),
"user",
BuildRelativeOutputPath(argv,"RecryptPDFWithPasswordToNewPassword.pdf"),
LogConfiguration::DefaultLogConfiguration(),
PDFCreationSettings(true,true,EncryptionOptions("user1",4,"owner1")));
if (status != PDFHummus::eSuccess)
{
cout << "failed to encrypt PDF with new password PDF\n";
break;
}
// recrypt a plain to document to one with password
status = PDFWriter::RecryptPDF(
BuildRelativeInputPath(argv,"Original.pdf"),
"",
BuildRelativeOutputPath(argv,"RecryptPDFOriginalToPasswordProtected.pdf"),
LogConfiguration::DefaultLogConfiguration(),
PDFCreationSettings(true, true, EncryptionOptions("user1", 4, "owner1")));
if (status != PDFHummus::eSuccess)
{
cout << "failed to encrypt PDF with new password PDF\n";
break;
}
// same, but forcing AES
status = PDFWriter::RecryptPDF(
BuildRelativeInputPath(argv,"Original.pdf"),
"",
BuildRelativeOutputPath(argv,"RecryptPDFOriginalToPasswordProtectedAES.pdf"),
LogConfiguration::DefaultLogConfiguration(),
PDFCreationSettings(true, true, EncryptionOptions("user1", 4, "owner1")),
ePDFVersion16);
if (status != PDFHummus::eSuccess)
{
cout << "failed to encrypt PDF with new password PDF\n";
break;
}
}while(false);
return status == eSuccess ? 0:1;
}