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