Hi, >From attached cpp file:
``` unsigned char* p7Buf = (unsigned char*) malloc(p7Len); unsigned char *p; p=p7Buf; if (p7Buf != NULL) { int len = i2d_PKCS7(p7, &p); printf("%i", len); std::cout << "p7Buf filled"; } PKCS7_free(p7); //std::cout << "buffer value"<<p7Buf<< std::endl; printf("%x\n", *p); return (char *) p; ``` 1. Function i2d_PKCS7 returns DER bytes which can contain null bytes so it cannot be treated as C++ null terminated string here "PdfData sigData(ossl->signature());". You will need also length returned from i2d_PKCS7 and call different constructor "PdfData sigData(signature_data, signature_len);". 2. From docs about i2d_PKCS7 " https://www.openssl.org/docs/man1.1.0/crypto/i2d_PKCS7.html": "i2d_TYPE() encodes the structure pointed to by a into DER format. If ppout is not NULL, it writes the DER encoded data to the buffer at *ppout, and increments it to point after the data just written.". So p which is here returned will actually point at the end of DER bytes. Maybe better would be to return p7Buf from function "signature". There can be other problems and there are memory leaks. You can look at stackoverflow or some open source code how to properly use it. Look at "PKCS7_sign" (after is pkcs7 done you can use i2d_PKCS7 instead of BIO): https://github.com/openssl/openssl/blob/master/crypto/pkcs7/pk7_smime.c https://github.com/openssl/openssl/blob/master/apps/smime.c I see that your code is "similar" to this " https://gist.github.com/diorahman/d91fd79c939e2bd3ee89". You can use i2d_PKCS7 in this way (you do not need to allocate memory, let openssl do it and call it only once): ``` unsigned char *signature = NULL; int len = i2d_PKCS7(p7, &signature); PdfData sigData(signature, len); // PdfData will copy it OPENSSL_free(signature); PKCS7_free(p7); // use sigData ``` On Sun, Jan 13, 2019 at 7:09 PM Susheela S <susheela...@gmail.com> wrote: > Hi, > > I have tried to sign PDF document using latest version of PoDoFo 0.9.6 and > openssl has been used for reading the certificate. I have attached the .ccp > file which has the code. The PDF file get created, but when it shows > "invalid signature' on mouse over the signature field. "Error encountered > while BER decoding:Error during signature verification" is shown on > clicking the signature in the PDF document. > > Can you please help me to fix this issue? > > I have also attached PDF created with signature from the attached code. > > > Thanks, > Susheela > _______________________________________________ > Podofo-users mailing list > Podofo-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/podofo-users >
_______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users