cancel
Showing results for 
Search instead for 
Did you mean: 

File is no valid PGP Message, could not apply decryption

Usharsree_7999
Participant
0 Kudos

Dear SAP,

I wrote the below code to encrypt a .txt file into .gpg file.

OPEN DATASET v_dsnam5 FOR INPUT IN TEXT MODE ENCODING DEFAULT.

* IGNORING CONVERSION ERRORS.

* v_msgv5 = v_dsnam5.

* IF sy-subrc GT 0.

* PERFORM set_bapireturn TABLES i_return

* USING c_error 'ZZFN' '302'

* v_msgv5 '' '' '' .

* ENDIF.

CHECK v_error IS INITIAL.

** WO/NW operations/activities data (excluding status)

data : lv_data TYPE string,

lv_str TYPE string.

data lv_key3 type string.

loop at i_wo_nw1 into lv_str.

if lv_data is INITIAL.

lv_data = lv_str.

else.

lv_data = |{ lv_data }{ cl_abap_char_utilities=>newline }{ lv_str }|.

endif.

endloop.

DATA:

lv_key TYPE xstring,

lv_key1 type string,

lt_key3 type table of c.

types: begin of str,

lv_st type string,

END OF str.

data wa_key type str.

data lv_key2 type xstring.

*lv_key = cl_sec_sxml_writer=>generate_key( algorithm = cl_sec_sxml_writer=>co_aes256_algorithm ).

*

*lv_key2 = cl_bcs_convert=>XSTRING_TO_STRING( IV_XSTR = lv_key ).

DO.

READ DATASET v_dsnam5 into lv_key1.

." in character mode.

lv_key3 = |{ lv_key3 }{ lv_key1 }|.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

ENDDO. .

DATA:

lv_data_xstr TYPE xstring,

lv_msg TYPE xstring.

data lv_iv type xstring.

lv_data_xstr = cl_bcs_convert=>string_to_xstring( iv_string = lv_data ).

CALL FUNCTION 'SCMS_BASE64_DECODE_STR'

EXPORTING

INPUT = lv_key3

* UNESCAPE = 'X'

IMPORTING

OUTPUT = lv_key2

EXCEPTIONS

FAILED = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

* Implement suitable error handling here

ENDIF.

* lv_key2 = lv_key3.

CALL METHOD CL_SEC_SXML_WRITER=>ENCRYPT

EXPORTING

PLAINTEXT = lv_data_xstr

KEY = lv_key2

ALGORITHM = CL_SEC_SXML_WRITER=>CO_AES256_ALGORITHM

IMPORTING

CIPHERTEXT = lv_msg.

DATA:

lv_str2 TYPE string.

*

data file_content type string.

call function 'SCMS_BASE64_ENCODE_STR'

exporting

input = lv_msg

importing

output = lv_str2.

DATA conv TYPE REF TO cl_abap_conv_in_ce.

data :lv_str4 type string,

lv_str5 type string.

lv_str4 = '-----BEGIN PGP MESSAGE-----'.

*lv_str2 = lv_msg.

lv_str5 = '-----END PGP MESSAGE-----' .

*CONCATENATE lv_str4 lv_str2 lv_str5 into lv_str2 SEPARATED BY CL_ABAP_CHAR_UTILITIES=>CR_LF.

data lt_str type table of string.

CALL FUNCTION 'CONVERT_STRING_TO_TABLE'

EXPORTING

i_string = lv_str2

i_tabline_length = 132

* I_UNICODE = 'X'

TABLES

et_table = lt_str.

TRANSFER lv_str4 TO v_dsnam1.

LOOP AT lt_str into lv_str2.

TRANSFER lv_str2 TO v_dsnam1.

ENDLOOP.

TRANSFER lv_str5 TO v_dsnam1.

But after all this codee, I get a message in PI that this is not a valid PGP message,.

Please advise.

Thanks,

Ushasri,

Usharsree_7999
Participant
0 Kudos

Dear SAP,

