DataFlex
DataFlex
Create Egypt ITIDA CAdES-BES .p7s Signature (File to File)
See more Egypt ITIDA Examples
Demonstrates how to create a .p7s signature that fits Egypt's ITIDA requirements.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCrypt
Variant vCert
Handle hoCert
Handle hoCmsOptions
Handle hoJsonSigningAttrs
String sPathOfFileToSign
String sOutputPath
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
// There are many ways to load the certificate.
// This example was created for a customer using an ePass2003 USB token.
// Assuming the USB token is the only source of a hardware-based private key..
Get ComLoadFromSmartcard Of hoCert "" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Tell the crypt component to use this cert.
Get pvComObject of hoCert to vCert
Get ComSetSigningCert Of hoCrypt vCert To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCrypt To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatJsonObject)) To hoCmsOptions
If (Not(IsComObjectCreated(hoCmsOptions))) Begin
Send CreateComObject of hoCmsOptions
End
Get ComUpdateBool Of hoCmsOptions "DigestData" True To iSuccess
Get ComUpdateBool Of hoCmsOptions "OmitAlgorithmIdNull" True To iSuccess
Get ComEmit Of hoCmsOptions To sTemp1
Set ComCmsOptions Of hoCrypt To sTemp1
// The CadesEnabled property applies to all methods that create CMS/PKCS7 signatures.
// To create a CAdES-BES signature, set this property equal to true.
Set ComCadesEnabled Of hoCrypt To True
Set ComHashAlgorithm Of hoCrypt To "sha256"
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonSigningAttrs
If (Not(IsComObjectCreated(hoJsonSigningAttrs))) Begin
Send CreateComObject of hoJsonSigningAttrs
End
Get ComUpdateInt Of hoJsonSigningAttrs "contentType" 1 To iSuccess
Get ComUpdateInt Of hoJsonSigningAttrs "signingTime" 1 To iSuccess
Get ComUpdateInt Of hoJsonSigningAttrs "messageDigest" 1 To iSuccess
Get ComUpdateInt Of hoJsonSigningAttrs "signingCertificateV2" 1 To iSuccess
Get ComEmit Of hoJsonSigningAttrs To sTemp1
Set ComSigningAttributes Of hoCrypt To sTemp1
// By default, all the certs in the chain of authentication are included in the signature.
// If desired, we can choose to only include the signing certificate:
Set ComIncludeCertChain Of hoCrypt To False
// Make sure we sign the utf-8 byte representation of the JSON string
Set ComCharset Of hoCrypt To "utf-8"
// Create the CAdES-BES signature, which does not contain the data being signed.
Move "someDir/someFile" To sPathOfFileToSign
Move "outDir/someFile.p7s" To sOutputPath
Get ComCreateP7S Of hoCrypt sPathOfFileToSign sOutputPath To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoCrypt To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Success!"
End_Procedure