Commit 6bdac26369c0d770759c2b6ce24afef608a91ec9
1 parent
8d7bb3ff
finished testing C API
git-svn-id: svn+q:///qpdf/trunk@734 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing
12 changed files
with
79 additions
and
9 deletions
README.maintainer
| @@ -16,6 +16,8 @@ Release Reminders | @@ -16,6 +16,8 @@ Release Reminders | ||
| 16 | 16 | ||
| 17 | make_dist verifies this consistency. | 17 | make_dist verifies this consistency. |
| 18 | 18 | ||
| 19 | + * Update release date in manual/qpdf-manual.xml | ||
| 20 | + | ||
| 19 | * Each year, update copyright notices. Just search for Copyright. | 21 | * Each year, update copyright notices. Just search for Copyright. |
| 20 | Last updated: 2009. | 22 | Last updated: 2009. |
| 21 | 23 |
configure.ac
| @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. | @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. | ||
| 2 | dnl This config.in requires autoconf 2.5 or greater. | 2 | dnl This config.in requires autoconf 2.5 or greater. |
| 3 | 3 | ||
| 4 | AC_PREREQ(2.60) | 4 | AC_PREREQ(2.60) |
| 5 | -AC_INIT(qpdf,2.0.6) | 5 | +AC_INIT(qpdf,2.1.a1) |
| 6 | 6 | ||
| 7 | AC_CONFIG_MACRO_DIR([m4]) | 7 | AC_CONFIG_MACRO_DIR([m4]) |
| 8 | AC_CONFIG_FILES([autoconf.mk]) | 8 | AC_CONFIG_FILES([autoconf.mk]) |
libqpdf/qpdf-c.cc
| @@ -376,10 +376,10 @@ void qpdf_set_r3_encryption_parameters( | @@ -376,10 +376,10 @@ void qpdf_set_r3_encryption_parameters( | ||
| 376 | ((print == QPDF_R3_PRINT_LOW) ? QPDFWriter::r3p_low : | 376 | ((print == QPDF_R3_PRINT_LOW) ? QPDFWriter::r3p_low : |
| 377 | (print == QPDF_R3_PRINT_NONE) ? QPDFWriter::r3p_none : | 377 | (print == QPDF_R3_PRINT_NONE) ? QPDFWriter::r3p_none : |
| 378 | QPDFWriter::r3p_full), | 378 | QPDFWriter::r3p_full), |
| 379 | - ((print == QPDF_R3_MODIFY_ANNOTATE) ? QPDFWriter::r3m_annotate : | ||
| 380 | - (print == QPDF_R3_MODIFY_FORM) ? QPDFWriter::r3m_form : | ||
| 381 | - (print == QPDF_R3_MODIFY_ASSEMBLY) ? QPDFWriter::r3m_assembly : | ||
| 382 | - (print == QPDF_R3_MODIFY_NONE) ? QPDFWriter::r3m_none : | 379 | + ((modify == QPDF_R3_MODIFY_ANNOTATE) ? QPDFWriter::r3m_annotate : |
| 380 | + (modify == QPDF_R3_MODIFY_FORM) ? QPDFWriter::r3m_form : | ||
| 381 | + (modify == QPDF_R3_MODIFY_ASSEMBLY) ? QPDFWriter::r3m_assembly : | ||
| 382 | + (modify == QPDF_R3_MODIFY_NONE) ? QPDFWriter::r3m_none : | ||
| 383 | QPDFWriter::r3m_all)); | 383 | QPDFWriter::r3m_all)); |
| 384 | } | 384 | } |
| 385 | 385 |
manual/qpdf-manual.xml
| @@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
| 5 | <!ENTITY mdash "—"> | 5 | <!ENTITY mdash "—"> |
| 6 | <!ENTITY ndash "–"> | 6 | <!ENTITY ndash "–"> |
| 7 | <!ENTITY nbsp " "> | 7 | <!ENTITY nbsp " "> |
| 8 | -<!ENTITY swversion "2.0.6"> | ||
| 9 | -<!ENTITY lastreleased "May 3, 2009"> | 8 | +<!ENTITY swversion "2.1.a1"> |
| 9 | +<!ENTITY lastreleased "XXX, 2009"> | ||
| 10 | ]> | 10 | ]> |
| 11 | <book> | 11 | <book> |
| 12 | <bookinfo> | 12 | <bookinfo> |
qpdf.spec
| 1 | Summary: Command-line tools and library for transforming PDF files | 1 | Summary: Command-line tools and library for transforming PDF files |
| 2 | Name: qpdf | 2 | Name: qpdf |
| 3 | -Version: 2.0.6 | 3 | +Version: 2.1.a1 |
| 4 | Release: 1%{?dist} | 4 | Release: 1%{?dist} |
| 5 | License: Artistic | 5 | License: Artistic |
| 6 | Group: System Environment/Libraries | 6 | Group: System Environment/Libraries |
qpdf/qpdf-ctest.c
| @@ -159,6 +159,46 @@ static void test10(char const* infile, | @@ -159,6 +159,46 @@ static void test10(char const* infile, | ||
| 159 | report_errors(); | 159 | report_errors(); |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | +static void test11(char const* infile, | ||
| 163 | + char const* password, | ||
| 164 | + char const* outfile) | ||
| 165 | +{ | ||
| 166 | + qpdf_read(qpdf, infile, password); | ||
| 167 | + qpdf_init_write(qpdf, outfile); | ||
| 168 | + qpdf_set_static_ID(qpdf, QPDF_TRUE); | ||
| 169 | + qpdf_set_r2_encryption_parameters( | ||
| 170 | + qpdf, "user1", "owner1", QPDF_FALSE, QPDF_TRUE, QPDF_TRUE, QPDF_TRUE); | ||
| 171 | + qpdf_write(qpdf); | ||
| 172 | + report_errors(); | ||
| 173 | +} | ||
| 174 | + | ||
| 175 | +static void test12(char const* infile, | ||
| 176 | + char const* password, | ||
| 177 | + char const* outfile) | ||
| 178 | +{ | ||
| 179 | + qpdf_read(qpdf, infile, password); | ||
| 180 | + qpdf_init_write(qpdf, outfile); | ||
| 181 | + qpdf_set_static_ID(qpdf, QPDF_TRUE); | ||
| 182 | + qpdf_set_r3_encryption_parameters( | ||
| 183 | + qpdf, "user2", "owner2", QPDF_TRUE, QPDF_TRUE, | ||
| 184 | + QPDF_R3_PRINT_LOW, QPDF_R3_MODIFY_ALL); | ||
| 185 | + qpdf_write(qpdf); | ||
| 186 | + report_errors(); | ||
| 187 | +} | ||
| 188 | + | ||
| 189 | +static void test13(char const* infile, | ||
| 190 | + char const* password, | ||
| 191 | + char const* outfile) | ||
| 192 | +{ | ||
| 193 | + qpdf_read(qpdf, infile, password); | ||
| 194 | + printf("user password: %s\n", qpdf_get_user_password(qpdf)); | ||
| 195 | + qpdf_init_write(qpdf, outfile); | ||
| 196 | + qpdf_set_static_ID(qpdf, QPDF_TRUE); | ||
| 197 | + qpdf_set_preserve_encryption(qpdf, QPDF_FALSE); | ||
| 198 | + qpdf_write(qpdf); | ||
| 199 | + report_errors(); | ||
| 200 | +} | ||
| 201 | + | ||
| 162 | int main(int argc, char* argv[]) | 202 | int main(int argc, char* argv[]) |
| 163 | { | 203 | { |
| 164 | char* whoami = 0; | 204 | char* whoami = 0; |
| @@ -202,6 +242,9 @@ int main(int argc, char* argv[]) | @@ -202,6 +242,9 @@ int main(int argc, char* argv[]) | ||
| 202 | (n == 8) ? test08 : | 242 | (n == 8) ? test08 : |
| 203 | (n == 9) ? test09 : | 243 | (n == 9) ? test09 : |
| 204 | (n == 10) ? test10 : | 244 | (n == 10) ? test10 : |
| 245 | + (n == 11) ? test11 : | ||
| 246 | + (n == 12) ? test12 : | ||
| 247 | + (n == 13) ? test13 : | ||
| 205 | 0); | 248 | 0); |
| 206 | 249 | ||
| 207 | if (fn == 0) | 250 | if (fn == 0) |
qpdf/qpdf.cc
| @@ -472,7 +472,7 @@ int main(int argc, char* argv[]) | @@ -472,7 +472,7 @@ int main(int argc, char* argv[]) | ||
| 472 | // 1 2 3 4 5 6 7 8 | 472 | // 1 2 3 4 5 6 7 8 |
| 473 | // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 | 473 | // 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
| 474 | std::cout | 474 | std::cout |
| 475 | - << whoami << " version 2.0.6" << std::endl | 475 | + << whoami << " version 2.1.a1" << std::endl |
| 476 | << "Copyright (c) 2005-2009 Jay Berkenbilt" | 476 | << "Copyright (c) 2005-2009 Jay Berkenbilt" |
| 477 | << std::endl | 477 | << std::endl |
| 478 | << "This software may be distributed under the terms of version 2 of the" | 478 | << "This software may be distributed under the terms of version 2 of the" |
qpdf/qtest/qpdf.test
| @@ -851,6 +851,31 @@ $td->runtest("invalid password", | @@ -851,6 +851,31 @@ $td->runtest("invalid password", | ||
| 851 | $td->EXIT_STATUS => 2}, | 851 | $td->EXIT_STATUS => 2}, |
| 852 | $td->NORMALIZE_NEWLINES); | 852 | $td->NORMALIZE_NEWLINES); |
| 853 | 853 | ||
| 854 | +my @cenc = ( | ||
| 855 | + [11, 'hybrid-xref.pdf', "''", 'r2', ""], | ||
| 856 | + [12, 'hybrid-xref.pdf', "''", 'r3', ""], | ||
| 857 | + [13, 'c-r2.pdf', 'user1', 'decrypt with user', | ||
| 858 | + "user password: user1\n"], | ||
| 859 | + [13, 'c-r3.pdf', 'owner2', 'decrypt with owner', | ||
| 860 | + "user password: user2\n"], | ||
| 861 | + ); | ||
| 862 | +$n_tests += 2 * @cenc; | ||
| 863 | + | ||
| 864 | +foreach my $d (@cenc) | ||
| 865 | +{ | ||
| 866 | + my ($n, $infile, $pass, $description, $output) = @$d; | ||
| 867 | + my $outfile = $description; | ||
| 868 | + $outfile =~ s/ /-/g; | ||
| 869 | + my $outfile = "c-$outfile.pdf"; | ||
| 870 | + $td->runtest("C API encryption: $description", | ||
| 871 | + {$td->COMMAND => "qpdf-ctest $n $infile $pass a.pdf"}, | ||
| 872 | + {$td->STRING => $output, $td->EXIT_STATUS => 0}, | ||
| 873 | + $td->NORMALIZE_NEWLINES); | ||
| 874 | + $td->runtest("check $description", | ||
| 875 | + {$td->FILE => "a.pdf"}, | ||
| 876 | + {$td->FILE => $outfile}); | ||
| 877 | +} | ||
| 878 | + | ||
| 854 | # Test combinations of linearization and encryption. Note that we do | 879 | # Test combinations of linearization and encryption. Note that we do |
| 855 | # content checks on encrypted and linearized files in various | 880 | # content checks on encrypted and linearized files in various |
| 856 | # combinations below. Here we are just making sure that they are | 881 | # combinations below. Here we are just making sure that they are |
qpdf/qtest/qpdf/c-decrypt-with-owner.pdf
0 → 100644
No preview for this file type
qpdf/qtest/qpdf/c-decrypt-with-user.pdf
0 → 100644
No preview for this file type
qpdf/qtest/qpdf/c-r2.pdf
0 → 100644
No preview for this file type
qpdf/qtest/qpdf/c-r3.pdf
0 → 100644
No preview for this file type