I wrote the below code to encrypt a .txt file into .gpg file.

OPEN DATASET v_dsnam5 FOR INPUT IN TEXT MODE ENCODING DEFAULT. "read key

* IGNORING CONVERSION ERRORS.

* v_msgv5 = v_dsnam5.

* IF sy-subrc GT 0.

* PERFORM set_bapireturn TABLES i_return

* USING c_error 'ZZFN' '302'

* v_msgv5 '' '' '' .

* ENDIF.

CHECK v_error IS INITIAL.

** WO/NW operations/activities data (excluding status)

data : lv_data TYPE string,

lv_str TYPE string.

data lv_key3 type string.

loop at i_wo_nw1 into lv_str.

if lv_data is INITIAL.

lv_data = lv_str.

else.

lv_data = |{ lv_data }{ cl_abap_char_utilities=>newline }{ lv_str }|. "original file

endif.

endloop.

DATA:

lv_key TYPE xstring,

lv_key1 type string,

lt_key3 type table of c.

types: begin of str,

lv_st type string,

END OF str.

data wa_key type str.

data lv_key2 type xstring.

*lv_key = cl_sec_sxml_writer=>generate_key( algorithm = cl_sec_sxml_writer=>co_aes256_algorithm ).

*

*lv_key2 = cl_bcs_convert=>XSTRING_TO_STRING( IV_XSTR = lv_key ).

DO.

READ DATASET v_dsnam5 into lv_key1. "reading key

." in character mode.

lv_key3 = |{ lv_key3 }{ lv_key1 }|.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

ENDDO. .

DATA:

lv_data_xstr TYPE xstring,

lv_msg TYPE xstring.

data lv_iv type xstring.

lv_data_xstr = cl_bcs_convert=>string_to_xstring( iv_string = lv_data ). "converting file to text

CALL FUNCTION 'SCMS_BASE64_DECODE_STR'

EXPORTING

INPUT = lv_key3

* UNESCAPE = 'X'

IMPORTING

OUTPUT = lv_key2

EXCEPTIONS

FAILED = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

* Implement suitable error handling here

ENDIF.

* lv_key2 = lv_key3.

CALL METHOD CL_SEC_SXML_WRITER=>ENCRYPT "encrypting file

EXPORTING

PLAINTEXT = lv_data_xstr

KEY = lv_key2

ALGORITHM = CL_SEC_SXML_WRITER=>CO_AES256_ALGORITHM

IMPORTING

CIPHERTEXT = lv_msg.

DATA:

lv_str2 TYPE string.

*

data file_content type string.

call function 'SCMS_BASE64_ENCODE_STR'

exporting

input = lv_msg

importing

output = lv_str2.

DATA conv TYPE REF TO cl_abap_conv_in_ce.

data :lv_str4 type string,

lv_str5 type string.

lv_str4 = '-----BEGIN PGP MESSAGE-----'.

*lv_str2 = lv_msg.

lv_str5 = '-----END PGP MESSAGE-----' .

*CONCATENATE lv_str4 lv_str2 lv_str5 into lv_str2 SEPARATED BY CL_ABAP_CHAR_UTILITIES=>CR_LF.

data lt_str type table of string.

CALL FUNCTION 'CONVERT_STRING_TO_TABLE'

EXPORTING

i_string = lv_str2

i_tabline_length = 132

* I_UNICODE = 'X'

TABLES

et_table = lt_str.

TRANSFER lv_str4 TO v_dsnam1.

LOOP AT lt_str into lv_str2.

TRANSFER lv_str2 TO v_dsnam1.

ENDLOOP.

TRANSFER lv_str5 TO v_dsnam1.

But after all this codee, I get a message in PI that this is not a valid PGP message,.

Please advise.

Thanks,

Ushasri,

Former Member
0 Kudos

Post your code as CODE.

"ABAP Development" will be much more appropriate tag.

Putting something between BEGIN PGP MESSAGE and END PGP MESSAGE is not making it PGP message.

Accepted Solutions (0)

Answers (0)