Having a strange problem where Decryption is working in a batch job but not working in an interactive job. Anyone ever seen this ?
Announcement
Collapse
No announcement yet.
Decryption API's in ILE
Collapse
X
-
Re: Decryption API's in ILE
That seems odd....What is your jobd of the batch job.....Is it different than your interactive jobd? Just thinking it may be authority related --or-- a differenct library list in your batch job and there may be multiple version of the program/file(s)
JamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
-
Re: Decryption API's in ILE
checked it all. all the parameters going into the decrypt API are exactly the same for batch and interactive. all the parameters coming out of the decrypt API are exactly the same except the clear text key. it's correct for batch, incorrect for interactive.
Comment
-
Re: Decryption API's in ILE
Post the program (a subset) ill download recompile and see if I get the same....
JamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
-
Re: Decryption API's in ILE
here you go. thanks.
Code:D*------------------------------------------------------------------------* * * DATA STRUCTURE TO ENCRYPT DATA D DS D* clear data D ED_PARM1 1 1024 D* D* length of clear data D ED_PARM2 1025 1028B 0 D* D* clear data format name D ED_PARM3 1029 1036 D* D* algorithm description (see detail description below) D**ED_PARM4************1037 1136 D* D* algorithm description format name D ED_PARM5 1137 1144 D* D* key description (see detail description below) D**ED_PARM6************1145 1244 D* D* key description format name D ED_PARM7 1245 1252 D* D* cryptographic service provider D ED_PARM8 1253 1253 D* D* cryptographic device name D ED_PARM9 1254 1263 D* D* encrypted data (RETURNED) D ED_PARM10 1264 2287 D* D* length of area provided for encrypted data D ED_PARM11 2288 2291B 0 D* D* length of encrypted data return (RETURNED) D ED_PARM12 2292 2295B 0 D* D* error code D ED_PARM13 2296 2315 * DED_PARM4 DS D* D* block cipher algorithm D ED_PARM4_1 1 4B 0 D* D* block length D ED_PARM4_2 5 8B 0 D* D* mode D ED_PARM4_3 9 9 D* D* pad option D ED_PARM4_4 10 10 D* D* pad character D ED_PARM4_5 11 11 D* D* reserved D ED_PARM4_6 12 12 D* D* MAC length D ED_PARM4_7 13 16B 0 D* D* effective key size D ED_PARM4_8 17 20B 0 D* D* initialization vector D ED_PARM4_9 21 52 D ED_PARM4_9_1 21 21 D ED_PARM4_9_2 22 22 D ED_PARM4_9_3 23 23 D ED_PARM4_9_4 24 24 D ED_PARM4_9_5 25 25 D ED_PARM4_9_6 26 26 D ED_PARM4_9_7 27 27 D ED_PARM4_9_8 28 28 D ED_PARM4_9_9 29 29 D ED_PARM4_9_10 30 30 D ED_PARM4_9_11 31 31 D ED_PARM4_9_12 32 32 D ED_PARM4_9_13 33 33 D ED_PARM4_9_14 34 34 D ED_PARM4_9_15 35 35 D ED_PARM4_9_16 36 36 D ED_PARM4_9_17 37 37 D ED_PARM4_9_18 38 38 D ED_PARM4_9_19 39 39 D ED_PARM4_9_20 40 40 D ED_PARM4_9_21 41 41 D ED_PARM4_9_22 42 42 D ED_PARM4_9_23 43 43 D ED_PARM4_9_24 44 44 D ED_PARM4_9_25 45 45 D ED_PARM4_9_26 46 46 D ED_PARM4_9_27 47 47 D ED_PARM4_9_28 48 48 D ED_PARM4_9_29 49 49 D ED_PARM4_9_30 50 50 D ED_PARM4_9_31 51 51 D ED_PARM4_9_32 52 52 * DED_PARM6 DS D* D* key type D ED_PARM6_1 1 4B 0 D* D* key string length D ED_PARM6_2 5 8B 0 D* D* key format D ED_PARM6_3 9 9 D* D* reserved D ED_PARM6_4 10 12 D* D* key string D ED_PARM6_5 13 36 * ************************************************************************** * * DATA STRUCTURE FOR DECRYPT DATA D DS D* encrypted data D DD_PARM1 1 1024 D* D* length of encrypted data D DD_PARM2 1025 1028B 0 D* D* algorithm description (see detail description below) D**DD_PARM3************1029 1079 D* D* algorithm description format name D DD_PARM4 1080 1087 D* D* key description (see detail description below) D**DD_PARM5************1088 2111 D* D* key description format name D DD_PARM6 2112 2119 D* D* cryptographic service provider D DD_PARM7 2120 2120 D* D* cryptographic device name D DD_PARM8 2121 2130 D* D* clear data (RETURNED) D DD_PARM9 2131 3154 D* D* length of area provided for clear data D DD_PARM10 3155 3158B 0 D* D* length of clear data returned (RETURNED) D DD_PARM11 3159 3162B 0 D* D* error code 0160.00 D DD_PARM12 3163 3182 * DDD_PARM3 DS * D* block cipher algorithm D DD_PARM3_1 1 4B 0 * D* block length D DD_PARM3_2 5 8B 0 * D* mode D DD_PARM3_3 9 9 * D* pad option D DD_PARM3_4 10 10 * D* pad character D DD_PARM3_5 11 11 * * reserved D DD_PARM3_6 12 12 * D* MAC length D DD_PARM3_7 13 16B 0 * D* effective key size D DD_PARM3_8 17 20B 0 * D* initialization vector D DD_PARM3_9_1 21 21 D DD_PARM3_9_2 22 22 D DD_PARM3_9_3 23 23 D DD_PARM3_9_4 24 24 D DD_PARM3_9_5 25 25 D DD_PARM3_9_6 26 26 D DD_PARM3_9_7 27 27 D DD_PARM3_9_8 28 28 D DD_PARM3_9_9 29 29 D DD_PARM3_9_10 30 30 D DD_PARM3_9_11 31 31 D DD_PARM3_9_12 32 32 D DD_PARM3_9_13 33 33 D DD_PARM3_9_14 34 34 D DD_PARM3_9_15 35 35 D DD_PARM3_9_16 36 36 D DD_PARM3_9_17 37 37 D DD_PARM3_9_18 38 38 D DD_PARM3_9_19 39 39 D DD_PARM3_9_20 40 40 D DD_PARM3_9_21 41 41 D DD_PARM3_9_22 42 42 D DD_PARM3_9_23 43 43 D DD_PARM3_9_24 44 44 D DD_PARM3_9_25 45 45 D DD_PARM3_9_26 46 46 D DD_PARM3_9_27 47 47 D DD_PARM3_9_28 48 48 D DD_PARM3_9_29 49 49 D DD_PARM3_9_30 50 50 D DD_PARM3_9_31 51 51 D DD_PARM3_9_32 52 52 * DDD_PARM5 DS * D* key type D DD_PARM5_1 1 4B 0 * D* key string length D DD_PARM5_2 5 8B 0 * D* key format D DD_PARM5_3 9 9 * D* reserved D DD_PARM5_4 10 12 * D* key string D DD_PARM5_5 13 36 ************************************************************************ * *PLIST DESCRIPTION: * KEY_E_D 'E' OR 'D' TO EITHER ENCRYPT OR DECRYPT * CLEAR_KEY CONTAINS CLEAR KEY IF ENCRYPTING OR * IS BLANKS IF DECRYPTING AND WILL HAVE VALUE RETURNED * DURING DECRYPTION API HERE. * ENCTYPTED_KEY CONTAINS ENCRYPTED KEY IF DECRYPTING OR * IS BLANKS IF ENCRYPTING AND WILL HAVE VALUE RETURNED * DURING ENCRYPTION API HERE. * CLR_KEY_LEN CONTAINS CLEAR KEY LENGTH IF ENCRYPTING OR * IS BLANKS IF DECRYPTING AND WILL HAVE VALUE RETURNED * DURING DECRYPTION API HERE. * EC_KEY_LEN CONTAINS ENCRYPTED KEY LENGTH IF DECRYPTING OR * IS BLANKS IF ENCRYPTING AND WILL HAVE VALUE RETURNED * DURING ENCRYPTION API HERE. * ERRORCODE IS BLANKS INITIALLY AND WILL HAVE ERROR CODE RETURNED * IF ALI ENCOUNTERS AN ERROR * C *ENTRY PLIST C PARM KEY_E_D 1 C PARM CLEAR_KEY 1024 C PARM ENCTYPTED_KEY 1024 C PARM CLR_KEY_LEN 4 C PARM EC_KEY_LEN 4 C PARM ERRORCODE 20 * ***************************************************************** * PROCESS IF PROGRAM NEEDS TO ENCRYPT DATA C KEY_E_D IFEQ 'E' * C MOVEL CLEAR_KEY ED_PARM1 C CLEAR ED_PARM2 C MOVE CLR_KEY_LEN ED_PARM2 C MOVEL 'DATA0100' ED_PARM3 C CLEAR ED_PARM4_1 C Z-ADD 22 ED_PARM4_1 C CLEAR ED_PARM4_2 C Z-ADD 32 ED_PARM4_2 C MOVEL '0' ED_PARM4_3 C MOVEL '0' ED_PARM4_4 C MOVEL X'00' ED_PARM4_5 C MOVEL X'00' ED_PARM4_6 C CLEAR ED_PARM4_7 C MOVEL *BLANKS ED_PARM4_7 C CLEAR ED_PARM4_8 C Z-ADD 0 ED_PARM4_8 C MOVEL X'00' ED_PARM4_9_1 C MOVEL X'00' ED_PARM4_9_2 C MOVEL X'00' ED_PARM4_9_3 C MOVEL X'00' ED_PARM4_9_4 C MOVEL X'00' ED_PARM4_9_5 C MOVEL X'00' ED_PARM4_9_6 C MOVEL X'00' ED_PARM4_9_7 C MOVEL X'00' ED_PARM4_9_8 C MOVEL X'00' ED_PARM4_9_9 C MOVEL X'00' ED_PARM4_9_10 C MOVEL X'00' ED_PARM4_9_11 C MOVEL X'00' ED_PARM4_9_12 C MOVEL X'00' ED_PARM4_9_13 C MOVEL X'00' ED_PARM4_9_14 C MOVEL X'00' ED_PARM4_9_15 C MOVEL X'00' ED_PARM4_9_16 C MOVEL X'00' ED_PARM4_9_17 C MOVEL X'00' ED_PARM4_9_18 C MOVEL X'00' ED_PARM4_9_19 C MOVEL X'00' ED_PARM4_9_20 C MOVEL X'00' ED_PARM4_9_21 C MOVEL X'00' ED_PARM4_9_22 C MOVEL X'00' ED_PARM4_9_23 C MOVEL X'00' ED_PARM4_9_24 C MOVEL X'00' ED_PARM4_9_25 C MOVEL X'00' ED_PARM4_9_26 C MOVEL X'00' ED_PARM4_9_27 C MOVEL X'00' ED_PARM4_9_28 C MOVEL X'00' ED_PARM4_9_29 C MOVEL X'00' ED_PARM4_9_30 C MOVEL X'00' ED_PARM4_9_31 C MOVEL X'00' ED_PARM4_9_32 C MOVEL 'ALGD0200' ED_PARM5 C CLEAR ED_PARM6_1 C Z-ADD 22 ED_PARM6_1 C CLEAR ED_PARM6_2 C Z-ADD 32 ED_PARM6_2 C MOVEL '0' ED_PARM6_3 C MOVEL X'00' ED_PARM6_4 C MOVE MK ED_PARM6_5 C MOVEL 'KEYD0200' ED_PARM7 C MOVEL '0' ED_PARM8 C MOVEL *BLANKS ED_PARM9 C MOVEL *BLANKS ED_PARM10 C CLEAR ED_PARM11 C Z-ADD 1024 ED_PARM11 C CLEAR ED_PARM12 C MOVEL *BLANKS ED_PARM12 C MOVEL *BLANKS ED_PARM13 * C* C CALL 'QC3ENCDT' * * CLEAR DATA C PARM ED_PARM1 * * LENGTH OF CLEAR DATA C PARM ED_PARM2 * * CLEAR DATA FORMAT NAME C PARM ED_PARM3 * * ALGORITHM DESCRIPTION C PARM ED_PARM4 * * ALGORITHM DESCRIPTION FORMAT NAME C PARM ED_PARM5 * * KEY DESCRIPTION * (INCLUDES THE MASTER KEY) C PARM ED_PARM6 * * KEY DESCRIPTION FORMAT NAME C PARM ED_PARM7 * * CRYPTOGRAPHIC SERVICE PROVIDER C PARM ED_PARM8 * * CRYPTOGRAPHIC DEVICE NAME C PARM ED_PARM9 * * ENCRYPTED DATA (OUTPUT) C PARM ED_PARM10 * * LENGTH OF AREA PROVIDED FOR ENCRYPTED DATA C PARM ED_PARM11 * * LENGTH OF ENCRYPTED DATA RETURNED (OUTPUT) C PARM ED_PARM12 * * ERROR CODE C PARM ED_PARM13 * C MOVEL ED_PARM10 ENCTYPTED_KEY C MOVE ED_PARM12 EC_KEY_LEN C MOVE ED_PARM13 ERRORCODE * C END ******************************************************* * PROCESS IF PROGRAM NEEDS TO DECRYPT DATA C KEY_E_D IFEQ 'D' C* C MOVEL ENCTYPTED_KEY DD_PARM1 C CLEAR DD_PARM2 C MOVE EC_KEY_LEN DD_PARM2 C CLEAR DD_PARM3_1 C Z-ADD 22 DD_PARM3_1 C CLEAR DD_PARM3_2 C Z-ADD 32 DD_PARM3_2 C MOVEL '0' DD_PARM3_3 C MOVEL '0' DD_PARM3_4 C MOVEL X'00' DD_PARM3_5 C MOVEL X'00' DD_PARM3_6 C CLEAR DD_PARM3_7 C MOVEL *BLANKS DD_PARM3_7 C CLEAR DD_PARM3_8 C Z-ADD 0 DD_PARM3_8 C MOVEL X'00' DD_PARM3_9_1 C MOVEL X'00' DD_PARM3_9_2 C MOVEL X'00' DD_PARM3_9_3 C MOVEL X'00' DD_PARM3_9_4 C MOVEL X'00' DD_PARM3_9_5 C MOVEL X'00' DD_PARM3_9_6 C MOVEL X'00' DD_PARM3_9_7 C MOVEL X'00' DD_PARM3_9_8 C MOVEL X'00' DD_PARM3_9_9 C MOVEL X'00' DD_PARM3_9_10 C MOVEL X'00' DD_PARM3_9_11 C MOVEL X'00' DD_PARM3_9_12 C MOVEL X'00' DD_PARM3_9_13 C MOVEL X'00' DD_PARM3_9_14 C MOVEL X'00' DD_PARM3_9_15 C MOVEL X'00' DD_PARM3_9_16 C MOVEL X'00' DD_PARM3_9_17 C MOVEL X'00' DD_PARM3_9_18 C MOVEL X'00' DD_PARM3_9_19 C MOVEL X'00' DD_PARM3_9_20 C MOVEL X'00' DD_PARM3_9_21 C MOVEL X'00' DD_PARM3_9_22 C MOVEL X'00' DD_PARM3_9_23 C MOVEL X'00' DD_PARM3_9_24 C MOVEL X'00' DD_PARM3_9_25 C MOVEL X'00' DD_PARM3_9_26 C MOVEL X'00' DD_PARM3_9_27 C MOVEL X'00' DD_PARM3_9_28 C MOVEL X'00' DD_PARM3_9_29 C MOVEL X'00' DD_PARM3_9_30 C MOVEL X'00' DD_PARM3_9_31 C MOVEL X'00' DD_PARM3_9_32 C MOVEL 'ALGD0200' DD_PARM4 C CLEAR DD_PARM5_1 C Z-ADD 22 DD_PARM5_1 C CLEAR DD_PARM5_2 C Z-ADD 32 DD_PARM5_2 C MOVEL '0' DD_PARM5_3 C MOVEL X'00' DD_PARM5_4 C MOVE MK DD_PARM5_5 C MOVEL 'KEYD0200' DD_PARM6 C MOVEL '0' DD_PARM7 C MOVEL *BLANKS DD_PARM8 C MOVEL *BLANKS DD_PARM9 C CLEAR DD_PARM10 C Z-ADD 1024 DD_PARM10 C CLEAR DD_PARM11 C MOVEL *BLANKS DD_PARM11 C MOVEL *BLANKS DD_PARM12 * C CALL 'QC3DECDT' * * ENCRYPTED DATA C PARM DD_PARM1 * * LENGTH OF ENCRYPTED DATA C PARM DD_PARM2 * * ALGORITHM DESCRIPTION C PARM DD_PARM3 * * ALGORITHM DESCRIPTION FORMAT NAME C PARM DD_PARM4 * * KEY DESCRIPTION * (INCLUDES THE MASTER KEY) C PARM DD_PARM5 * * KEY DESCRIPTION FORMAT NAME C PARM DD_PARM6 * * CRYPTOGRAPHIC SERVICE PROVIDER C PARM DD_PARM7 * * CRYPTOGRAPHIC DEVICE NAME C PARM DD_PARM8 * * CLEAR DATA C PARM DD_PARM9 * * LENGTH OF AREA PROVIDED FOR CLEAR DATA C PARM DD_PARM10 * * LENGTH OF CLEAR DATA RETURNED C PARM DD_PARM11 * * ERROR CODE C PARM DD_PARM12 * C MOVE DD_PARM11 CLR_KEY_LEN C MOVEL DD_PARM9 CLEAR_KEY C MOVE DD_PARM12 ERRORCODE * C END * ******************************************************** C* MOVE '1' *INLR c return **************************************************************** C *INZSR BEGSR * * MASTER KEY C CALL 'KEYMAN/KM1CC' * * MASTER KEY TO BE RETURNED C PARM KEYPARM 1024 C PARM LENPARM 4 C PARM ERRORPARM 4 * C MOVEL KEYPARM MK 32 * C ENDSR C *******
Comment
-
Re: Decryption API's in ILE
Okay on this call
Code:c CALL 'KEYMAN/KM1CC' * * MASTER KEY TO BE RETURNED c PARM KEYPARM 1024 c PARM LENPARM 4 c PARM ERRORPARM 4
Code:c *ENTRY PLIST c PARM KEY_E_D 1 c PARM CLR_KEY_LEN 4 c PARM EC_KEY_LEN 4 c PARM ERRORCODE 20 c PARM CLEAR_KEY 1024 c PARM ENCTYPTED_KEY 1024 *
If you would do me a test and move this parmater to the last parm in
the call and see what happens. If this doesnt fix the problem, but there is
still garbage at the end of the keyparm and or clear_KEY then add a parm(s) which is length of the keyparm field then do
eval keyparm = %subst(keyparm:1:keylength) --or --
find the first blank
firstblank = %scan(' ' : %trim(CLEAR_KEY))
that should clear up the garbage......
let me know if im barking up the wrong tree...I cannot test this as I donot have source to KM1CC
jamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
-
Re: Decryption API's in ILE
Wow. Thank you for all your help. I made the CL changes. I am trying to use the
%scan.
eval clear_key = %scan(' ':%trim(dd_parm9))
where dd_parm9 is the clear key returned after the Decrypt API.
I am getting the error:
*RNF7416 30 1 The types of the right and left hand side do not match in the
EVAL operation.
but both clear_key and dd_parm9 are defined as 1024 character.
Comment
-
Re: Decryption API's in ILE
Basically for the most part, we have an application that decrypts data. It seems to work fine when run in batch, but does not when run interactively. It seems to return an incorrect key when run interactively. We checked the program line by line by writing each decrypt API parameter out to a file during the batch job and the interactive job. All parameters are exactly the same (for the batch and interactive Job) before the API is called. All parameters, except the return clear key, are exactly the same after the API is called.
Comment
-
Re: Decryption API's in ILE
Code:eval clear_key = %scan(' ':%trim(dd_parm9))
positon in the field where the first *blank appears.
so if dd_parm9 = 'some12345 dsdfs xassdf '
the decimal field would return the number 10
so then you would
once you get this value
then you need to use the %subst opcode to strip out the bad data.
eval decimalfield -= 1
eval dd_parm9 = %subst(dd_parm9:1:decimalfield)
JamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
-
Re: Decryption API's in ILE
That will always bite ya in the end....thanks for getting back with us...
jamieAll my answers were extracted from the "Big Dummy's Guide to the As400"
and I take no responsibility for any of them.
www.code400.com
Comment
Comment