IBM Crypto Education Community

IBM Crypto Education Community

IBM Crypto Education Community

Join the IBM Crypto Education community to explore and understand IBM cryptography technology. This community is operated and maintained by the IBM Crypto Development team.

 View Only

Rexx Sample: Import a 4096-bit RSA Public Key

By Eysha Shirrine Powers posted Wed March 25, 2020 05:29 PM

  

/* Rexx */

/* Sample: Import a 4096-bit RSA public key                          */
/*-------------------------------------------------------------------*/
/* Description:                                                      */
/*                                                                   */
/* This REXX contains samples that show how to:                      */
/*  - Build a CCA key token from the receiver's public key material  */
/*                                                                   */
/* How To Run:                                                       */
/* - Execute this script from TSO                                    */
/*   (e.g. EX 'HLQ.MLD.LLQ(IMPRTRSA)')                               */
/*-------------------------------------------------------------------*/
signal on novalue;

/*********************************************************************/
/* Build a CCA public key token from the recipient's clear key value */
/*********************************************************************/
pkb_rule_array_count   = '00000001'x;
pkb_rule_array         = 'RSA-PUBL';
pkb_kvs_length         = '00000408'x;
pkb_kvs                = '1000'x||,
                         '0200'x||,
                         '0200'x||,
                         '0000'x||,
                         'D58A42190BA99200050ACD17CD7E7317'x||,
                         '5FE54FFAE942650DB08289AA5542FA2B'x||,
                         '3A281934A57950EB1127D60ACC111548'x||,
                         '716CA0D60EB3937C06AF785DF6189091'x||,
                         'E7261F2DE7564CC07D5B3638904C4A95'x||,
                         '5D604BF6368A0E233ECA35A783512AB3'x||,
                         '7F96B3204D516C60DA8F7710BDC1A0FD'x||,
                         '65D089AD41E173A7DF2542CAFD653C40'x||,
                         'E279F8C679BDD2B9AA564707FA6C301C'x||,
                         '26FBF7A0C42A9926665F08BB8E8C41A7'x||,
                         '967DD3DE5E312D278CBE85785241CD44'x||,
                         'B693901E6BCC34AD57A598739F08F4B2'x||,
                         '5A53B1155722959F71731CBE48CDAF56'x||,
                         'CE554CDDE0587298662422C6C0E57E1D'x||,
                         'B58C3F262363D0C51D9CCAD6056BD932'x||,
                         '72B7B6E36811A228D377AEC144843C82'x||,
                         '35EA3C38251E8E64BF726BB980183395'x||,
                         'BED2FD9BB03489B17AED7452957D4AD4'x||,
                         '2150E12DA8973DFFBC602CCB87F8C550'x||,
                         'C75ABF6FF593158B77685740C9C3E47C'x||,
                         'B1A8696C975D27DF090D74F44E0D758D'x||,
                         '54EEA7BB8AB307DFD48E7BFF06E2F760'x||,
                         '68EEAB59F73114FC4B16408D8025714F'x||,
                         '992E9269598EE740AB2998D7BB3DFB1F'x||,
                         'CDE98F40B4673D02E75A6BE55FE66DDA'x||,
                         'DA4728AA4409BA133B86824E0239EE88'x||,
                         '4852A2765CF01AF5A44418DD2776E134'x||,
                         'F7306153D090AD0A2CED4599F5C9A571'x||,
                         '1C17E2AA845565D1A49BCB4F7A591E79'x||,
                         'F1FC893E2B2839E8493A41CD59519B8D'x||,
                         '94D8D1DD09B8E353F8BB62CEE4A81975'x||,
                         '3701B71EBD7DED1272EE7578733E66F9'x||,
                         '74799058426D7A7BD9E51DAC560BA2E1'x||,
                         '09DD400B2705D9F0EFEA7436898F1F3E'x||,
                         'A25B8A56120EA52A56C5C2714165373F'x||,
                         'B1BAD0E2600C6E16B00FAE8D3A7F788D'x||,
                         'F7A2CD7B28A0B55A55A4C6A2B413F2BC'x||,
                         '5CD2AC8ADE7418273657D90C5E2879A2'x||,
                         '27AAB1CEC95AA0044A1B009762B884D5'x||,
                         '0EB123DB131DF8114F0AFF64C65C52E0'x||,
                         '236124E8BE8E347455559D447B753CB6'x||,
                         '9648E7A9240A6A4698F3CA6D5EA23586'x||,
                         '9BBE02DFF6F5EB5415478415BA5E9644'x||,
                         '656FF75345582F0F642FA19A1B422B96'x||,
                         '7D07442B1E378E1FAE837F9CEC3ECAA4'x||,
                         '8D87D2D26C3DCDDF6CA5C541F615C7D5'x||,
                         '7A85F45B7EF071EF3F4D04553EB874F3'x||,
                         '695D449AD0CDA2AD045F65ABC4E5CBFD'x||,
                         'F4A046A67DCBF7A2ECCD67F216E5834E'x||,
                         'C532D3EBA5D6FE4F70A85AF83CA51EAB'x||,
                         'D1B70D2CD02A02AA8E6E4EAD3DD6ECB8'x||,
                         '26A6330F7D1EEE5EC3CE3166415AAFAC'x||,
                         'C6F6A1AAF14DA2A2097218F2ECFD554A'x||,
                         '057EA8AE9423CA570CB265A1520BDB85'x||,
                         '2734BAAD6FA88950242D789918198E74'x||,
                         '8E34E4A1D83C368D787A6E65FBA74ADE'x||,
                         '415523EE7607D195B8C64F5FAED9A58A'x||,
                         'D9755F1F9C561C03C76B0FEBEF89B86F'x||,
                         '3789D93AD6B9832068D5DE29ABE4C955'x||,
                         '526B4646B1359DB237251D35C33C502E'x||,
                         'BA10F9A1522ED034F48CEAA62CBE8B88'x||,
                         'C4FCC6856CCDA08B033C3BC5C662B4F0'x||,
                         '910DFDB3E7FEFA0B1AAA70C63DA5E8B5'x||,
                         'B0E6FE76BF7D7DE113ABA77A6C2A2EF3'x;
