Sample code for 30+ languages & platforms
PureBasic

PKCS7 Sign Text using RSA 2048, SHA256, Base64 Output

See more Digital Signatures Examples

Demonstrates how to sign text using 2048-bit RSA with SHA256, producing PKCS#7 output in Base64. The certificate w/ private key used for signing is loaded from a .p12/.pfx file.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCrypt2.pb"
IncludeFile "CkCert.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Load the cert and private key.  Whatever the private key happens to be,
    ; such as RSA or ECC, then Chilkat will use it.  If the private key is 
    ; a 2048-bit RSA key, then that's what will be used..
    success = CkCert::ckLoadPfxFile(cert,"qa_data/pfx/myCertAndKey.p12","password")
    If success <> 1
        Debug CkCert::ckLastErrorText(cert)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

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

    success = CkCrypt2::ckSetSigningCert(crypt,cert)
    If success <> 1
        Debug CkCrypt2::ckLastErrorText(crypt)
        CkCert::ckDispose(cert)
        CkCrypt2::ckDispose(crypt)
        ProcedureReturn
    EndIf

    ; Use SHA-256
    CkCrypt2::setCkHashAlgorithm(crypt, "sha256")

    ; Hash the utf-8 byte representation of the string
    CkCrypt2::setCkCharset(crypt, "utf-8")

    ; Return the result in base64
    CkCrypt2::setCkEncodingMode(crypt, "base64")

    ; Sign some text..
    textToSign.s = "This is the text to be hashed and signed."
    sigBase64.s = CkCrypt2::ckOpaqueSignStringENC(crypt,textToSign)
    If CkCrypt2::ckLastMethodSuccess(crypt) <> 1
        Debug CkCrypt2::ckLastErrorText(crypt)
        CkCert::ckDispose(cert)
        CkCrypt2::ckDispose(crypt)
        ProcedureReturn
    EndIf

    Debug sigBase64

    ; The result:
    ; MIIS2wYJKoZIhvcNAQc ... zGeeY4Oxg==


    CkCert::ckDispose(cert)
    CkCrypt2::ckDispose(crypt)


    ProcedureReturn
EndProcedure