Add FPDF_GetSecurityHandlerRevision
authorBo Xu <bo_xu@foxitsoftware.com>
Sat, 20 Sep 2014 02:16:31 +0000 (19:16 -0700)
committerBo Xu <bo_xu@foxitsoftware.com>
Sat, 20 Sep 2014 02:16:31 +0000 (19:16 -0700)
Security handler revision number is needed to interpret file permission.

BUG=None
R=thestig@chromium.org

Review URL: https://codereview.chromium.org/589813002

fpdfsdk/include/fpdfview.h
fpdfsdk/src/fpdfview.cpp

index 1b7ae2e..4dcdcf6 100644 (file)
@@ -260,6 +260,16 @@ DLLEXPORT unsigned long    STDCALL FPDF_GetLastError();
 //
 DLLEXPORT unsigned long        STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document);
 
+// Function: FPDF_GetSecurityHandlerRevision
+//                     Get the revision for security handler.
+// Parameters:
+//                     document        -       Handle to document. Returned by FPDF_LoadDocument function.
+// Return value:
+//                     The security handler revision number. Please refer to PDF Reference for
+//                     detailed description. If the document is not protected, -1 will be returned.
+//
+DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document);
+
 // Function: FPDF_GetPageCount
 //                     Get total number of pages in a document.
 // Parameters: 
index 70494e0..49dabe3 100644 (file)
@@ -340,6 +340,17 @@ DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document)
        return pDict->GetInteger("P");
 }
 
+DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document)
+{
+    if (document == NULL) return -1;
+    CPDF_Document*pDoc = (CPDF_Document*)document;
+    CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser();
+    CPDF_Dictionary* pDict = pParser->GetEncryptDict();
+    if (pDict == NULL) return -1;
+
+    return pDict->GetInteger("R");
+}
+
 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document)
 {
        if (document == NULL) return 0;