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