Q:
I have to access the parameters of an applied signature in an Acrobat
signature field.
Especially I also need to identify which Acrobat version was used for
applying the signature.
-----
A:
To extract data from a digital signature you can use PDFNet's SDF/Cos
API (http://www.pdftron.com/net/usermanual.html#sdf_objs). The
contents of your digital signature looks as follows:
<<
/SubFilter /adbe.pkcs7.detached
/Filter /Adobe.PPKLite
/Contents <...>
/M (D:20071018101743+02'00')
/Name (Joe Doe)
/ByteRange [0 143864 157854 7048 ]
/Prop_Build <<
/Filter <<
/Name /Adobe.PPKLite
/R 131101
/Date (Oct 22 2006 23:36:05)
>>
/App <<
/TrustedMode true
/OS[/Win]
/Name/Exchange-Pro
/R 524288
/REx(8.0.0)
>>
/PubSec <<
/R 131102
/Date (Oct 22 2006 23:30:44)
/NonEFontNoWarn true
>>
>>
/Type /Sig
To extract information required to identify which Acrobat version was
used for applying the signature you could use the following snippet:
Field field = pdfdoc.InteractiveFieldFind("MySig");
...
Obj form_dict = field.GetSDFObj();
// get signature value
Obj dig_sig = form_dict.FindObj("V");
if (dig_sig != null) {
// Access any key/value pair...
// See Section 8.7 'Digital Signatures' in PDF Reference.
string app_name = "";
string version = "";
Obj prop_dict = dig_sig.FindObj("Prop_Build");
if (prop_dict != null) {
Obj app = prop_dict.FindObj("App");
if (app != null) {
Obj aname = app.FindObj("Name");
if (aname != null) {
app_name = aname.GetName();
}
Obj ver = app.FindObj("REx");
if (ver != null) {
version = aname.GetAsPDFText();
}
}
}
}
app_name should be: "Exchange-Pro"
version should be "8.0.0"