0% found this document useful (0 votes)
222 views5 pages

Arqc Arpc

This document describes an ARQC verification routine that: 1. Copies fields from the input request to work areas and clears variables. 2. Checks the crypto version and skips processing if the version is not supported. 3. Calls a derive session key routine and traces the request. 4. Verifies the MAC and returns an error if verification fails. 5. For some schemes, additionally calls a derive card master key routine before verifying the MAC.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
222 views5 pages

Arqc Arpc

This document describes an ARQC verification routine that: 1. Copies fields from the input request to work areas and clears variables. 2. Checks the crypto version and skips processing if the version is not supported. 3. Calls a derive session key routine and traces the request. 4. Verifies the MAC and returns an error if verification fails. 5. For some schemes, additionally calls a derive card master key routine before verifying the MAC.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

TITLE 'CXSPDS1A ARQC VERIFICATION ROUTINE' 00171**8

***************************************************************** 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
*

You might also like