]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_keychain/lib/TrustSettings.h
Security-57336.1.9.tar.gz
[apple/security.git] / Security / libsecurity_keychain / lib / TrustSettings.h
diff --git a/Security/libsecurity_keychain/lib/TrustSettings.h b/Security/libsecurity_keychain/lib/TrustSettings.h
deleted file mode 100644 (file)
index ffebdd3..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 2005,2011,2014 Apple Inc. All Rights Reserved.
- * 
- * @APPLE_LICENSE_HEADER_START@
- * 
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- * 
- * @APPLE_LICENSE_HEADER_END@
- */
-
-/*
- * TrustSettings.h - class to manage trusted certs. 
- */
-#ifndef        _TRUST_SETTINGS_H_
-#define _TRUST_SETTINGS_H_
-
-#include "SecTrust.h"
-#include <security_keychain/StorageManager.h>
-#include <security_keychain/SecTrustSettings.h>
-
-/*
- * Clarification of the bool arguments to our main constructor.
- */
-#define CREATE_YES     true
-#define CREATE_NO      false
-#define TRIM_YES       true
-#define TRIM_NO                false
-
-namespace Security
-{
-
-namespace KeychainCore
-{
-
-/* 
- * Additional values for the SecTrustSettingsDomain enum.
- */
-enum {
-       /*
-        * This indicates a TrustSettings that exists only in memory; it
-        * can't be written to disk. 
-        */
-       kSecTrustSettingsDomainMemory = 100
-};
-
-class TrustSettings
-{
-private:
-       TrustSettings(SecTrustSettingsDomain domain);
-
-public:
-
-       /* 
-        * Normal constructor, from disk.
-        * If create is true, the absence of an on-disk TrustSettings file
-        * results in the creation of a new empty TrustSettings. If create is 
-        * false and no on-disk TrustSettings exists, errSecItemNotFound is
-        * thrown.
-        * If trim is true, the components of the on-disk TrustSettings not
-        * needed for cert evaluation are discarded. This is for TrustSettings
-        * that will be cached in memory long-term. 
-        */
-       static OSStatus CreateTrustSettings(
-               SecTrustSettingsDomain                          domain,
-               bool                                                            create,
-               bool                                                            trim,
-               TrustSettings*&                                         ts);
-
-       /* 
-        * Create from external data, obtained by createExternal().
-        * If externalData is NULL, we'll create an empty mTrustDict.
-        */
-       static OSStatus CreateTrustSettings(
-               SecTrustSettingsDomain                          domain,
-               CFDataRef                                                       externalData,
-               TrustSettings*&                                         ts);
-
-       ~TrustSettings();
-       
-       /* 
-        * Evaluate specified cert. Returns true if we found a matching 
-        * record for the cert. 
-        */
-       bool evaluateCert(
-               CFStringRef                             certHashStr,
-               const CSSM_OID                  *policyOID,                     /* optional */
-               const char                              *policyString,          /* optional */
-               SecTrustSettingsKeyUsage keyUsage,                      /* optional */
-               bool                                    isRootCert,                     /* for checking default setting */
-               CSSM_RETURN                             **allowedErrors,        /* mallocd and RETURNED */
-               uint32                                  *numAllowedErrors,      /* RETURNED */
-               SecTrustSettingsResult  *resultType,            /* RETURNED */
-               bool                                    *foundAnyEntry);        /* RETURNED - there is SOME entry for 
-                                                                                                        *   this cert */
-               
-       /* 
-        * Only certs with a SecTrustSettingsResult of kSecTrustSettingsResultTrustRoot
-        * or kSecTrustSettingsResultTrustAsRoot will be returned.  
-        */
-       void findQualifiedCerts(
-               StorageManager::KeychainList    &keychains,
-               /* 
-                * If findAll is true, all certs are returned and the subsequent 
-                * qualifiers are ignored 
-                */
-               bool                                                    findAll,
-               /* if true, only return root (self-signed) certs */
-               bool                                                    onlyRoots,
-               const CSSM_OID                                  *policyOID,             /* optional */
-               const char                                              *policyString,  /* optional */
-               SecTrustSettingsKeyUsage                keyUsage,               /* optional */
-               CFMutableArrayRef                               certArray);             /* certs appended here */
-               
-       /*
-        * Find all certs in specified keychain list which have entries in this trust record.
-        * Certs already in the array are not added.
-        */
-       void findCerts(
-               StorageManager::KeychainList    &keychains,
-               CFMutableArrayRef                               certArray);
-       
-       /*
-        * Obtain trust settings for the specified cert. Returned settings array
-        * is in the public API form; caller must release. Returns NULL
-        * (does not throw) if the cert is not present in this TrustRecord. 
-        * The certRef argument can be kSecTrustSettingsDefaultRootCertSetting. 
-        */
-       CFArrayRef copyTrustSettings(
-               SecCertificateRef       certRef);
-               
-       /* 
-        * Obtain the mod date for the specified cert's trust settings.
-     * Returns NULL (does not throw) if the cert is not present in this 
-        * TrustRecord.
-        * The certRef argument can be kSecTrustSettingsDefaultRootCertSetting. 
-        */
-       CFDateRef copyModDate(
-               SecCertificateRef       certRef);
-
-       /*
-        * Modify cert's trust settings, or add a new cert to the record. 
-        * The certRef argument can be kSecTrustSettingsDefaultRootCertSetting. 
-        */
-       void setTrustSettings(
-               SecCertificateRef       certRef,
-               CFTypeRef                       trustSettingsDictOrArray);
-               
-       /*
-        * Delete a certificate's trust settings. 
-        * Throws errSecItemNotFound if there currently are no settings.
-        * The certRef argument can be kSecTrustSettingsDefaultRootCertSetting. 
-        */
-       void deleteTrustSettings(
-               SecCertificateRef       certRef);
-               
-       /* 
-        * Flush property list data out to disk if dirty.
-        */
-       void flushToDisk();
-
-       /*
-        * Obtain external representation of TrustSettings data.
-        */
-       CFDataRef createExternal();
-
-private:
-       /* common code to init mPropList from raw data */
-       void initFromData(
-               CFDataRef                       trustSettingsData);
-
-       /*
-        * Find a given cert's entry in mTrustDict. 
-        * Returned dictionary is not refcounted. 
-        */ 
-       CFDictionaryRef findDictionaryForCert(
-               SecCertificateRef       certRef);
-
-       /*
-        * Find entry in mTrustDict given cert hash string. 
-        */
-       CFDictionaryRef findDictionaryForCertHash(
-               CFStringRef             certHashStr);
-               
-       /*
-        * Validate incoming API-style trust settings, which may be NULL, a 
-        * dictionary, or an array of dictionaries. We return a deep-copied, 
-        * refcounted CFArray, in internal format, in any case as long as the 
-        * incoming parameter is good.
-        */
-       CFArrayRef validateApiTrustSettings(
-               CFTypeRef trustSettingsDictOrArray,
-               Boolean isSelfSigned);
-
-       /* 
-        * Validate an usage constraint array from disk as part of our mPropDict
-        * array. Returns true if OK, else returns false. 
-        */
-       bool validateTrustSettingsArray(
-               CFArrayRef trustSettings);
-               
-       /* 
-        * Obtain issuer and serial number for specified cert, both 
-        * returned as CFDataRefs owned by caller. 
-        */
-       void copyIssuerAndSerial(
-               SecCertificateRef       cert,
-               CFDataRef                       *issuer,                /* optional, RETURNED */
-               CFDataRef                       *serial);               /* RETURNED */
-               
-       /*
-        * Validate mPropDict after it's read from disk. Allows subsequent use of 
-        * mPropDict and mTrustDict to proceed with relative impunity. 
-        * If trim is true, we remove fields in the per-cert dictionaries which 
-        * are not needed for cert evaluation. We also release the top-level
-        * mPropList, which serves as a "this is trimmed" indicator if NULL. 
-        */
-       void validatePropList(bool trim);
-
-       /* fatal error abort */
-       void abort(
-               const char                      *why,
-               OSStatus                        err);
-
-       /* the overall parsed TrustSettings - may be NULL if this is trimmed */
-       CFMutableDictionaryRef                  mPropList;
-       
-       /* and the main thing we work with, the dictionary of per-cert trust settings */
-       CFMutableDictionaryRef                  mTrustDict;
-       
-       /* version number of mPropDict */
-       SInt32                                                  mDictVersion;
-
-       SecTrustSettingsDomain                  mDomain;
-       bool                                                    mDirty;         /* we've changed mPropDict since creation */
-};
-
-} /* end namespace KeychainCore */
-
-} /* end namespace Security */
-
-#endif /* _TRUST_SETTINGS_H_ */
-