xref: /aosp_15_r20/external/pdfium/public/fpdf_signature.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2020 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker #ifndef PUBLIC_FPDF_SIGNATURE_H_
6*3ac0a46fSAndroid Build Coastguard Worker #define PUBLIC_FPDF_SIGNATURE_H_
7*3ac0a46fSAndroid Build Coastguard Worker 
8*3ac0a46fSAndroid Build Coastguard Worker // NOLINTNEXTLINE(build/include)
9*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfview.h"
10*3ac0a46fSAndroid Build Coastguard Worker 
11*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
12*3ac0a46fSAndroid Build Coastguard Worker extern "C" {
13*3ac0a46fSAndroid Build Coastguard Worker #endif  // __cplusplus
14*3ac0a46fSAndroid Build Coastguard Worker 
15*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
16*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetSignatureCount
17*3ac0a46fSAndroid Build Coastguard Worker //          Get total number of signatures in the document.
18*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
19*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument().
20*3ac0a46fSAndroid Build Coastguard Worker // Return value:
21*3ac0a46fSAndroid Build Coastguard Worker //          Total number of signatures in the document on success, -1 on error.
22*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT int FPDF_CALLCONV FPDF_GetSignatureCount(FPDF_DOCUMENT document);
23*3ac0a46fSAndroid Build Coastguard Worker 
24*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
25*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDF_GetSignatureObject
26*3ac0a46fSAndroid Build Coastguard Worker //          Get the Nth signature of the document.
27*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
28*3ac0a46fSAndroid Build Coastguard Worker //          document    -   Handle to document. Returned by FPDF_LoadDocument().
29*3ac0a46fSAndroid Build Coastguard Worker //          index       -   Index into the array of signatures of the document.
30*3ac0a46fSAndroid Build Coastguard Worker // Return value:
31*3ac0a46fSAndroid Build Coastguard Worker //          Returns the handle to the signature, or NULL on failure. The caller
32*3ac0a46fSAndroid Build Coastguard Worker //          does not take ownership of the returned FPDF_SIGNATURE. Instead, it
33*3ac0a46fSAndroid Build Coastguard Worker //          remains valid until FPDF_CloseDocument() is called for the document.
34*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT FPDF_SIGNATURE FPDF_CALLCONV
35*3ac0a46fSAndroid Build Coastguard Worker FPDF_GetSignatureObject(FPDF_DOCUMENT document, int index);
36*3ac0a46fSAndroid Build Coastguard Worker 
37*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
38*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetContents
39*3ac0a46fSAndroid Build Coastguard Worker //          Get the contents of a signature object.
40*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
41*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
42*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
43*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the contents.
44*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in bytes, of |buffer|.
45*3ac0a46fSAndroid Build Coastguard Worker // Return value:
46*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of bytes in the contents on success, 0 on error.
47*3ac0a46fSAndroid Build Coastguard Worker //
48*3ac0a46fSAndroid Build Coastguard Worker // For public-key signatures, |buffer| is either a DER-encoded PKCS#1 binary or
49*3ac0a46fSAndroid Build Coastguard Worker // a DER-encoded PKCS#7 binary. If |length| is less than the returned length, or
50*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is NULL, |buffer| will not be modified.
51*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
52*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetContents(FPDF_SIGNATURE signature,
53*3ac0a46fSAndroid Build Coastguard Worker                              void* buffer,
54*3ac0a46fSAndroid Build Coastguard Worker                              unsigned long length);
55*3ac0a46fSAndroid Build Coastguard Worker 
56*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
57*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetByteRange
58*3ac0a46fSAndroid Build Coastguard Worker //          Get the byte range of a signature object.
59*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
60*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
61*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
62*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the
63*3ac0a46fSAndroid Build Coastguard Worker //                          byte range.
64*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in ints, of |buffer|.
65*3ac0a46fSAndroid Build Coastguard Worker // Return value:
66*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of ints in the byte range on
67*3ac0a46fSAndroid Build Coastguard Worker //          success, 0 on error.
68*3ac0a46fSAndroid Build Coastguard Worker //
69*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is an array of pairs of integers (starting byte offset,
70*3ac0a46fSAndroid Build Coastguard Worker // length in bytes) that describes the exact byte range for the digest
71*3ac0a46fSAndroid Build Coastguard Worker // calculation. If |length| is less than the returned length, or
72*3ac0a46fSAndroid Build Coastguard Worker // |buffer| is NULL, |buffer| will not be modified.
73*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
74*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetByteRange(FPDF_SIGNATURE signature,
75*3ac0a46fSAndroid Build Coastguard Worker                               int* buffer,
76*3ac0a46fSAndroid Build Coastguard Worker                               unsigned long length);
77*3ac0a46fSAndroid Build Coastguard Worker 
78*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
79*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetSubFilter
80*3ac0a46fSAndroid Build Coastguard Worker //          Get the encoding of the value of a signature object.
81*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
82*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
83*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
84*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the encoding.
85*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in bytes, of |buffer|.
86*3ac0a46fSAndroid Build Coastguard Worker // Return value:
87*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of bytes in the encoding name (including the
88*3ac0a46fSAndroid Build Coastguard Worker //          trailing NUL character) on success, 0 on error.
89*3ac0a46fSAndroid Build Coastguard Worker //
90*3ac0a46fSAndroid Build Coastguard Worker // The |buffer| is always encoded in 7-bit ASCII. If |length| is less than the
91*3ac0a46fSAndroid Build Coastguard Worker // returned length, or |buffer| is NULL, |buffer| will not be modified.
92*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
93*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetSubFilter(FPDF_SIGNATURE signature,
94*3ac0a46fSAndroid Build Coastguard Worker                               char* buffer,
95*3ac0a46fSAndroid Build Coastguard Worker                               unsigned long length);
96*3ac0a46fSAndroid Build Coastguard Worker 
97*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
98*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetReason
99*3ac0a46fSAndroid Build Coastguard Worker //          Get the reason (comment) of the signature object.
100*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
101*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
102*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
103*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the reason.
104*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in bytes, of |buffer|.
105*3ac0a46fSAndroid Build Coastguard Worker // Return value:
106*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of bytes in the reason on success, 0 on error.
107*3ac0a46fSAndroid Build Coastguard Worker //
108*3ac0a46fSAndroid Build Coastguard Worker // Regardless of the platform, the |buffer| is always in UTF-16LE encoding. The
109*3ac0a46fSAndroid Build Coastguard Worker // string is terminated by a UTF16 NUL character. If |length| is less than the
110*3ac0a46fSAndroid Build Coastguard Worker // returned length, or |buffer| is NULL, |buffer| will not be modified.
111*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
112*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetReason(FPDF_SIGNATURE signature,
113*3ac0a46fSAndroid Build Coastguard Worker                            void* buffer,
114*3ac0a46fSAndroid Build Coastguard Worker                            unsigned long length);
115*3ac0a46fSAndroid Build Coastguard Worker 
116*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
117*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetTime
118*3ac0a46fSAndroid Build Coastguard Worker //          Get the time of signing of a signature object.
119*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
120*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
121*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
122*3ac0a46fSAndroid Build Coastguard Worker //          buffer      -   The address of a buffer that receives the time.
123*3ac0a46fSAndroid Build Coastguard Worker //          length      -   The size, in bytes, of |buffer|.
124*3ac0a46fSAndroid Build Coastguard Worker // Return value:
125*3ac0a46fSAndroid Build Coastguard Worker //          Returns the number of bytes in the encoding name (including the
126*3ac0a46fSAndroid Build Coastguard Worker //          trailing NUL character) on success, 0 on error.
127*3ac0a46fSAndroid Build Coastguard Worker //
128*3ac0a46fSAndroid Build Coastguard Worker // The |buffer| is always encoded in 7-bit ASCII. If |length| is less than the
129*3ac0a46fSAndroid Build Coastguard Worker // returned length, or |buffer| is NULL, |buffer| will not be modified.
130*3ac0a46fSAndroid Build Coastguard Worker //
131*3ac0a46fSAndroid Build Coastguard Worker // The format of time is expected to be D:YYYYMMDDHHMMSS+XX'YY', i.e. it's
132*3ac0a46fSAndroid Build Coastguard Worker // percision is seconds, with timezone information. This value should be used
133*3ac0a46fSAndroid Build Coastguard Worker // only when the time of signing is not available in the (PKCS#7 binary)
134*3ac0a46fSAndroid Build Coastguard Worker // signature.
135*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned long FPDF_CALLCONV
136*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetTime(FPDF_SIGNATURE signature,
137*3ac0a46fSAndroid Build Coastguard Worker                          char* buffer,
138*3ac0a46fSAndroid Build Coastguard Worker                          unsigned long length);
139*3ac0a46fSAndroid Build Coastguard Worker 
140*3ac0a46fSAndroid Build Coastguard Worker // Experimental API.
141*3ac0a46fSAndroid Build Coastguard Worker // Function: FPDFSignatureObj_GetDocMDPPermission
142*3ac0a46fSAndroid Build Coastguard Worker //          Get the DocMDP permission of a signature object.
143*3ac0a46fSAndroid Build Coastguard Worker // Parameters:
144*3ac0a46fSAndroid Build Coastguard Worker //          signature   -   Handle to the signature object. Returned by
145*3ac0a46fSAndroid Build Coastguard Worker //                          FPDF_GetSignatureObject().
146*3ac0a46fSAndroid Build Coastguard Worker // Return value:
147*3ac0a46fSAndroid Build Coastguard Worker //          Returns the permission (1, 2 or 3) on success, 0 on error.
148*3ac0a46fSAndroid Build Coastguard Worker FPDF_EXPORT unsigned int FPDF_CALLCONV
149*3ac0a46fSAndroid Build Coastguard Worker FPDFSignatureObj_GetDocMDPPermission(FPDF_SIGNATURE signature);
150*3ac0a46fSAndroid Build Coastguard Worker 
151*3ac0a46fSAndroid Build Coastguard Worker #ifdef __cplusplus
152*3ac0a46fSAndroid Build Coastguard Worker }  // extern "C"
153*3ac0a46fSAndroid Build Coastguard Worker #endif  // __cplusplus
154*3ac0a46fSAndroid Build Coastguard Worker 
155*3ac0a46fSAndroid Build Coastguard Worker #endif  // PUBLIC_FPDF_SIGNATURE_H_
156