pkb_key_token_length   = '00000DAC'x;
pkb_key_token          = copies('00',3500);
Call CSNDPKB;

public_key_length = c2d(pkb_key_token_length);
public_key = substr(pkb_key_token,1,public_key_length)
say "public key token: " c2x(public_key);

say "-----------------------------------------------------------------"
say "End of Sample"
say "-----------------------------------------------------------------"

exit;

/* --------------------------------------------------------------- */
/* CSNDPKB - PKA Key Token Build                                   */
/*                                                                 */
/* Creates PKA key tokens.                                         */
/*                                                                 */
/* See the ICSF Application Programmer's Guide for more details.   */
/* --------------------------------------------------------------- */
CSNDPKB:

PKB_RC = 'FFFFFFFF'x;
PKB_RS = 'FFFFFFFF'x;
PKB_exit_data_length         = '00000000'x;
PKB_exit_data                = '';
PKB_private_key_name_length  = '00000000'x;
PKB_private_key_name         = '';
PKB_user_assoc_data_length   = '00000000'x;
PKB_user_assoc_data          = '';
PKB_reserved_2_length        = '00000000'x;
PKB_reserved_2               = '';
PKB_reserved_3_length        = '00000000'x;
PKB_reserved_3               = '';
PKB_reserved_4_length        = '00000000'x;
PKB_reserved_4               = '';
PKB_reserved_5_length        = '00000000'x;
PKB_reserved_5               = '';

ADDRESS linkpgm "CSNDPKB",
   'PKB_RC'                          'PKB_RS'               ,
   'PKB_exit_data_length'            'PKB_exit_data'        ,
   'PKB_rule_array_count'            'PKB_rule_array'       ,
   'PKB_kvs_length'                  'PKB_kvs'              ,
   'PKB_private_key_name_length'     'PKB_private_key_name' ,
   'PKB_user_assoc_data_length'      'PKB_user_assoc_data'  ,
   'PKB_reserved_2_length'           'PKB_reserved_2'       ,
   'PKB_reserved_3_length'           'PKB_reserved_3'       ,
   'PKB_reserved_4_length'           'PKB_reserved_4'       ,
   'PKB_reserved_5_length'           'PKB_reserved_5'       ,
   'PKB_key_token_length'            'PKB_key_token';

if (PKB_RC /= '00000000'x) Then
  say 'PKB Failed   (rc=' c2x(PKB_RC)' rs='c2x(PKB_rs)')' ;

Return;

/* --------------------------------------------------------------- */
/* Debug ;-)                                                       */
/* --------------------------------------------------------------- */
NOVALUE:
Say "Condition NOVALUE was raised."
Say CONDITION("D") "variable was not initialized."
Say SOURCELINE(sigl)
Exit

0 comments
14 views

Permalink