summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Xu <bo_xu@foxitsoftware.com>2014-09-19 19:16:31 -0700
committerBo Xu <bo_xu@foxitsoftware.com>2014-09-19 19:16:31 -0700
commitc5cab025cef52c171d913f1840a24ce93f483298 (patch)
treea97bb03bad1809d21801074cff6dccb8d7e3859a
parent2d282243dbd1edd51d42e13f563903a1a76ce8f8 (diff)
downloadpdfium-c5cab025cef52c171d913f1840a24ce93f483298.tar.xz
Add FPDF_GetSecurityHandlerRevision
Security handler revision number is needed to interpret file permission. BUG=None R=thestig@chromium.org Review URL: https://codereview.chromium.org/589813002
-rw-r--r--fpdfsdk/include/fpdfview.h10
-rw-r--r--fpdfsdk/src/fpdfview.cpp11
2 files changed, 21 insertions, 0 deletions
diff --git a/fpdfsdk/include/fpdfview.h b/fpdfsdk/include/fpdfview.h
index 1b7ae2e251..4dcdcf620a 100644
--- a/fpdfsdk/include/fpdfview.h
+++ b/fpdfsdk/include/fpdfview.h
@@ -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:
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 70494e02a2..49dabe300b 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -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;