ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

This content has been translated automatically.  Click here  to view the French version.
Help / WLanguage / WLanguage functions / Standard functions / Certificate functions
  • Validity of certificate (syntax 1)
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
Creates the signature of a character string.
WINDEVUser code (UMC)
// String signature according to a certificate installed on the computer 
// Warning: this syntax uses a variable of type Certificate. 
// This syntax is not compatible with the compliance 
// of accounting software (NF525 standard).
// The example corresponding to the NF525 standard is available in 
// the additional examples

MyCertificate is Certificate

// Open the certificate picker of Windows
MyCertificate = CertificateSelect()
// Cancellation or error
IF MyCertificate.Name = "" THEN
	RETURN
END

// Checks the certificate validity for the signature
IF MyCertificate.ValidForSignature = False THEN
	Info("The selected certificate cannot be used to generate a signature.")
	RETURN
END

// Retrieve the buffer containing the signature
bufSignature is Buffer
bufSignature = CertificateSignString("Character string to sign", MyCertificate)

// Retrieve the certificate found in the signature buffer
MyExtractedCertificate is Certificate
MyExtractedCertificate = CertificateExtract(buffSignature)

// Manage the errors
IF MyExtractedCertificate = Null THEN
	RETURN
END

// Open the window for certificate properties
CertificateOpenProperties(MyExtractedCertificate)
Syntax
WINDEVLinuxUser code (UMC)

Signing a string via a Certificate variable Hide the details

<Result> = CertificateSignString(<String to Sign> , <Certificate>)
<Result>: Buffer
Signature of string (in PKCS7 format (DER)). This buffer can be used later by CertificateCheckString to check the correspondence between the signature and the string.
<String to Sign>: Ansi or Unicode character string or Buffer
Character string to sign.
<Certificate>: Certificate variable
Name of the Certificate variable containing the certificate that will be used to sign the string.

Signing a string via a numeric signature Hide the details

<Result> = CertificateSignString(<String to Sign> , <Certificate file> , <Password> , <Option>)
<Result>: Buffer
Signature of string (in requested format). This buffer can be used later by CertificateCheckString to check the correspondence between the signature and the string.
<String to Sign>: Ansi or Unicode character string or Buffer
Character string to sign.
<Certificate file>: Character string or Buffer
  • Full path to a PKCS12 file (.p12/.pfx) containing the private key and the certificates. This file can be included in the application library (WDL file).
  • Buffer containing the private key and certificates.
    If the certSignatureOnly constant is used, this buffer can contain only the private key.
<Password>: Character string or Secret string
Password that will be used to decrypt the certificate file if this one is password-protected.
New in version 2025
Secret strings: If you use the secret string vault, the type of secret string used for this parameter must be "Ansi or Unicode string".
To learn more about secret strings and how to use the vault, see Secret string vault.
<Option>: Integer constant (or combination of constants)
Allows you to specify:
  • the hashing algorithm used (optional for a signature in PKCS7 format):
    certMD5MD5 algorithm.
    Not recommended because unreliable. This type of algorithm is not allowed with the "elliptic curve" signatures.
    certSHA160SHA1 algorithm.
    certSHA256SHA2 algorithm. A 256-bit result is produced.
    certSHA384SHA-384 algorithm. A 384-bit result is produced.
    This type of algorithm is not supported by the "DSA" signatures.
    certSHA512SHA-512 algorithm. A 512-bit result is produced.
    This type of algorithm is not supported by the "DSA" signatures.
  • the signature format:
    certPKCS7EnvelopedContainer in PKCS7 format (DER) containing the signature, the string of certificates and the signed data.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certPKCS7Enveloped + certPKCS7PEMContainer in PKCS7 format (PEM) containing the signature, the string of certificates and the signed data.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certPKCS7WithCertificateContainer in PKCS7 format (DER) containing the signature and the string of certificates.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certPKCS7WithCertificate + certPKCS7PEMContainer in PKCS7 format (PEM) containing the signature and the string of certificates.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certPKCS7WithoutCertificateContainer in PKCS7 format (DER) containing the signature.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certPKCS7WithoutCertificate + certPKCS7PEMContainer in PKCS7 format (PEM) containing the signature.
    Note: if this constant is used, the hash algorithm is optional. If it is not specified, an appropriate algorithm will be automatically chosen.
    certSignatureOnlyThe output contains only the raw signature, without any container.
    This options is required for the compliance of accountancy software (NF525 standard). With this option, only the key section of PFX file will be used (the certificate section containing the date will not be used).
    Caution: if this constant is used, the hash algorithm must be specified.
Note: The signature algorithm is determined by the private key (RSA, DSA, Elliptic curve)..
Remarks

Validity of certificate (syntax 1)

Before signing a string, it is recommended to check the validity of the certificate (ValidForSignature property of the Certificate variable). This property is used to find out whether the certificate owns a private key as well as all the characteristics required to perform a signature. CertificateSignString returns an error if this property is set to False.
Business / UI classification: Business Logic
Component: wd300std.dll
Minimum version required
  • Version 16
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 11/23/2024

Send a report | Local help