Sample code for 30+ languages & platforms
PureBasic

RSA Sign using Base64 Private Key

See more RSA Examples

Signs a string using a non-encrypted RSA private key in base64 encoding. Returns the RSA signature as a base64 string.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkRsa.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

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

    CkStringBuilder::ckAppendLine(sbPem,"-----BEGIN RSA PRIVATE KEY-----",1)
    CkStringBuilder::ckAppendLine(sbPem,"MIIC .... j5A==",1)
    CkStringBuilder::ckAppendLine(sbPem,"-----END RSA PRIVATE KEY-----",1)

    success = CkPrivateKey::ckLoadPem(privKey,CkStringBuilder::ckGetAsString(sbPem))
    If success = 0
        Debug CkPrivateKey::ckLastErrorText(privKey)
        CkPrivateKey::ckDispose(privKey)
        CkStringBuilder::ckDispose(sbPem)
        ProcedureReturn
    EndIf

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

    success = CkRsa::ckUsePrivateKey(rsa,privKey)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkPrivateKey::ckDispose(privKey)
        CkStringBuilder::ckDispose(sbPem)
        CkRsa::ckDispose(rsa)
        ProcedureReturn
    EndIf

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

    CkBinData::ckAppendString(bd,"12345678","utf-8")

    success = CkRsa::ckSignRawBd(rsa,bd)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkPrivateKey::ckDispose(privKey)
        CkStringBuilder::ckDispose(sbPem)
        CkRsa::ckDispose(rsa)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    ; Get the base64 RSA signature.
    Debug CkBinData::ckGetEncoded(bd,"base64")

    success = CkRsa::ckVerifyRawBd(rsa,bd)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkPrivateKey::ckDispose(privKey)
        CkStringBuilder::ckDispose(sbPem)
        CkRsa::ckDispose(rsa)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    strOriginal.s = CkBinData::ckGetString(bd,"utf-8")
    Debug strOriginal


    CkPrivateKey::ckDispose(privKey)
    CkStringBuilder::ckDispose(sbPem)
    CkRsa::ckDispose(rsa)
    CkBinData::ckDispose(bd)


    ProcedureReturn
EndProcedure