MAIN

DEFINE keyfile CHAR(40)
DEFINE certfile CHAR(40)
DEFINE data varchar(50)

DEFINE lv_seal CHAR(2048)
DEFINE lv_seal_size INT

DEFINE lv_err int

LET certfile =  "cert.pem"
LET keyfile  = "key.pem"
LET data     = "I owe you..."

CALL A4GL_ssl::get_privatekey(keyfile) RETURNING lv_err
IF lv_err != 1 THEN
    DISPLAY "error private key"
	CALL A4GL_ssl::print_errors()
    EXIT PROGRAM -1
END IF
CALL A4GL_ssl::sign(data,length(data),"md5") RETURNING lv_err, lv_seal, lv_seal_size
IF lv_err != 1 THEN
    DISPLAY "error sign"
	CALL A4GL_ssl::print_errors()
    EXIT PROGRAM -2
END IF
CALL A4GL_ssl::free_key()
IF lv_err != 1 THEN
    DISPLAY "error free"
	CALL A4GL_ssl::print_errors()
    EXIT PROGRAM -3
END IF

CALL A4GL_ssl::get_publickey(certfile) RETURNING lv_err
IF lv_err != 1 THEN
    DISPLAY "error get public key"
	CALL A4GL_ssl::print_errors()
    EXIT PROGRAM -4
END IF
LET lv_err =  A4GL_ssl::verify(lv_seal, lv_seal_size, data,length(data),"md5")
CALL A4GL_ssl::free_key()

IF lv_err != 1 THEN
    DISPLAY "Error in verify"
	CALL A4GL_ssl::print_errors()
    EXIT PROGRAM -5
ELSE
    DISPLAY "Signature Verified Ok."
END IF
END MAIN