Example: ILE RPG program for setting the min and max values for master key shares in your Cryptographic Coprocessor

Change this program example to suit your needs for setting the min and max values for master key shares in your Cryptographic Coprocessor.

Note: Read the Code license and disclaimer information for important legal information.
     D*************************************************************
     D* SETMOFN
     D*
     D* Set the M-of-N values in the Cryptographic Coprocessor.  These values
     D* are used in cloning of the master key.  The master key is
     D* cryptographically split into N number of parts and M number of
     D* parts are needed to recover it.
     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: M and N
     D*
     D* Example:
     D*   CALL PGM(SETMOFN) PARM(5 10)
     D*
     D* Use these commands to compile this program on the system:
     D* CRTRPGMOD MODULE(SETMOFN) SRCFILE(SAMPLE)
     D* CRTPGM  PGM(SETMOFN) MODULE(SETMOFN)
     D*         BNDDIR(QCCA/QC6BNDDIR)
     D*
     D* Note: Authority to the CSUACFC 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**************************************************************
     D*-------------------------------------------
     D* Declare variables used on 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*                **  Verb data length
     DVERBDATALEN      S              9B 0
     D*                **  Verb data contain M (minimum) and N (maximum)
     DVERBDATA         DS             8
     DM                               9B 0
     DN                               9B 0
     D*
     D**********************************************************
     D* Prototype for Cryptographic_Facilty_Control (CSUACFC)
     D**********************************************************
     DCSUACFC          PR
     DRETCODE                         9B 0
     DRSNCODE                         9B 0
     DEXTDTALEN                       9B 0
     DEXTDTA                          4
     DRARRAYCT                        9B 0
     DRARRAY                         16
     DVRBDTALEN                       9B 0
     DVRBDTA                          8
     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     80
     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)
     C*
     C**************************************************************
     C* START OF PROGRAM                                           *
     C*------------------------------------------------------------*
     C     *ENTRY        PLIST
     C                   PARM                    MVALUE           15 5
     C                   PARM                    NVALUE           15 5
     C*------------------------------------------------------------*
     C* Set the keyword in the rule array                          *
     C*------------------------------------------------------------*
     C                   MOVEL     'ADAPTER1'    RULEARRAY
     C                   MOVE      'SET-MOFN'    RULEARRAY
     C                   Z-ADD     2             RULEARRAYCNT
     C*------------------------------------------------------------*
     C* Set the verb data length to 8                              *
     C*------------------------------------------------------------*
     C                   Z-ADD     8             VERBDATALEN
     C*------------------------------------------------------------*
     C* Set the M and N value (Convert from decimal 15 5 to binary)*
     C*------------------------------------------------------------*
     C                   EVAL      M = MVALUE
     C                   EVAL      N = NVALUE
     C**************************************************************
     C* Call Cryptographic Facilty Control SAPI                          */
     C**************************************************************
     C                   CALLP     CSUACFC       (RETURNCODE:
     C                                            REASONCODE:
     C                                            EXITDATALEN:
     C                                            EXITDATA:
     C                                            RULEARRAYCNT:
     C                                            RULEARRAY:
     C                                            VERBDATALEN:
     C                                            VERBDATA)
     C*-----------------------*
     C* Check the return code *
     C*-----------------------*
     C     RETURNCODE    IFGT      0
     C*            *----------------------*
     C*            * Send error message   *
     C*            *----------------------*
     C                   MOVEL     MSG(1)        MSGTEXT
     C                   MOVE      RETURNCODE    FAILRETC
     C                   MOVE      REASONCODE    FAILRSNC
     C                   EXSR      SNDMSG
     C*
     C                   ELSE
     C*            ************************
     C*            * Send success message *
     C*            ************************
     C                   MOVEL     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
**
CSUACFC failed with return/reason codes 9999/9999.
The request completed successfully.