AsymmetricVerifySign

Description

Verifies the signature of the data with asymmetric algorithm.

Applies to

CrypterObject objects

Syntax

crypter.AsymmetricVerifySign ( algorithm, variable, pubKey, sign)

Argument

Description

crypter

The name of the CrypterObject object

algorithm

A value of the AsymmetricAlgorithm enumerated type that specifies the type of asymmetric algorithm.

Values are:

  • RSA! – The Rivest-Shamir-Adleman cryptopsystem

  • DSA! – The Digital Signature Algorithm. It is designed to be used in signature, not in encryption and decryption.

  • Rabin! – The Rabin Algorithm

variable

A blob whose value is the data you want to verify with Public-Key cipher.

When using the system blob function to convert a string to a blob, it is recommended to specify its encoding argument to be EncodingANSI! (for English characters only) or EncodingUTF8!, otherwise, the default EncodingUTF16LE! will be used.

pubKey

A blob specifying the public key.

sign

A blob specifying the signature.


Return value

Integer. Returns 1 if it succeeds and -1 if it failed. If any argument's value is null, the method returns null. If an error occurs, throw the exception.

Usage

The asymmetric encryption and signature verification functions in the CrypterObject are based on Crypto++, and their key format differs from common standards (e.g., OpenSSL, .NET). As a result, functions such as AsymmetricVerifySign cannot be used for validating tokens or digital signatures generated outside PowerBuilder.

If you require token validation or cross-platform interoperability, we recommend either:

  • Performing the validation on the authorization server, or

  • Using PowerBuilder's Call .NET Assembly feature to execute .NET cryptographic code

Examples

This statement signs the data with RAS and validates the signature.

Blob lblb_data
Blob lblb_privKey
Blob lblb_pubKey
Blob lblb_signature
Integer li_isPass

lblb_data = Blob("Test Rsa", EncodingANSI!)

CrypterObject lnv_CrypterObject
lnv_CrypterObject = Create CrypterObject

// Generate the private key
lnv_CrypterObject.AsymmetricGenerateKey(RSA!, 1024, lblb_privKey, lblb_pubKey)

// Sign data with RSA
lblb_signature = lnv_CrypterObject.AsymmetricSign(RSA!, lblb_data, lblb_privKey)

// Validate the RSA signature
li_isPass = lnv_CrypterObject.AsymmetricVerifySign(RSA!, lblb_data, lblb_pubKey, lblb_signature)
if li_isPass = 1 then
	messagebox("Success", "Verification succeeded!")
else
	messagebox("Error", "Verification failed!")
end if

See also

SymmetricEncrypt

SymmetricDecrypt

SymmetricGenerateKey

AsymmetricEncrypt

AsymmetricDecrypt

AsymmetricSign

AsymmetricGenerateKey

MD5

SHA

HMAC