Sample code for 30+ languages & platforms
PureBasic

Get PDF Signer Certs

See more PDF Signatures Examples

This example demonstrates how to validate the signatures in a PDF and also shows how to get

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCert.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkPdf.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    pdf.i = CkPdf::ckCreate()
    If pdf.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Load a PDF that has cryptographic signatures to be validated
    success = CkPdf::ckLoadFile(pdf,"qa_data/pdf/sign_testing_1/helloSigned2.pdf")
    If success = 0
        Debug CkPdf::ckLastErrorText(pdf)
        CkPdf::ckDispose(pdf)
        ProcedureReturn
    EndIf

    ; Each time we verify a signature, information about the signature is written into
    ; sigInfo (replacing whatever sigInfo previously contained).
    sigInfo.i = CkJsonObject::ckCreate()
    If sigInfo.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Iterate over each signature and validate each.
    numSignatures.i = CkPdf::ckNumSignatures(pdf)
    validated.i = 0
    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    i.i = 0
    While i < numSignatures
        validated = CkPdf::ckVerifySignature(pdf,i,sigInfo)
        Debug "Signature " + Str(i) + " validated: " + Str(validated)

        ; After calling VerifySignature, you can get the signer certificate by calling
        ; GetSignerCert with the same index. 
        success = CkPdf::ckGetSignerCert(pdf,i,cert)
        If success <> 0
            Debug "PDF signer certificate: " + CkCert::ckSubjectDN(cert)
        EndIf

        i = i + 1
    Wend

    Debug "Finished."


    CkPdf::ckDispose(pdf)
    CkJsonObject::ckDispose(sigInfo)
    CkCert::ckDispose(cert)


    ProcedureReturn
EndProcedure