z/OS Cryptographic Services ICSF Application Programmer's Guide
Previous topic | Next topic | Contents | Index | Contact z/OS | Library | PDF


COBOL

z/OS Cryptographic Services ICSF Application Programmer's Guide
SA22-7522-16

      **************************
       IDENTIFICATION DIVISION.
      ***************************
       PROGRAM-ID. COBOLXMP.
      *****************************
       ENVIRONMENT DIVISION.
      *****************************************************************
       CONFIGURATION SECTION.
       SOURCE-COMPUTER.  IBM-370.
       OBJECT-COMPUTER.  IBM-370.
      *****************************
       DATA DIVISION.
      *****************************************************************
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  INPUT-TEXT                    PIC       X(24)
           VALUE 'ABCDEFGHIJKLMN0987654321'.
       77  OUTPUT-TEXT                   PIC       X(24)
           VALUE LOW-VALUES.
       77  COMPARE-TEXT                  PIC       X(24)
           VALUE LOW-VALUES.
       77  CIPHER-PROCESSING-RULE        PIC       X(08)
           VALUE 'CUSP    '.
       77  KEY-FORM                      PIC       X(08)
           VALUE 'OP      '.
       77  KEY-LENGTH                    PIC       X(08)
           VALUE 'SINGLE  '.
       77  KEY-TYPE-1                    PIC       X(08)
           VALUE 'DATA    '.
       77  KEY-TYPE-2                    PIC       X(08)
           VALUE '        '.
       77  ICV                           PIC       X(08)
           VALUE LOW-VALUES.
       77  PAD                           PIC       X(01)
           VALUE LOW-VALUES.
      ************* DEFINE SAPI INPUT/OUTPUT PARAMETERS ************
       01  SAPI-REC.
           05  RETURN-CODE-S             PIC       9(08) COMP.
           05  REASON-CODE-S             PIC       9(08) COMP.
           05  EXIT-DATA-LENGTH-S        PIC       9(08) COMP.
           05  EXIT-DATA-S               PIC       X(04).
           05  KEK-KEY-ID-1-S            PIC       X(64)
               VALUE LOW-VALUES.
           05  KEK-KEY-ID-2-S            PIC       X(64)
               VALUE LOW-VALUES.
           05  DATA-KEY-ID-S             PIC       X(64)
               VALUE LOW-VALUES.
           05  NULL-KEY-ID-S             PIC       X(64)
               VALUE LOW-VALUES.
           05  KEY-FORM-S                PIC       X(08).
           05  KEY-LENGTH-S              PIC       X(08).
           05  DATA-KEY-TYPE-S           PIC       X(08).
           05  NULL-KEY-TYPE-S           PIC       X(08).
           05  TEXT-LENGTH-S             PIC       9(08) COMP.
           05  TEXT-S                    PIC       X(24).
           05  ICV-S                     PIC       X(08).
           05  PAD-S                     PIC       X(01).
           05  CPHR-TEXT-S               PIC       X(24).
           05  COMP-TEXT-S               PIC       X(24).
           05  RULE-ARRAY-COUNT-S        PIC       9(08) COMP.
           05  RULE-ARRAY-S.
               10  RULE-ARRAY            PIC       X(08).
           05  CHAINING-VECTOR-S         PIC       X(18).
      *****************************************************************
       PROCEDURE DIVISION.
      *****************************************************************
       MAIN-RTN.
      *************  CALL KEY GENERATE  ***************************
           MOVE 0               TO   EXIT-DATA-LENGTH-S.
           MOVE KEY-FORM        TO   KEY-FORM-S.
           MOVE KEY-LENGTH      TO   KEY-LENGTH-S.
           MOVE KEY-TYPE-1      TO   DATA-KEY-TYPE-S.
           MOVE KEY-TYPE-2      TO   NULL-KEY-TYPE-S.
           CALL 'CSNBKGN'   USING RETURN-CODE-S
                                   REASON-CODE-S
                                   EXIT-DATA-LENGTH-S
                                   EXIT-DATA-S
                                   KEY-FORM-S
                                   KEY-LENGTH-S
                                   DATA-KEY-TYPE-S
                                   NULL-KEY-TYPE-S
                                   KEK-KEY-ID-1-S
                                   KEK-KEY-ID-2-S
                                   DATA-KEY-ID-S
                                   NULL-KEY-ID-S.
           IF RETURN-CODE-S NOT = 0 OR
              REASON-CODE-S NOT = 0 THEN
              DISPLAY '*** KEY-GENERATE ***'
              DISPLAY '*** RETURN-CODE = ' RETURN-CODE-S
              DISPLAY '*** REASON-CODE = ' REASON-CODE-S
           ELSE
              MOVE 24                  TO  TEXT-LENGTH-S
              MOVE INPUT-TEXT          TO  TEXT-S
              MOVE 1                   TO  RULE-ARRAY-COUNT-S
              MOVE CIPHER-PROCESSING-RULE TO RULE-ARRAY-S
              MOVE LOW-VALUES          TO  CHAINING-VECTOR-S
              MOVE ICV             TO   ICV-S.
              MOVE PAD             TO   PAD-S.
      *************  CALL ENCIPHER ************************************
              CALL 'CSNBENC'  USING    RETURN-CODE-S
                                       REASON-CODE-S
                                       EXIT-DATA-LENGTH-S
                                       EXIT-DATA-S
                                       DATA-KEY-ID-S
                                       TEXT-LENGTH-S
                                       TEXT-S
                                       ICV-S
                                       RULE-ARRAY-COUNT-S
                                       RULE-ARRAY-S
                                       PAD-S
                                       CHAINING-VECTOR-S
                                       CPHR-TEXT-S
              IF RETURN-CODE-S NOT = 0 OR
                 REASON-CODE-S NOT = 0 THEN
                 DISPLAY '*** ENCIPHER ***'
                 DISPLAY '*** RETURN-CODE = ' RETURN-CODE-S
                 DISPLAY '*** REASON-CODE = ' REASON-CODE-S
              ELSE
      *************  CALL DECIPHER ************************************
                 CALL 'CSNBDEC' USING RETURN-CODE-S
                                       REASON-CODE-S
                                       EXIT-DATA-LENGTH-S
                                       EXIT-DATA-S
                                       DATA-KEY-ID-S
                                       TEXT-LENGTH-S
                                       CPHR-TEXT-S
                                       ICV-S
                                       RULE-ARRAY-COUNT-S
                                       RULE-ARRAY-S
                                       CHAINING-VECTOR-S
                                       COMP-TEXT-S
                 IF RETURN-CODE-S  NOT = 0 OR
                    REASON-CODE-S  NOT = 0 THEN
                    DISPLAY '*** DECIPHER ***'
                    DISPLAY '*** RETURN-CODE = ' RETURN-CODE-S
                    DISPLAY '*** REASON-CODE = ' REASON-CODE-S
                ELSE
                    IF COMP-TEXT-S = TEXT-S THEN
                      DISPLAY '*** DECIPHERED TEXT = PLAIN TEXT ***'
                    ELSE
                      DISPLAY '*** DECIPHERED TEXT ê= PLAIN TEXT ***'.
           DISPLAY '*** TEST PROGRAM ENDED ***'
           STOP RUN.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014