HI experts,
we have a requirement to verify digital certificate while printing invoice. we have configured certificate in TRUST MANAGER and PSE is generated.
Below is my code
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:\test\pse\cer.pse'
FILETYPE = 'BIN'
* HAS_FIELD_SEPARATOR = ' '
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
DATA_TAB = it_data
* EXCEPTIONS
* FILE_OPEN_ERROR = 1
* FILE_READ_ERROR = 2
* NO_BATCH = 3
* GUI_REFUSE_FILETRANSFER = 4
* INVALID_TYPE = 5
* NO_AUTHORITY = 6
* UNKNOWN_ERROR = 7
* BAD_DATA_FORMAT = 8
* HEADER_NOT_ALLOWED = 9
* SEPARATOR_NOT_ALLOWED = 10
* HEADER_TOO_LONG = 11
* UNKNOWN_DP_ERROR = 12
* ACCESS_DENIED = 13
* DP_OUT_OF_MEMORY = 14
* DISK_FULL = 15
* DP_TIMEOUT = 16
* OTHERS = 17
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
DATA: l_SSFTOOLKIT LIKE SSFPARMS-SSFTOOLKIT,
l_SSFFORMAT LIKE SSFPARMS-SSFFORMAT.
data:l_pab TYPE ssfparms-pab,
l_pabpw TYPE ssfparms-pabpw,
signer_info_tab TYPE ssfinfo OCCURS 0,
output_data_l type SSFPARMS-OUTDATALEN,
l_crc type SSFPARMS-SSFCRC .
CALL FUNCTION 'SSF_GET_PARAMETER'
EXPORTING
APPLICATION = 'ZMYAPP'
IMPORTING
SSFTOOLKIT = l_SSFTOOLKIT
STR_FORMAT = l_SSFFORMAT
str_pab = l_pab
str_pab_password = l_pabpw
EXCEPTIONS
ssf_parameter_not_found = 1
OTHERS = 2.
CALL FUNCTION 'SSF_KRN_VERIFY'
EXPORTING
SSFTOOLKIT = l_SSFTOOLKIT
STR_FORMAT = l_SSFFORMAT
b_inc_certs = 'X'
* b_inenc = 'X'
B_OUTDEC = 'X'
* IO_SPEC = 'T'
ostr_signed_data_l = '1024'"datalen "signed_data_l
* ostr_input_data_l = “detached only
str_pab = l_pab
str_pab_password = l_pabpw
IMPORTING
OSTR_OUTPUT_DATA_L = output_data_l
CRC = l_crc
TABLES
ostr_signed_data = it_data
* ostr_input_data = “ detached only
signer_result_list = signer_info_tab
ostr_output_data = out_data
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_nossflib = 5
ssf_krn_input_data_error = 6
ssf_krn_invalid_par = 7
ssf_krn_invalid_parlen = 8
ssf_fb_input_parameter_error = 9
OTHERS = 10.
IF SY-SUBRC <> 0 .
* Implement suitable error handling here
MESSAGE 'FAILED' TYPE 'I'.
else.
if l_crc <> 0.
MESSAGE 'FAILED' TYPE 'I'.
else.
MESSAGE 'VERIFIED' TYPE 'S'.
endif.
ENDIF.