How do I extract parameters from a digital signature field?

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"