Sample code for 30+ languages & platforms
PureBasic

Duplicate openssl dgst -md5 -sign myKey.pem something.txt | openssl enc -base64 -A

See more RSA Examples

Demonstrates how to duplicate the creation of an RSA signature produced by this OpenSSL command:
openssl dgst -md5 -sign myKey.pem something.txt | openssl enc -base64 -A

Chilkat PureBasic Downloads

PureBasic
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.

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

    ; Load the private key from an RSA PEM file:
    success = CkPrivateKey::ckLoadPemFile(pkey,"myKey.pem")

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

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

    ; OpenSSL uses BigEndian byte ordering:
    CkRsa::setCkLittleEndian(rsa, 0)

    ; The resulting signature will be a Base64 string:
    CkRsa::setCkEncodingMode(rsa, "base64")

    ; For simplicity, we're not loading
    ; the data to be signed from a file.  We are instead simply
    ; using a literal string value.  
    strData.s = "This is the text to be signed."

    ; Hash the input using MD5, and then sign the hash:
    ; Other valid hash algorithm choices are "md2" and "sha-1".
    base64Sig.s = CkRsa::ckSignStringENC(rsa,strData,"md5")

    Debug base64Sig

    Debug "Success!"


    CkPrivateKey::ckDispose(pkey)
    CkRsa::ckDispose(rsa)


    ProcedureReturn
EndProcedure