Change this program example to suit your needs for logging on to your Cryptographic Coprocessor.
If you choose to use this program example, change it to suit your specific needs. For security reasons, IBM® recommends that you individualize these program examples rather than using the default values provided.
D************************************************************* D* LOGON D* D* Log on to the Cryptographic Coprocessor. D* D* D* COPYRIGHT 5769-SS1 (C) IBM CORP. 2000, 2000 D* D* This material contains programming source code for your D* consideration. These example has not been thoroughly D* tested under all conditions. IBM, therefore, cannot D* guarantee or imply reliability, serviceability, or function D* of these programs. All programs contained herein are D* provided to you "AS IS". THE IMPLIED WARRANTIES OF D* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D* ARE EXPRESSLY DISCLAIMED. IBM provides no program services for D* these programs and files. D* D* D* Note: Input format is more fully described in Chapter 2 of D* IBM CCA Basic Services Reference and Guide D* (SC31-8609) publication. D* D* Parameters: Profile D* Pass-phrase D* D* Example: D* CALL PGM(LOGON) PARM(PROFILE PASSPRHASE) D* D* Use these commands to compile this program on the system: D* CRTRPGMOD MODULE(LOGON) SRCFILE(SAMPLE) D* CRTPGM PGM(LOGON) MODULE(LOGON) D* BNDDIR(QCCA/QC6BNDDIR) D* D* Note: Authority to the CSUALCT service program in the D* QCCA library is assumed. D* D* The Common Cryptographic Architecture (CCA) verbs used are D* Cryptographic_Facilty_Control (CSUACFC) D* D* This program assumes the card with the profile is D* already identified either by defaulting to the CRP01 D* device or by being explicitly named using the D* Cryptographic_Resource_Allocate verb. Also this D* device must be varied on and you must be authorized D* to use this device description. D************************************************************** D*------------------------------------------------ D* Declare variables for CCA SAPI calls D*------------------------------------------------ D* ** Return code DRETURNCODE S 9B 0 D* ** Reason code DREASONCODE S 9B 0 D* ** Exit data length DEXITDATALEN S 9B 0 D* ** Exit data DEXITDATA S 4 D* ** Rule array count DRULEARRAYCNT S 9B 0 D* ** Rule array DRULEARRAY S 16 D* ** Userid parm DUSERID S 8 D* ** Authentication parameter length DAUTHPARMLEN S 9B 0 INZ(0) D* ** Authentication parameter DAUTHPARM S 10 D* ** Authentication data length DAUTHDATALEN S 9B 0 INZ(0) D* ** Authentication data DAUTHDATA S 50 D* D********************************************************** D* Prototype for Logon Control (CSUALCT) D********************************************************** DCSUALCT PR DRETCODE 9B 0 DRSNCODE 9B 0 DEXTDTALEN 9B 0 DEXTDTA 4 DRARRAYCT 9B 0 DRARRAY 16 DUSR 8 DATHPRMLEN 9B 0 DATHPRM 10 DATHDTALEN 9B 0 DATHDTA 50 D* D************************************************************** D* Declares for sending messages to job log D************************************************************** D*------------------------------------------------------------- D* ** Declares for sending messages to the D* ** job log using the QMHSNDPM API D*------------------------------------------------------------- DMSG S 75 DIM(2) CTDATA PERRCD(1) DMSGLENGTH S 9B 0 INZ(75) D DS DMSGTEXT 1 75 DFAILRETC 41 44 DFAILRSNC 46 49 DMESSAGEID S 7 INZ(' ') DMESSAGEFILE S 21 INZ(' ') DMSGKEY S 4 INZ(' ') DMSGTYPE S 10 INZ('*INFO ') DSTACKENTRY S 10 INZ('* ') DSTACKCOUNTER S 9B 0 INZ(2) DERRCODE DS DBYTESIN 1 4B 0 INZ(0) DBYTESOUT 5 8B 0 INZ(0) D* C************************************************************** C* START OF PROGRAM * C* * C*------------------------------------------------------------* C *ENTRY PLIST C PARM USERID C PARM AUTHDATA C*------------------------------------------------------------* C* Set the keywords in the rule array * C*------------------------------------------------------------* C MOVEL 'LOGON ' RULEARRAY C MOVE 'PPHRASE ' RULEARRAY C Z-ADD 2 RULEARRAYCNT C*------------------------------------------------------------* C* Get the length of the passphrase * C*------------------------------------------------------------* C EVAL AUTHDATALEN = %LEN(%TRIM(AUTHDATA)) C* C************************************************************** C* Call Logon Control SAPI C************************************************************** C CALLP CSUALCT (RETURNCODE: C REASONCODE: C EXITDATALEN: C EXITDATA: C RULEARRAYCNT: C RULEARRAY: C USERID: C AUTHPARMLEN: C AUTHPARM: C AUTHDATALEN: C AUTHDATA) C*-----------------------* C* Check the return code * C*-----------------------* C RETURNCODE IFGT 0 C* *----------------------* C* * Send error message * C* *----------------------* C MOVE MSG(1) MSGTEXT C MOVE RETURNCODE FAILRETC C MOVE REASONCODE FAILRSNC C EXSR SNDMSG C* C ELSE C* *----------------------* C* * Send success message * C* *----------------------* C MOVE MSG(2) MSGTEXT C EXSR SNDMSG C* C ENDIF C* C SETON LR C* C************************************************************** C* Subroutine to send a message C************************************************************** C SNDMSG BEGSR C CALL 'QMHSNDPM' C PARM MESSAGEID C PARM MESSAGEFILE C PARM MSGTEXT C PARM MSGLENGTH C PARM MSGTYPE C PARM STACKENTRY C PARM STACKCOUNTER C PARM MSGKEY C PARM ERRCODE C ENDSR C* ** CSUALCT failed with return/reason codes 9999/9999' The request completed successfully