Sample code for 30+ languages & platforms
PureBasic

RSA Sign Using Private Key from .pfx/.p12 to Base64 Signature

See more RSA Examples

Demonstrates how to RSA sign something using a private key loaded from a .pfx/.p12. The RSA signature is returned in Base64 encoded format.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkPfx.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkRsa.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Load the .pfx/.p12
    pfx.i = CkPfx::ckCreate()
    If pfx.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkPfx::ckLoadPfxFile(pfx,"qa_data/pfx/myKey.p12","myPassword")
    If success = 0
        Debug CkPfx::ckLastErrorText(pfx)
        CkRsa::ckDispose(rsa)
        CkPfx::ckDispose(pfx)
        ProcedureReturn
    EndIf

    ; Get the default private key.

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

    success = CkPfx::ckPrivateKeyAt(pfx,0,privKey)
    If success = 0
        Debug CkPfx::ckLastErrorText(pfx)
        CkRsa::ckDispose(rsa)
        CkPfx::ckDispose(pfx)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

    ; Import the private key into the RSA component:
    success = CkRsa::ckUsePrivateKey(rsa,privKey)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkRsa::ckDispose(rsa)
        CkPfx::ckDispose(pfx)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

    ; Get the signature in base64
    CkRsa::setCkEncodingMode(rsa, "base64")

    strData.s = "This is the string to be signed."

    ; Sign the string using the sha256 hash algorithm.
    ; Other valid choices are "sha384", "sha512", "sha-1", "md2" and "md5".
    base64Sig.s = CkRsa::ckSignStringENC(rsa,strData,"sha256")

    Debug base64Sig

    Debug "Success!"


    CkRsa::ckDispose(rsa)
    CkPfx::ckDispose(pfx)
    CkPrivateKey::ckDispose(privKey)


    ProcedureReturn
EndProcedure