Delphi DLL Requires Chilkat v11.0.0+
Delphi DLL
Workaround for the deprecated Crypt2.SignBytes method
Shows how to replace the deprecated SignBytes method. (Chilkat is moving away from the use of CkByteData.)Chilkat Delphi DLL Downloads
var
success: Boolean;
crypt: HCkCrypt2;
cert: HCkCert;
path: PWideChar;
inData: HCkByteData;
outData: HCkByteData;
bdIn: HCkBinData;
base64_sig: PWideChar;
bdSig: HCkBinData;
begin
success := False;
crypt := CkCrypt2_Create();
cert := CkCert_Create();
// ...
// Load the cert from a source such as a .pfx/.p12 file, smart card, USB token, Apple keychain, Windows certificate store, etc.
//
success := CkCrypt2_SetSigningCert(crypt,cert);
CkCrypt2_putHashAlgorithm(crypt,'sha256');
path := 'c:/someDir/example.dat';
// ------------------------------------------------------------------------
// The SignBytes method is deprecated:
inData := CkByteData_Create();
CkByteData_loadFile(inData,path);
outData := CkByteData_Create();
success := CkCrypt2_SignBytes(crypt,inData,outData);
// ------------------------------------------------------------------------
// Workaround.
// (Chilkat is moving away from using CkByteData)
bdIn := CkBinData_Create();
CkBinData_LoadFile(bdIn,path);
CkCrypt2_putEncodingMode(crypt,'base64');
base64_sig := CkCrypt2__signBdENC(crypt,bdIn);
// If you want to access the bytes...
bdSig := CkBinData_Create();
CkBinData_AppendEncoded(bdSig,base64_sig,'base64');
CkCrypt2_Dispose(crypt);
CkCert_Dispose(cert);
CkByteData_Dispose(inData);
CkByteData_Dispose(outData);
CkBinData_Dispose(bdIn);
CkBinData_Dispose(bdSig);