#include "testParams.h"
#include <utilLib/common.h>
#include <stdlib.h>
#include <stdio.h>
#include <security_utilities/threading.h>
#define INNER_LOOPS 100
#define MAX_SIZE 256
int cspRandInit(TestParams *testParams)
{
return 0;
}
int cspRand(TestParams *testParams)
{
unsigned loopNum;
unsigned iLoop;
unsigned char randData[MAX_SIZE];
for(loopNum=0; loopNum<testParams->numLoops; loopNum++) {
if(!testParams->quiet) {
printChar(testParams->progressChar);
}
unsigned char randSize;
CSSM_DATA cdata;
cdata.Data = &randSize;
cdata.Length = 1;
threadGetRandData(testParams, &cdata, 1);
if(randSize == 0) {
randSize = 1;
}
for(iLoop=0; iLoop<INNER_LOOPS; iLoop++) {
CSSM_CC_HANDLE rngHand;
CSSM_RETURN crtn;
crtn = CSSM_CSP_CreateRandomGenContext(testParams->cspHand,
CSSM_ALGID_APPLE_YARROW,
NULL,
randSize,
&rngHand);
if(crtn) {
printError("CSSM_CSP_CreateRandomGenContext", crtn);
return 1;
}
cdata.Data = randData;
cdata.Length = randSize;
crtn = CSSM_GenerateRandom(rngHand, &cdata);
if(crtn) {
printError("CSSM_GenerateRandom", crtn);
return 1;
}
CSSM_DeleteContext(rngHand);
}
}
return 0;
}