Sample code for 30+ languages & platforms
DataFlex

Sign PDF using PAdES-Baseline-B

See more PDF Signatures Examples

PAdES-Baseline-B is the most basic, entry-level profile of the PDF Advanced Electronic Signatures (PAdES) standard.

It means:

  • A PDF contains a CMS/PKCS#7 detached signature over the document’s byte range.
  • /SubFilter must be ETSI.CAdES.detached.
  • The signer’s X.509 certificate is included inside the signature.
  • The signature uses recognized secure algorithms (e.g., SHA-256 with RSA/ECDSA).
  • It proves document integrity (no changes since signing) and signer authenticity (certificate identifies who signed).
  • It does not include time-stamps, revocation data (CRL/OCSP), or long-term validation information — those appear only in higher levels (PAdES-Baseline-T, -LT, -LTA).

In short: Baseline-B = a standard PDF digital signature that ensures integrity and origin, but without time or revocation guarantees.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoPdf
    Variant vJson
    Handle hoJson
    Variant vCert
    Handle hoCert
    String sOutFilePath
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatPdf)) To hoPdf
    If (Not(IsComObjectCreated(hoPdf))) Begin
        Send CreateComObject of hoPdf
    End

    // Load a PDF to be signed.
    Get ComLoadFile Of hoPdf "c:/someDir/my.pdf" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPdf To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Options for signing are specified in JSON.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End

    Get ComUpdateString Of hoJson "subFilter" "/ETSI.CAdES.detached" To iSuccess
    Get ComUpdateBool Of hoJson "signingCertificateV2" True To iSuccess
    Get ComUpdateBool Of hoJson "signingTime" True To iSuccess
    Get ComUpdateString Of hoJson "signingAlgorithm" "pkcs" To iSuccess
    Get ComUpdateString Of hoJson "hashAlgorithm" "sha256" To iSuccess

    // -----------------------------------------------------------
    // The following JSON settings define the signature appearance.
    Get ComUpdateInt Of hoJson "page" 1 To iSuccess
    Get ComUpdateString Of hoJson "appearance.y" "top" To iSuccess
    Get ComUpdateString Of hoJson "appearance.x" "left" To iSuccess
    Get ComUpdateString Of hoJson "appearance.fontScale" "10.0" To iSuccess
    Get ComUpdateString Of hoJson "appearance.text[0]" "Digitally signed by: cert_cn" To iSuccess
    Get ComUpdateString Of hoJson "appearance.text[1]" "current_dt" To iSuccess
    Get ComUpdateString Of hoJson "appearance.text[2]" "Hello 123 ABC" To iSuccess

    // --------------------------------------------------------------
    // Load the signing certificate. (Use your own certificate.)
    // Note: There are other methods for using a certificate on an HSM (smartcard or token)
    // or from other sources, such as a cloud HSM, a Windows installed certificate,
    // or other file formats.
    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get ComLoadPfxFile Of hoCert "c:/myPfxFiles/myPdfSigningCert.pfx" "pfxPassword" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Once we have the certificate object, tell the PDF object to use it for signing
    Get pvComObject of hoCert to vCert
    Get ComSetSigningCert Of hoPdf vCert To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPdf To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Sign the PDF, creating the output file.
    Move "c:/someDir/mySigned.pdf" To sOutFilePath
    Get pvComObject of hoJson to vJson
    Get ComSignPdf Of hoPdf vJson sOutFilePath To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPdf To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Success."


End_Procedure