Add APIs to expose both stream and string encryption methods.
authorSebastian Rasmussen <[email protected]>
Sat, 11 Mar 2023 01:59:01 +0000 (02:59 +0100)
committerSebastian Rasmussen <[email protected]>
Tue, 14 Mar 2023 12:50:15 +0000 (13:50 +0100)
include/mupdf/pdf/crypt.h
source/pdf/pdf-crypt.c

index 69c30b72654ac63dbd9d04151db29cb9f6efb9d8..791077d72acef301c40c2b3010c7337140cbc0a8 100644 (file)
@@ -51,7 +51,9 @@ fz_stream *pdf_open_crypt_with_filter(fz_context *ctx, fz_stream *chain, pdf_cry
 
 int pdf_crypt_version(fz_context *ctx, pdf_crypt *crypt);
 int pdf_crypt_revision(fz_context *ctx, pdf_crypt *crypt);
-char *pdf_crypt_method(fz_context *ctx, pdf_crypt *crypt);
+const char *pdf_crypt_method(fz_context *ctx, pdf_crypt *crypt);
+const char *pdf_crypt_string_method(fz_context *ctx, pdf_crypt *crypt);
+const char *pdf_crypt_stream_method(fz_context *ctx, pdf_crypt *crypt);
 int pdf_crypt_length(fz_context *ctx, pdf_crypt *crypt);
 int pdf_crypt_permissions(fz_context *ctx, pdf_crypt *crypt);
 int pdf_crypt_encrypt_metadata(fz_context *ctx, pdf_crypt *crypt);
index bf21440e99a3fbc4ef7b32e2a3827788c069bee7..cf351385702f4513d6fd00a9923698d75e3a17e9 100644 (file)
@@ -955,23 +955,42 @@ int pdf_crypt_revision(fz_context *ctx, pdf_crypt *crypt)
        return 0;
 }
 
-char *
-pdf_crypt_method(fz_context *ctx, pdf_crypt *crypt)
+static char *
+crypt_method(fz_context *ctx, int method)
 {
-       if (crypt)
+       switch (method)
        {
-               switch (crypt->strf.method)
-               {
-               case PDF_CRYPT_NONE: return "None";
-               case PDF_CRYPT_RC4: return "RC4";
-               case PDF_CRYPT_AESV2: return "AES";
-               case PDF_CRYPT_AESV3: return "AES";
-               case PDF_CRYPT_UNKNOWN: return "Unknown";
-               }
+       default:
+       case PDF_CRYPT_UNKNOWN: return "Unknown";
+       case PDF_CRYPT_NONE: return "None";
+       case PDF_CRYPT_RC4: return "RC4";
+       case PDF_CRYPT_AESV2: return "AES";
+       case PDF_CRYPT_AESV3: return "AES";
        }
+}
+
+const char *
+pdf_crypt_string_method(fz_context *ctx, pdf_crypt *crypt)
+{
+       if (crypt)
+               return crypt_method(ctx, crypt->strf.method);
        return "None";
 }
 
+const char *
+pdf_crypt_stream_method(fz_context *ctx, pdf_crypt *crypt)
+{
+       if (crypt)
+               return crypt_method(ctx, crypt->stmf.method);
+       return "None";
+}
+
+const char *
+pdf_crypt_method(fz_context *ctx, pdf_crypt *crypt)
+{
+       return pdf_crypt_string_method(ctx, crypt);
+}
+
 int
 pdf_crypt_length(fz_context *ctx, pdf_crypt *crypt)
 {