+++ /dev/null
-/*
- * secTrustEval.cpp
- *
- * doSet up SecTrust object, do a SecTrustEvaluate, release.
- */
-#include "testParams.h"
-#include <Security/cssm.h>
-#include <utilLib/common.h>
-#include <utilLib/cspwrap.h>
-#include <clAppUtils/clutils.h>
-#include <clAppUtils/tpUtils.h>
-#include <security_cdsa_utils/cuFileIo.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <Security/Security.h>
-
-#define HOLD_SEARCH_LIST 0
-
-/* for malloc debug */
-#define DO_PAUSE 0
-
-//static const char *CERT_FILE = "amazon_v3.100.cer";
-static const char *CERT_FILE = "cduniverse_v3.100.cer";
-
-/* common data, our known good cert, shared by all threads */
-static unsigned char *certData = NULL;
-static unsigned certLength = 0;
-
-/* read in our known good cert file, just once */
-int secTrustEvalInit(TestParams *testParams)
-{
- if(certData != NULL) {
- return 0;
- }
- if(testParams->verbose) {
- printf("secTrusEval thread %d: reading cert file %s...\n",
- testParams->threadNum, CERT_FILE);
- }
- if(readFile(CERT_FILE, &certData, &certLength)) {
- printf("Error reading %s; aborting\n", CERT_FILE);
- printf("***This test must be run from the clxutils/threadTest directory.\n");
- return 1;
- }
- return 0;
-}
-
-
-int secTrustEval(TestParams *testParams)
-{
- unsigned loopNum;
- SecCertificateRef certRef;
- const CSSM_DATA cdata = {certLength, (uint8 *)certData};
-
- OSStatus ortn = SecCertificateCreateFromData(&cdata,
- CSSM_CERT_X_509v3,
- CSSM_CERT_ENCODING_DER,
- &certRef);
- if(ortn) {
- cssmPerror("SecCertificateCreateFromData", ortn);
- return (int)ortn;
- }
-
- #if HOLD_SEARCH_LIST
- CFArrayRef sl;
- ortn = SecKeychainCopySearchList(&sl);
- if(ortn) {
- cssmPerror("SecPolicySearchCreate", ortn);
- return (int)ortn;
- }
- #endif
-
- for(loopNum=0; loopNum<testParams->numLoops; loopNum++) {
- if(testParams->verbose) {
- printf("secTrustEval loop %d\n", loopNum);
- }
- else if(!testParams->quiet) {
- printChar(testParams->progressChar);
- }
-
- /* from here on emulate exactly what SecureTransport does */
- CFMutableArrayRef certs;
- certs = CFArrayCreateMutable(NULL, 1, &kCFTypeArrayCallBacks);
- CFArrayInsertValueAtIndex(certs, 0, certRef);
-
- SecPolicyRef policy = NULL;
- SecPolicySearchRef policySearch = NULL;
-
- OSStatus ortn = SecPolicySearchCreate(CSSM_CERT_X_509v3,
- &CSSMOID_APPLE_TP_SSL,
- NULL, // policy opts
- &policySearch);
- if(ortn) {
- cssmPerror("SecPolicySearchCreate", ortn);
- return (int)ortn;
- }
-
- ortn = SecPolicySearchCopyNext(policySearch, &policy);
- if(ortn) {
- cssmPerror("SecPolicySearchCopyNext", ortn);
- return (int)ortn;
- }
- CFRelease(policySearch);
-
- SecTrustRef secTrust;
- ortn = SecTrustCreateWithCertificates(certs, policy, &secTrust);
- if(ortn) {
- cssmPerror("SecTrustCreateWithCertificates", ortn);
- return (int)ortn;
- }
- /* no action data for now */
-
- SecTrustResultType secTrustResult;
- ortn = SecTrustEvaluate(secTrust, &secTrustResult);
- if(ortn) {
- cssmPerror("SecTrustEvaluate", ortn);
- return (int)ortn;
- }
-
- CFRelease(certs);
- CFRelease(secTrust);
- CFRelease(policy);
-
- #if DO_PAUSE
- fpurge(stdin);
- printf("Hit CR to continue: ");
- getchar();
- #endif
- } /* outer loop */
- #if HOLD_SEARCH_LIST
- CFRelease(sl);
- #endif
- return 0;
-}