From 881093d08030ebd50663919097f491cbea7d4fe8 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Mon, 19 Nov 2018 00:26:49 +0800 Subject: hardcode an encryption key for test -- it works --- source/pdf/pdf-crypt.c | 19 +++++++++++++++---- 1 file 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; -- cgit v1.2.3