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