Add FPDF_GetSignatureObject() API
This builds on top of the recently added FPDF_GetSignatureCount() API.
The combination of the two allows iterating over all signature objects,
which adds the possibility to later add getter functions to access the
actual properties of the returned FPDF_SIGNATURE.
Change-Id: I46e822d2b9aa7511850acb353472cbf058c85a2a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/70990
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_signature_embeddertest.cpp b/fpdfsdk/fpdf_signature_embeddertest.cpp
index fb8bb3a..851df00 100644
--- a/fpdfsdk/fpdf_signature_embeddertest.cpp
+++ b/fpdfsdk/fpdf_signature_embeddertest.cpp
@@ -19,3 +19,20 @@
// Provide no document.
EXPECT_EQ(-1, FPDF_GetSignatureCount(nullptr));
}
+
+TEST_F(FPDFSignatureEmbedderTest, GetSignatureObject) {
+ EXPECT_TRUE(OpenDocument("two_signatures.pdf"));
+ // Different, non-null signature objects are returned.
+ FPDF_SIGNATURE signature1 = FPDF_GetSignatureObject(document(), 0);
+ EXPECT_NE(nullptr, signature1);
+ FPDF_SIGNATURE signature2 = FPDF_GetSignatureObject(document(), 1);
+ EXPECT_NE(nullptr, signature2);
+ EXPECT_NE(signature1, signature2);
+
+ // Out of bounds.
+ EXPECT_EQ(nullptr, FPDF_GetSignatureObject(document(), -1));
+ EXPECT_EQ(nullptr, FPDF_GetSignatureObject(document(), 2));
+
+ // Provide no document.
+ EXPECT_EQ(nullptr, FPDF_GetSignatureObject(nullptr, 0));
+}