<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en-us" xml:lang="en-us"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="security" content="public" /> <meta name="Robots" content="index,follow" /> <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' /> <meta name="DC.Type" content="reference" /> <meta name="DC.Title" content="Example: ILE C program for setting the min and max values for master key shares in your Cryptographic Coprocessor" /> <meta name="abstract" content="Change this program example to suit your needs for setting the min and max values for master key shares in your Cryptographic Coprocessor." /> <meta name="description" content="Change this program example to suit your needs for setting the min and max values for master key shares in your Cryptographic Coprocessor." /> <meta name="DC.Relation" scheme="URI" content="rzajcworking.htm" /> <meta name="copyright" content="(C) Copyright IBM Corporation 2006" /> <meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" /> <meta name="DC.Format" content="XHTML" /> <meta name="DC.Identifier" content="setmofnc" /> <meta name="DC.Language" content="en-us" /> <!-- All rights reserved. Licensed Materials Property of IBM --> <!-- US Government Users Restricted Rights --> <!-- Use, duplication or disclosure restricted by --> <!-- GSA ADP Schedule Contract with IBM Corp. --> <link rel="stylesheet" type="text/css" href="./ibmdita.css" /> <link rel="stylesheet" type="text/css" href="./ic.css" /> <title>Example: ILE C program for setting the min and max values for master key shares in your Cryptographic Coprocessor</title> </head> <body id="setmofnc"><a name="setmofnc"><!-- --></a> <!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script> <h1 class="topictitle1">Example: ILE C program for setting the min and max values for master key shares in your Cryptographic Coprocessor</h1> <div><p>Change this program example to suit your needs for setting the min and max values for master key shares in your Cryptographic Coprocessor. </p> <div class="section"><div class="p"><div class="note"><span class="notetitle">Note:</span> Read the <a href="codedisclaimer.htm#codedisclaimer">Code license and disclaimer information</a> for important legal information.</div> </div> </div> <div class="example"> <pre>/*-------------------------------------------------------------------*/ /* Set the M-of-N values in the Coprocessor. These values are */ /* used in cloning of the master key. The master key is */ /* cryptographically split into N number of parts and M number of */ /* parts are needed to recover it. */ /* */ /* COPYRIGHT 5769-SS1 (C) IBM CORP. 1999, 2000 */ /* */ /* This material contains programming source code for your */ /* consideration. These examples have not been thoroughly */ /* tested under all conditions. IBM, therefore, cannot */ /* guarantee or imply reliability, serviceability, or function */ /* of these program. All programs contained herein are */ /* provided to you "AS IS". THE IMPLIED WARRANTIES OF */ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ /* ARE EXPRESSLY DISCLAIMED. IBM provides no program services for */ /* these programs and files. */ /* */ /* */ /* Note: Input format is more fully described in Chapter 2 of */ /* IBM CCA Basic Services Reference and Guide */ /* (SC31-8609) publication. */ /* */ /* Parameters: */ /* none. */ /* */ /* Example: */ /* CALL PGM(SETMOFN) PARM(5 15) */ /* */ /* */ /* Note: This program assumes the device to use */ /* already identified either by defaulting to the CRP01 */ /* device or by being explicitly named using the */ /* Cryptographic_Resource_Allocate verb. Also this */ /* device must be varied on and you must be authorized */ /* to use this device description. */ /* */ /* Use these commands to compile this program on the system: */ /* ADDLIBLE LIB(QCCA) */ /* CRTCMOD MODULE(SETMOFN) SRCFILE(SAMPLE) */ /* CRTPGM PGM(SETMOFN) MODULE(SETMOFN) */ /* BNDSRVPGM(QCCA/CSUACFC) */ /* */ /* Note: Authority to the CSUACFC service program in the */ /* QCCA library is assumed. */ /* */ /* The Common Cryptographic Architecture (CCA) verb used is */ /* Cryptographic_Facilites_Control (CSUACFC). */ /* */ /*-------------------------------------------------------------------*/ #include "csucincl.h" /* header file for CCA Cryptographic */ /* Service Provider */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "decimal.h" /*-------------------------------------------------------------------*/ /* standard return codes */ /*-------------------------------------------------------------------*/ #define ERROR -1 #define OK 0 #define WARNING 4 int main(int argc, char *argv[]) { /*-------------------------------------------------------------------*/ /* standard CCA parameters */ /*-------------------------------------------------------------------*/ long return_code = 0; long reason_code = 0; long exit_data_length = 2; char exit_data[4]; char rule_array[2][8]; long rule_array_count = 2; /*-------------------------------------------------------------------*/ /* fields unique to this sample program */ /*-------------------------------------------------------------------*/ decimal(15,5) mparm, nparm; long verb_data[2]; long verb_data_length = 8; /*-------------------------------------------------------------------*/ /* Process parameters. Numeric parms from the command line are */ /* passed in decimal 15,5 format. The parms need to be converted */ /* to int format. */ /*-------------------------------------------------------------------*/ memcpy(&mparm,argv[1],sizeof(mparm)); memcpy(&nparm,argv[2],sizeof(nparm)); verb_data[0] = mparm; verb_data[1] = nparm; /*-------------------------------------------------------------------*/ /* Set keywords in the rule array */ /*-------------------------------------------------------------------*/ memcpy(rule_array,"ADAPTER1SET-MOFN", 16); /*-------------------------------------------------------------------*/ /* Invoke the verb to set the M of N values */ /*-------------------------------------------------------------------*/ CSUACFC( &return_code, &reason_code, &exit_data_length, exit_data, &rule_array_count, (char *)rule_array, &verb_data_length, (unsigned char *)verb_data); /*-------------------------------------------------------------------*/ /* Check the results of the call */ /*-------------------------------------------------------------------*/ if ( (return_code == OK) | (return_code == WARNING) ) { printf("M of N values were successfully set with "); printf("return/reason codes %ld/%ld\n\n", return_code, reason_code); return(OK); } else { printf("An error occurred while setting the M of N values.\n"); printf("Return/reason codes %ld/%ld\n\n", return_code, reason_code); return(ERROR); } }</pre> </div> </div> <div> <div class="familylinks"> <div class="parentlink"><strong>Parent topic:</strong> <a href="rzajcworking.htm" title="After you set up your Cryptographic Coprocessor, you can begin writing programs to make use of your Cryptographic Coprocessor's cryptographic functions.">Manage the Cryptographic Coprocessor</a></div> </div> </div> </body> </html>