summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-11-19 00:26:49 +0800
committerIru Cai <mytbk920423@gmail.com>2018-11-19 00:26:49 +0800
commit881093d08030ebd50663919097f491cbea7d4fe8 (patch)
tree77a5b8bca4be22074476a21ea227807083a64143
parentbb619e85ec9009f29a1e82050b6562a84024f63e (diff)
downloadmupdf-881093d08030ebd50663919097f491cbea7d4fe8.tar.xz
hardcode an encryption key for test -- it works
-rw-r--r--source/pdf/pdf-crypt.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/source/pdf/pdf-crypt.c b/source/pdf/pdf-crypt.c
index cbc7f26f..53dc73b5 100644
--- a/source/pdf/pdf-crypt.c
+++ b/source/pdf/pdf-crypt.c
@@ -39,6 +39,7 @@ struct pdf_crypt_s
int encrypt_metadata;
unsigned char key[32]; /* decryption key generated from password */
+ int xjc;
};
static void pdf_parse_crypt_filter(fz_context *ctx, pdf_crypt_filter *cf, pdf_crypt *crypt, pdf_obj *name);
@@ -64,12 +65,19 @@ pdf_new_crypt(fz_context *ctx, pdf_obj *dict, pdf_obj *id)
pdf_drop_crypt(ctx, crypt);
fz_throw(ctx, FZ_ERROR_GENERIC, "unspecified encryption handler");
}
-#if 1
+ crypt->xjc = 0;
if (!strcmp("ProfXJC", pdf_to_name(ctx, obj)))
-#else
- if (pdf_name_eq(ctx, PDF_NAME(ProfXJC), obj))
-#endif
{
+ unsigned char akey[] = "\xCE\x69\x16\xAC\xD3\xA5\x00\x85\xF2\xD0\x22\x2A\x9C\xCE\x64\x4F\x65\xDF\x47\xE4\xE3\x6C\x24\x2B\x1B\x31\x6A\x3D\x3B\xE2\x20\xCC";
+
+ crypt->encrypt_metadata = 0;
+ crypt->xjc = 1;
+ crypt->length = 256;
+ memcpy(crypt->key, akey, 32);
+ crypt->stmf.method = PDF_CRYPT_AESV3;
+ crypt->stmf.length = crypt->length;
+ crypt->strf.method = PDF_CRYPT_AESV3;
+ crypt->strf.length = crypt->length;
return crypt;
}
if (!pdf_name_eq(ctx, PDF_NAME(Standard), obj))
@@ -807,6 +815,8 @@ pdf_needs_password(fz_context *ctx, pdf_document *doc)
{
if (!doc->crypt)
return 0;
+ if (doc->crypt->xjc)
+ return 0;
if (pdf_authenticate_password(ctx, doc, ""))
return 0;
return 1;
@@ -1043,6 +1053,7 @@ pdf_open_crypt(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, int num, int
fz_stream *
pdf_open_crypt_with_filter(fz_context *ctx, fz_stream *chain, pdf_crypt *crypt, pdf_obj *name, int num, int gen)
{
+ fz_warn(ctx, "pdf_open_crypt_with_filter\n");
if (!pdf_name_eq(ctx, name, PDF_NAME(Identity)))
{
pdf_crypt_filter cf;