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