Arqc Arpc
Arqc Arpc
***************************************************************** 00172**8
* ARQC VERIFICATION ROUTINE * 00173**8
***************************************************************** 00174**8
* * 00175**8
* THIS SECTION PROCESSES THE ARQC VERIFICATION REQUEST. * 00176**8
* ISSUE DIVERSIFIED KEY GENERATE FOLLOWED BY A MAC. * 00177**8
* * 00178**8
***************************************************************** 00179**8
* 00180**8
ARQCV DS 0H 00181**8
ST R14,WK0ARQCV SAVE RETURN ADDRESS 00182**8
* 00183
MVC WK0DVKEY,I29DVKEY COPY FIELDS C12183 00184*11
MVC WK0SCHID,I29SCHID C12183 00185*11
MVC WK0FLAGS,I29FLAGS U18619 00185*11
MVC WK0ATC,I29ATC U18619 00186*50
MVC WK0CVN,I29CVN U11432 00186*50
MVC WK0LPAN,I29LPAN C12183 00187*11
MVC WK0PAN,I29PAN C12183 00188*11
MVC WK0CSEQ,I29CSEQ C12183 00189*11
MVC WK0ATC,I29ATC C12183 00190*11
XC WK0UN,WK0UN CLEAR UNPREDICTABLE NUMBER U11038 00191*45
CLI I29CVN,X'01' CHECK CRYPTO VERION OF 1 U11432 00192*50
BE ARQCV003 YES, SKIP U11432 00193*50
CLI I29CVN,X'05' CHECK CRYPTO VERION OF 5 U11038 00194*49
BE ARQCV003 YES, SKIP U11038 00195*49
CLI I29CVN,X'06' CHECK CRYPTO VERION OF 6 U11038 00196*45
BE ARQCV003 YES, SKIP U11038 00197*45
CLI I29CVN,X'12' CHECK CRYPTO VERION OF 18 U18619 00196*45
BE ARQCV003 YES, SKIP U18619 00197*45
CLI I29CVN,X'14' CHECK CRYPTO VERION OF 20 U17431 00196*45
BE ARQCV003 YES, SKIP U17431 00197*45
CLI I29CVN,X'22' CHECK CRYPTO VERION OF '22' U18619 00196*45
BE ARQCV003 YES, SKIP U18619 00197*45
MVC WK0UN,I29UN C12290 00198*16
ARQCV003 DS 0H U11038 00199*45
BAL R14,DSKEY CALL DERIVE SESSION KEY RTN 00200**6
* 00201**6
CLC DSGRETCD,=F'0' CHECK FOR SUCCESSFUL REQUEST 00202
BNE ARQCV900 NO, ERROR 00203
* 00204**6
MVC DSGVERB,=CL8'CSNBMVR' SET TSS VERB NAME 00205
MVC MGNKEY,WK0KEYT SET MAC KEY TOKEN FROM DKG 00206**4
MVC MGNMAC,I29ARQC SET MAC VALUE 00207
MVC DSGRULEC,=F'3' SET RULE ARRAY COUNT 00208
MVC DSGOLIST,=CL8'EMVMACD ' SET RULE ARRAY (3DES + EMV) 00209
CLI I29SCHID,C'0' CHECK FOR VISA C13408 00210*23
BNE ARQCV010 NO, SKIP C13408 00211*23
CLI I29CVN,X'0E' CHECK CRYPTO VERION OF 14 C13408 00212*23
BE ARQCV010 YES, SKIP C13408 00213*23
CLI I29CVN,X'12' CHECK CRYPTO VERION OF 18 U18619 00212*23
BE ARQCV010 YES, SKIP U18619 00213*23
CLI I29CVN,X'22' CHECK CRYPTO VERION OF '22' U18619 00212*23
BE ARQCV010 YES, SKIP U18619 00213*23
MVC DSGOLIST,=CL8'X9.19OPT' SET RULE ARRAY (3DES) C13408 00214*23
ARQCV010 DS 0H C13408 00215*23
MVC DSGOLIST+8,=CL8'ONLY' SET RULE ARRAY 00216
MVC DSGOLIST+16,=CL8'MACLEN8' SET RULE ARRAY C12183 00217*10
XC MGNCHAIN,MGNCHAIN CLEAR CHAINING VECTOR 00218
* 00219
LH R3,I29TEXTL GET MAC TEXT LENGTH 00220
ST R3,MGNTEXTL SET MAC TEXT LENGTH 00221
XC MGNTEXT,MGNTEXT CLEAR OUT TEXT FIELD 00222**5
LA R2,I29TEXTL+2 ADDRESS OF DATA FOR MAC 00223
LA R0,MGNTEXT DATA TARGET 00224
LR R1,R3 LENGTH 00225
MVCL R0,R2 COPY TEXT FOR TRACE AND CALL 00226
* 00227
MVI DSGFUNCT,C'I' SET INITIATE TRACE 00228
BAL R14,TRACE CALL TRACE ROUTINE 00229
* 00230
MODESET KEY=ZERO ENTER PROTECT KEY ZERO 00231
* 00232
MVC WK0APIC,CONCALL INITIALIZE CALL PARAMETER LIST 00233
CALL CSNBMVR,(DSGRETCD,DSGRESCD,DSGEXITL,WK0EXITD, X00234
MGNKEY,MGNTEXTL,MGNTEXT,DSGRULEC,DSGOLIST, X00235
MGNCHAIN,MGNMAC),MF=(E,WK0APIC) 00236
* 00237
MODESET KEY=NZERO ENTER PROTECT KEY NON ZERO 00238
* 00239
MVI DSGFUNCT,C'C' SET COMPLETION TRACE 00240
BAL R14,TRACE CALL TRACE ROUTINE 00241
* 00242**8
CLC DSGRETCD,=F'0' CHECK FOR SUCCESSFUL REQUEST 00243
BNE ARQCV900 NO, ERROR 00244
* 00245
CLI WK0SCHID,C'0' CHECK FOR VISA/UKIS SCHEME C12290 00246*17
BE ARQCV100 YES, SKIP C12290 00247*17
CLI I29CVN,X'85' CHECK CRYPTO VERION OF 85 U05131 00248*43
BE ARQCV100 YES, SKIP U05131 00249*43
CLI I29CVN,X'05' CHECK CRYPTO VERION OF 5 U11432 00250*50
BE ARQCV100 YES, SKIP U11432 00251*50
CLI I29CVN,X'06' CHECK CRYPTO VERION OF 6 U11432 00252*50
BE ARQCV100 YES, SKIP U11432 00253*50
CLI I29CVN,X'14' CHECK CRYPTO VERION OF 20 U17431 00252*50
BE ARQCV100 YES, SKIP U17431 00253*50
TM WK0FLAGS,X'80' CHECK FOR EMV 2000 U18619 00185*11
BO ARQCV100 YES, SKIP U18619 00253*50
* 00488**6
BAL R14,DMKEY CALL DERIVE CARD MASTER KEY C12290 00254*17
ARQCV100 DS 0H C12290 00255*17
MVC DSGVERB,=CL8'CSNBMGN' SET TSS VERB NAME 00256
MVC MGNKEY,WK0KEYT SET MAC KEY TOKEN FROM DKG 00257*17
MVC MGNMAC,I29ARQC SET MAC VALUE 00258
MVC DSGRULEC,=F'3' SET RULE ARRAY COUNT 00259
MVC DSGOLIST,=CL8'X9.19OPT' SET RULE ARRAY (3DES) 00260
MVC DSGOLIST+8,=CL8'ONLY' SET RULE ARRAY 00261
MVC DSGOLIST+16,=CL8'MACLEN8' SET RULE ARRAY C12183 00262*10
XC MGNCHAIN,MGNCHAIN CLEAR CHAINING VECTOR 00263
CLI I29CVN,X'12' CHECK CRYPTO VERION OF 18 U18619 00196*45
BE ARQCV110 YES, SKIP U18619 00197*45
CLI I29CVN,X'22' CHECK CRYPTO VERION OF '22' U18619 00196*45
BNE ARQCV120 YES, SKIP U18619 00197*45
* U18619 00264
ARQCV110 DS 0H U18619
MVC DSGOLIST,=CL8'EMVMACD ' SET RULE ARRAY (3DES + EMV) 00209
MVC DSGOLIST+16,=CL8'MACLEN4' SET RULE ARRAY U18619
MVC MGNTEXTL,=F'12' SET MAC TEXT LENGTH U18619 00265
XC MGNTEXT,MGNTEXT CLEAR OUT TEXT FIELD U18619 00266**5
MVC MGNTEXT(8),I29ARQC SET MAC VALUE U18619 00267
MVC MGNTEXT+8(2),I29ARC AUTH CARD STATUS UPDATE (CSU)U18619
XC MGNMAC,MGNMAC CLEAR MAC FIELD
B ARQCV130 U18619
* U18619 00264
ARQCV120 DS 0H U18619
MVC MGNTEXTL,=F'8' SET MAC TEXT LENGTH 00265
XC MGNTEXT,MGNTEXT CLEAR OUT TEXT FIELD 00266**5
MVC MGNTEXT(8),I29ARQC SET MAC VALUE 00267
XC MGNTEXT(2),I29ARC XC WITH AUTH RESP CODE 00268
* 00269
ARQCV130 DS 0H U18619
MVI DSGFUNCT,C'I' SET INITIATE TRACE 00270
BAL R14,TRACE CALL TRACE ROUTINE 00271
* 00272
MODESET KEY=ZERO ENTER PROTECT KEY ZERO 00273
* 00274
MVC WK0APIC,CONCALL INITIALIZE CALL PARAMETER LIST 00275
CALL CSNBMGN,(DSGRETCD,DSGRESCD,DSGEXITL,WK0EXITD, X00276
MGNKEY,MGNTEXTL,MGNTEXT,DSGRULEC,DSGOLIST, X00277
MGNCHAIN,MGNMAC),MF=(E,WK0APIC) 00278
* 00279
MODESET KEY=NZERO ENTER PROTECT KEY NON ZERO 00280
* 00281
MVI DSGFUNCT,C'C' SET COMPLETION TRACE 00282
BAL R14,TRACE CALL TRACE ROUTINE 00283
* 00284**8
CLC DSGRETCD,=F'0' CHECK FOR SUCCESSFUL REQUEST 00285
BNE ARQCV900 NO, ERROR 00286
* 00287**8
MVC I29ARPC,MGNMAC SET MAC VALUE 00288
ARQCV900 DS 0H 00290**8
L R14,WK0ARQCV RESTORE RETURN ADDRESS 00291**8
BR R14 RETURN TO CALL 00292**8
* 00293**8
TITLE 'CXSPDS1A ARPC GENERATION ROUTINE' 00294**8
***************************************************************** 00295**8
* ARPC GENERATION ROUTINE * 00296**8
***************************************************************** 00297**8
* * 00298**8
* THIS SECTION PROCESSES THE ARPC GENERATION REQUEST. * 00299**8
* * 00300**8
***************************************************************** 00301**8
* 00302**8
ARPCG DS 0H 00303**8
ST R14,WK0ARPCG SAVE RETURN ADDRESS 00304**8
* 00305
MVC WK0DVKEY,I29DVKEY COPY FIELDS C12183 00306*11
MVC WK0SCHID,I29SCHID C12183 00307*11
MVC WK0FLAGS,I29FLAGS U18619 00185*11
MVC WK0ATC,I29ATC U18619 00186*50
MVC WK0CVN,I29CVN U11432 00308*50
MVC WK0LPAN,I29LPAN C12183 00309*11
MVC WK0PAN,I29PAN C12183 00310*11
MVC WK0ATC,I29ATC C12183 00311*11
CLI I29CVN,X'85' CHECK CRYPTO VERION OF 85 U05131 00312*43
BE ARPCG010 YES, SKIP U05131 00313*43
CLI I29CVN,X'05' CHECK CRYPTO VERION OF 5 U11432 00314*50
BE ARPCG010 YES, SKIP U11432 00315*50
CLI I29CVN,X'06' CHECK CRYPTO VERION OF 6 U11432 00316*50
BE ARPCG010 YES, SKIP U11432 00317*50
CLI I29CVN,X'14' CHECK CRYPTO VERION OF 20 U17431 00316*50
BE ARPCG010 YES, SKIP U17431 00317*50
CLI WK0SCHID,C'0' CHECK FOR VISA/UKIS SCHEME C12290 00318*17
BNE ARPCG100 YES, SKIP C12290 00319*17
ARPCG010 DS 0H U05131 00320*43
BAL R14,DSKEY CALL DERIVE SESSION KEY RTN C12290 00321*17
B ARPCG120 C12290 00322*17
ARPCG100 DS 0H C12290 00323*17
BAL R14,DMKEY CALL DERIVE CARD MASTER KEY C12290 00324*17
ARPCG120 DS 0H C12290 00325*17
* 00326**6
CLC DSGRETCD,=F'0' CHECK FOR SUCCESSFUL REQUEST 00327
BNE ARPCG900 NO, ERROR 00328
* 00329
MVC DSGVERB,=CL8'CSNBMGN' SET TSS VERB NAME 00330
MVC MGNKEY,WK0KEYT SET MAC KEY TOKEN FROM DKG 00331*17
* 00332
XC MGNTEXT,MGNTEXT SET NULL TEXT 00333
MVC MGNTEXTL,=F'8' SET MAC TEXT LENGTH 00334
MVC MGNTEXT(8),I29ARQC SET MAC VALUE 00335
XC MGNTEXT(2),I29ARC XC WITH AUTH RESP CODE 00336
* 00337
MVC DSGRULEC,=F'3' SET RULE ARRAY COUNT 00338
MVC DSGOLIST,=CL8'X9.19OPT' SET RULE ARRAY (3DES) 00339
MVC DSGOLIST+8,=CL8'ONLY' SET RULE ARRAY 00340
MVC DSGOLIST+16,=CL8'MACLEN8' SET RULE ARRAY C12183 00341*10
XC MGNCHAIN,MGNCHAIN CLEAR CHAINING VECTOR 00342
CLI I29CVN,X'12' CHECK CRYPTO VERION OF 18 U18619 00196*45
BE ARPCG130 YES, SKIP U18619 00197*45
CLI I29CVN,X'22' CHECK CRYPTO VERION OF '22' U18619 00196*45
BNE ARPCG140 YES, SKIP U18619 00197*45
* U18619 00264
ARPCG130 DS 0H U18619
MVC DSGOLIST,=CL8'EMVMACD ' SET RULE ARRAY (3DES + EMV) 00209
MVC DSGOLIST+16,=CL8'MACLEN4' SET RULE ARRAY U18619
MVC MGNTEXTL,=F'12' SET MAC TEXT LENGTH U18619 00265
XC MGNTEXT,MGNTEXT CLEAR OUT TEXT FIELD U18619 00266**5
MVC MGNTEXT(8),I29ARQC SET MAC VALUE U18619 00267
MVC MGNTEXT+2(2),I29ARC AUTH CARD STATUS UPDATE (CSU)U18619
* U18619 00264
ARPCG140 DS 0H U18619
* 00343
MVI DSGFUNCT,C'I' SET INITIATE TRACE 00344
BAL R14,TRACE CALL TRACE ROUTINE 00345
* 00346
MODESET KEY=ZERO ENTER PROTECT KEY ZERO 00347
* 00348
MVC WK0APIC,CONCALL INITIALIZE CALL PARAMETER LIST 00349
CALL CSNBMGN,(DSGRETCD,DSGRESCD,DSGEXITL,WK0EXITD, X00350
MGNKEY,MGNTEXTL,MGNTEXT,DSGRULEC,DSGOLIST, X00351
MGNCHAIN,MGNMAC),MF=(E,WK0APIC) 00352
* 00353
MODESET KEY=NZERO ENTER PROTECT KEY NON ZERO 00354
* 00355
MVI DSGFUNCT,C'C' SET COMPLETION TRACE 00356
BAL R14,TRACE CALL TRACE ROUTINE 00357
* 00358
MVC I29ARPC,MGNMAC SET MAC VALUE 00359
* 00360**8
ARPCG900 DS 0H 00361**8
L R14,WK0ARPCG RESTORE RETURN ADDRESS 00362**8
BR R14 RETURN TO CALL 00363**8
*