]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_cssm/lib/cssmtype.h
Security-55163.44.tar.gz
[apple/security.git] / libsecurity_cssm / lib / cssmtype.h
diff --git a/libsecurity_cssm/lib/cssmtype.h b/libsecurity_cssm/lib/cssmtype.h
new file mode 100644 (file)
index 0000000..aaf1746
--- /dev/null
@@ -0,0 +1,2079 @@
+/*
+ * Copyright (c) 1999-2002,2004 Apple Computer, 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@
+ *
+ * cssmtype.h -- Common Security Services Manager Common Data Types
+ */
+
+#ifndef _CSSMTYPE_H_
+#define _CSSMTYPE_H_  1
+
+#include <Security/cssmconfig.h>
+
+/* ==========================================================================
+       W A R N I N G : CDSA has been deprecated starting with 10.7.  While the
+       APIs will continue to work, developers should update their code to use
+       the APIs that are suggested and NOT use the CDSA APIs
+   ========================================================================== */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Handle types. */
+       
+typedef CSSM_INTPTR CSSM_HANDLE, *CSSM_HANDLE_PTR;
+
+typedef uint64 CSSM_LONG_HANDLE, *CSSM_LONG_HANDLE_PTR;
+
+typedef CSSM_HANDLE CSSM_MODULE_HANDLE, *CSSM_MODULE_HANDLE_PTR;
+
+typedef CSSM_LONG_HANDLE CSSM_CC_HANDLE; /* Cryptographic Context Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_CSP_HANDLE; /* Cryptographic Service Provider Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_TP_HANDLE; /* Trust Policy Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_AC_HANDLE; /* Authorization Computation Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_CL_HANDLE; /* Certificate Library Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_DL_HANDLE; /* Data Storage Library Handle */
+
+typedef CSSM_MODULE_HANDLE CSSM_DB_HANDLE; /* Data Storage Database Handle */
+
+
+/* invalid or NULL value for any CSSM_HANDLE type */
+enum {
+    CSSM_INVALID_HANDLE =                              0
+};
+
+
+/* Data Types for Core Services */
+
+typedef sint32 CSSM_BOOL;
+enum {
+       CSSM_FALSE =                                            0,
+       CSSM_TRUE =                                                     !CSSM_FALSE
+};
+
+/* The standard declares this as uint32 but we changed it to sint32 to match OSStatus. */
+typedef sint32 CSSM_RETURN;
+enum {
+       CSSM_OK =                                                       0
+};
+
+enum {
+       CSSM_MODULE_STRING_SIZE =                       64
+};
+typedef char CSSM_STRING [CSSM_MODULE_STRING_SIZE + 4];
+
+typedef struct cssm_data {
+    CSSM_SIZE Length; /* in bytes */
+    uint8 *Data;
+} CSSM_DATA DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DATA_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_guid {
+    uint32 Data1;
+    uint16 Data2;
+    uint16 Data3;
+    uint8 Data4[8];
+} CSSM_GUID DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_GUID_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_BITMASK;
+typedef CSSM_BITMASK CSSM_KEY_HIERARCHY;
+enum {
+       CSSM_KEY_HIERARCHY_NONE =                       0,
+       CSSM_KEY_HIERARCHY_INTEG =                      1,
+       CSSM_KEY_HIERARCHY_EXPORT =                     2
+};
+
+typedef CSSM_BITMASK CSSM_PVC_MODE;
+enum {
+       CSSM_PVC_NONE =                                         0,
+       CSSM_PVC_APP =                                          1,
+       CSSM_PVC_SP =                                           2
+};
+
+typedef uint32 CSSM_PRIVILEGE_SCOPE;
+enum {
+       CSSM_PRIVILEGE_SCOPE_NONE =                     0,
+       CSSM_PRIVILEGE_SCOPE_PROCESS =          1,
+       CSSM_PRIVILEGE_SCOPE_THREAD =           2
+};
+
+typedef struct cssm_version {
+    uint32 Major;
+    uint32 Minor;
+} CSSM_VERSION DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_VERSION_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_SERVICE_MASK;
+enum {
+       CSSM_SERVICE_CSSM =                             0x1,
+       CSSM_SERVICE_CSP =                              0x2,
+       CSSM_SERVICE_DL =                               0x4,
+       CSSM_SERVICE_CL =                               0x8,
+       CSSM_SERVICE_TP =                               0x10,
+       CSSM_SERVICE_AC =                               0x20,
+       CSSM_SERVICE_KR =                               0x40
+};
+
+typedef CSSM_SERVICE_MASK CSSM_SERVICE_TYPE;
+
+typedef struct cssm_subservice_uid {
+    CSSM_GUID Guid;
+    CSSM_VERSION Version;
+    uint32 SubserviceId;
+    CSSM_SERVICE_TYPE SubserviceType;
+} CSSM_SUBSERVICE_UID DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_SUBSERVICE_UID_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_MODULE_EVENT, *CSSM_MODULE_EVENT_PTR;
+enum {
+    CSSM_NOTIFY_INSERT =                               1,
+    CSSM_NOTIFY_REMOVE =                               2,
+    CSSM_NOTIFY_FAULT =                                        3
+};
+
+typedef CSSM_RETURN (CSSMAPI *CSSM_API_ModuleEventHandler)
+    (const CSSM_GUID *ModuleGuid,
+     void* AppNotifyCallbackCtx,
+     uint32 SubserviceId,
+     CSSM_SERVICE_TYPE ServiceType,
+     CSSM_MODULE_EVENT EventType);
+
+typedef uint32 CSSM_ATTACH_FLAGS;
+enum {
+       CSSM_ATTACH_READ_ONLY =                 0x00000001
+};
+
+/* Non-export privilege range: (0x00000000 - 0x7FFFFFFF) */
+/* Vendor specific range: (0x80000000 - 0xFFFFFFFF) */
+typedef uint64 CSSM_PRIVILEGE;
+typedef CSSM_PRIVILEGE CSSM_USEE_TAG;
+enum {
+       CSSM_USEE_LAST =                                        0xFF,
+       CSSM_USEE_NONE =                                        0,
+       CSSM_USEE_DOMESTIC =                            1,
+       CSSM_USEE_FINANCIAL =                           2,
+       CSSM_USEE_KRLE =                                        3,
+       CSSM_USEE_KRENT =                                       4,
+       CSSM_USEE_SSL =                                         5,
+       CSSM_USEE_AUTHENTICATION =                      6,
+       CSSM_USEE_KEYEXCH =                                     7,
+       CSSM_USEE_MEDICAL =                                     8,
+       CSSM_USEE_INSURANCE =                           9,
+       CSSM_USEE_WEAK =                                        10
+};
+
+typedef uint32 CSSM_NET_ADDRESS_TYPE;
+enum {
+    CSSM_ADDR_NONE =                                   0,
+    CSSM_ADDR_CUSTOM =                                 1,
+    CSSM_ADDR_URL =                                            2, /* char* */
+    CSSM_ADDR_SOCKADDR =                               3,
+    CSSM_ADDR_NAME =                                   4 /* char* - qualified by access method */
+};
+
+typedef struct cssm_net_address {
+    CSSM_NET_ADDRESS_TYPE AddressType;
+    CSSM_DATA Address;
+} CSSM_NET_ADDRESS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_NET_ADDRESS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_NET_PROTOCOL;
+enum {
+       CSSM_NET_PROTO_NONE =                           0,      /* local */
+       CSSM_NET_PROTO_CUSTOM =                         1,      /* proprietary implementation */
+       CSSM_NET_PROTO_UNSPECIFIED =            2,      /* implementation default */
+       CSSM_NET_PROTO_LDAP =                           3,      /* light weight directory access protocol */
+       CSSM_NET_PROTO_LDAPS =                          4,      /* ldap/ssl where SSL initiates the connection */
+       CSSM_NET_PROTO_LDAPNS =                         5,      /* ldap where ldap negotiates an SSL session */
+       CSSM_NET_PROTO_X500DAP =                        6,      /* x.500 Directory access protocol */
+       CSSM_NET_PROTO_FTP =                            7,      /* ftp for cert/crl fetch */
+       CSSM_NET_PROTO_FTPS =                           8,      /* ftp/ssl/tls where SSL/TLS initiates the connection */
+       CSSM_NET_PROTO_OCSP =                           9,      /* online certificate status protocol */
+       CSSM_NET_PROTO_CMP =                            10,     /* the cert request protocol in PKIX3 */
+       CSSM_NET_PROTO_CMPS =                           11      /* The ssl/tls derivative of CMP */
+};
+
+typedef CSSM_RETURN (CSSMAPI *CSSM_CALLBACK)
+    (CSSM_DATA_PTR OutData, void *CallerCtx);
+
+typedef struct cssm_crypto_data {
+    CSSM_DATA Param;
+    CSSM_CALLBACK Callback;
+    void *CallerCtx;
+} CSSM_CRYPTO_DATA DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CRYPTO_DATA_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef sint32 CSSM_WORDID_TYPE;
+enum {
+       CSSM_WORDID__UNK_ =                                     -1, /* not in dictionary */
+       CSSM_WORDID__NLU_ =                                     0, /* not yet looked up */
+       CSSM_WORDID__STAR_ =                            1,
+       CSSM_WORDID_A =                                         2,
+       CSSM_WORDID_ACL =                                       3,
+       CSSM_WORDID_ALPHA =                                     4,
+       CSSM_WORDID_B =                                         5,
+       CSSM_WORDID_BER =                                       6,
+       CSSM_WORDID_BINARY =                            7,
+       CSSM_WORDID_BIOMETRIC =                         8,
+       CSSM_WORDID_C =                                         9,
+       CSSM_WORDID_CANCELED =                          10,
+       CSSM_WORDID_CERT =                                      11,
+       CSSM_WORDID_COMMENT =                           12,
+       CSSM_WORDID_CRL =                                       13,
+       CSSM_WORDID_CUSTOM =                            14,
+       CSSM_WORDID_D =                                         15,
+       CSSM_WORDID_DATE =                                      16,
+       CSSM_WORDID_DB_DELETE =                         17,
+       CSSM_WORDID_DB_EXEC_STORED_QUERY =      18,
+       CSSM_WORDID_DB_INSERT =                         19,
+       CSSM_WORDID_DB_MODIFY =                         20,
+       CSSM_WORDID_DB_READ =                           21,
+       CSSM_WORDID_DBS_CREATE =                        22,
+       CSSM_WORDID_DBS_DELETE =                        23,
+       CSSM_WORDID_DECRYPT =                           24,
+       CSSM_WORDID_DELETE =                            25,
+       CSSM_WORDID_DELTA_CRL =                         26,
+       CSSM_WORDID_DER =                                       27,
+       CSSM_WORDID_DERIVE =                            28,
+       CSSM_WORDID_DISPLAY =                           29,
+       CSSM_WORDID_DO =                                        30,
+       CSSM_WORDID_DSA =                                       31,
+       CSSM_WORDID_DSA_SHA1 =                          32,
+       CSSM_WORDID_E =                                         33,
+       CSSM_WORDID_ELGAMAL =                           34,
+       CSSM_WORDID_ENCRYPT =                           35,
+       CSSM_WORDID_ENTRY =                                     36,
+       CSSM_WORDID_EXPORT_CLEAR =                      37,
+       CSSM_WORDID_EXPORT_WRAPPED =            38,
+       CSSM_WORDID_G =                                         39,
+       CSSM_WORDID_GE =                                        40,
+       CSSM_WORDID_GENKEY =                            41,
+       CSSM_WORDID_HASH =                                      42,
+       CSSM_WORDID_HASHED_PASSWORD =           43,
+       CSSM_WORDID_HASHED_SUBJECT =            44,
+       CSSM_WORDID_HAVAL =                                     45,
+       CSSM_WORDID_IBCHASH =                           46,
+       CSSM_WORDID_IMPORT_CLEAR =                      47,
+       CSSM_WORDID_IMPORT_WRAPPED =            48,
+       CSSM_WORDID_INTEL =                                     49,
+       CSSM_WORDID_ISSUER =                            50,
+       CSSM_WORDID_ISSUER_INFO =                       51,
+       CSSM_WORDID_K_OF_N =                            52,
+       CSSM_WORDID_KEA =                                       53,
+       CSSM_WORDID_KEYHOLDER =                         54,
+       CSSM_WORDID_L =                                         55,
+       CSSM_WORDID_LE =                                        56,
+       CSSM_WORDID_LOGIN =                                     57,
+       CSSM_WORDID_LOGIN_NAME =                        58,
+       CSSM_WORDID_MAC =                                       59,
+       CSSM_WORDID_MD2 =                                       60,
+       CSSM_WORDID_MD2WITHRSA =                        61,
+       CSSM_WORDID_MD4 =                                       62,
+       CSSM_WORDID_MD5 =                                       63,
+       CSSM_WORDID_MD5WITHRSA =                        64,
+       CSSM_WORDID_N =                                         65,
+       CSSM_WORDID_NAME =                                      66,
+       CSSM_WORDID_NDR =                                       67,
+       CSSM_WORDID_NHASH =                                     68,
+       CSSM_WORDID_NOT_AFTER =                         69,
+       CSSM_WORDID_NOT_BEFORE =                        70,
+       CSSM_WORDID_NULL =                                      71,
+       CSSM_WORDID_NUMERIC =                           72,
+       CSSM_WORDID_OBJECT_HASH =                       73,
+       CSSM_WORDID_ONE_TIME =                          74,
+       CSSM_WORDID_ONLINE =                            75,
+       CSSM_WORDID_OWNER =                                     76,
+       CSSM_WORDID_P =                                         77,
+       CSSM_WORDID_PAM_NAME =                          78,
+       CSSM_WORDID_PASSWORD =                          79,
+       CSSM_WORDID_PGP =                                       80,
+       CSSM_WORDID_PREFIX =                            81,
+       CSSM_WORDID_PRIVATE_KEY =                       82,
+       CSSM_WORDID_PROMPTED_BIOMETRIC =        83,
+       CSSM_WORDID_PROMPTED_PASSWORD =         84,
+       CSSM_WORDID_PROPAGATE =                         85,
+       CSSM_WORDID_PROTECTED_BIOMETRIC =       86,
+       CSSM_WORDID_PROTECTED_PASSWORD =        87,
+       CSSM_WORDID_PROTECTED_PIN =                     88,
+       CSSM_WORDID_PUBLIC_KEY =                        89,
+       CSSM_WORDID_PUBLIC_KEY_FROM_CERT =      90,
+       CSSM_WORDID_Q =                                         91,
+       CSSM_WORDID_RANGE =                                     92,
+       CSSM_WORDID_REVAL =                                     93,
+       CSSM_WORDID_RIPEMAC =                           94,
+       CSSM_WORDID_RIPEMD =                            95,
+       CSSM_WORDID_RIPEMD160 =                         96,
+       CSSM_WORDID_RSA =                                       97,
+       CSSM_WORDID_RSA_ISO9796 =                       98,
+       CSSM_WORDID_RSA_PKCS =                          99,
+       CSSM_WORDID_RSA_PKCS_MD5 =                      100,
+       CSSM_WORDID_RSA_PKCS_SHA1 =                     101,
+       CSSM_WORDID_RSA_PKCS1 =                         102,
+       CSSM_WORDID_RSA_PKCS1_MD5 =                     103,
+       CSSM_WORDID_RSA_PKCS1_SHA1 =            104,
+       CSSM_WORDID_RSA_PKCS1_SIG =                     105,
+       CSSM_WORDID_RSA_RAW =                           106,
+       CSSM_WORDID_SDSIV1 =                            107,
+       CSSM_WORDID_SEQUENCE =                          108,
+       CSSM_WORDID_SET =                                       109,
+       CSSM_WORDID_SEXPR =                                     110,
+       CSSM_WORDID_SHA1 =                                      111,
+       CSSM_WORDID_SHA1WITHDSA =                       112,
+       CSSM_WORDID_SHA1WITHECDSA =                     113,
+       CSSM_WORDID_SHA1WITHRSA =                       114,
+       CSSM_WORDID_SIGN =                                      115,
+       CSSM_WORDID_SIGNATURE =                         116,
+       CSSM_WORDID_SIGNED_NONCE =                      117,
+       CSSM_WORDID_SIGNED_SECRET =                     118,
+       CSSM_WORDID_SPKI =                                      119,
+       CSSM_WORDID_SUBJECT =                           120,
+       CSSM_WORDID_SUBJECT_INFO =                      121,
+       CSSM_WORDID_TAG =                                       122,
+       CSSM_WORDID_THRESHOLD =                         123,
+       CSSM_WORDID_TIME =                                      124,
+       CSSM_WORDID_URI =                                       125,
+       CSSM_WORDID_VERSION =                           126,
+       CSSM_WORDID_X509_ATTRIBUTE =            127,
+       CSSM_WORDID_X509V1 =                            128,
+       CSSM_WORDID_X509V2 =                            129,
+       CSSM_WORDID_X509V3 =                            130,
+       CSSM_WORDID_X9_ATTRIBUTE =                      131,
+       CSSM_WORDID_VENDOR_START =                      0x00010000,
+       CSSM_WORDID_VENDOR_END =                        0x7FFF0000
+};
+
+typedef uint32 CSSM_LIST_ELEMENT_TYPE, *CSSM_LIST_ELEMENT_TYPE_PTR;
+enum {
+       CSSM_LIST_ELEMENT_DATUM =                       0x00,
+       CSSM_LIST_ELEMENT_SUBLIST =                     0x01,
+       CSSM_LIST_ELEMENT_WORDID =                      0x02
+};
+
+typedef uint32 CSSM_LIST_TYPE, *CSSM_LIST_TYPE_PTR;
+enum {
+       CSSM_LIST_TYPE_UNKNOWN =                        0,
+       CSSM_LIST_TYPE_CUSTOM =                         1,
+       CSSM_LIST_TYPE_SEXPR =                          2
+};
+
+typedef struct cssm_list_element *CSSM_LIST_ELEMENT_PTR;
+
+typedef struct cssm_list {
+    CSSM_LIST_TYPE ListType;   /* type of this list */
+    CSSM_LIST_ELEMENT_PTR Head;        /* head of the list */
+    CSSM_LIST_ELEMENT_PTR Tail;        /* tail of the list */
+} CSSM_LIST DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_LIST_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_list_element {
+    struct cssm_list_element *NextElement;     /* next list element */
+       CSSM_WORDID_TYPE WordID;        /* integer identifier associated */
+                                                               /* with a Word value */
+    CSSM_LIST_ELEMENT_TYPE ElementType;
+    union {
+        CSSM_LIST Sublist;             /* sublist */
+        CSSM_DATA Word;                /* a byte-string */
+    } Element;
+} CSSM_LIST_ELEMENT;
+
+typedef struct {                               /* 5-tuple definition */
+       CSSM_LIST Issuer;                       /* issuer, or empty if ACL */
+       CSSM_LIST Subject;                      /* subject */
+       CSSM_BOOL Delegate;                     /* permission to delegate */
+       CSSM_LIST AuthorizationTag;     /* authorization field */
+       CSSM_LIST ValidityPeriod;       /* validity information (dates) */
+} CSSM_TUPLE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TUPLE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tuplegroup {
+    uint32 NumberOfTuples;
+    CSSM_TUPLE_PTR Tuples;
+} CSSM_TUPLEGROUP DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TUPLEGROUP_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef CSSM_WORDID_TYPE CSSM_SAMPLE_TYPE;
+enum {
+       CSSM_SAMPLE_TYPE_PASSWORD =                             CSSM_WORDID_PASSWORD,
+       CSSM_SAMPLE_TYPE_HASHED_PASSWORD =              CSSM_WORDID_HASHED_PASSWORD,
+       CSSM_SAMPLE_TYPE_PROTECTED_PASSWORD =   CSSM_WORDID_PROTECTED_PASSWORD,
+       CSSM_SAMPLE_TYPE_PROMPTED_PASSWORD =    CSSM_WORDID_PROMPTED_PASSWORD,
+       CSSM_SAMPLE_TYPE_SIGNED_NONCE =                 CSSM_WORDID_SIGNED_NONCE,
+       CSSM_SAMPLE_TYPE_SIGNED_SECRET =                CSSM_WORDID_SIGNED_SECRET,
+       CSSM_SAMPLE_TYPE_BIOMETRIC =                    CSSM_WORDID_BIOMETRIC,
+       CSSM_SAMPLE_TYPE_PROTECTED_BIOMETRIC =  CSSM_WORDID_PROTECTED_BIOMETRIC,
+       CSSM_SAMPLE_TYPE_PROMPTED_BIOMETRIC =   CSSM_WORDID_PROMPTED_BIOMETRIC,
+       CSSM_SAMPLE_TYPE_THRESHOLD =                    CSSM_WORDID_THRESHOLD
+};
+
+typedef struct cssm_sample {
+    CSSM_LIST TypedSample;
+    const CSSM_SUBSERVICE_UID *Verifier;
+} CSSM_SAMPLE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_SAMPLE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_samplegroup {
+    uint32 NumberOfSamples;
+    const CSSM_SAMPLE *Samples;
+} CSSM_SAMPLEGROUP DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_SAMPLEGROUP_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef void *(CSSMAPI *CSSM_MALLOC)
+    (CSSM_SIZE size,
+     void *allocref);
+
+typedef void (CSSMAPI *CSSM_FREE)
+    (void *memblock,
+     void *allocref);
+
+typedef void *(CSSMAPI *CSSM_REALLOC)
+    (void *memblock,
+     CSSM_SIZE size,
+     void *allocref);
+
+typedef void *(CSSMAPI *CSSM_CALLOC)
+    (uint32 num,
+     CSSM_SIZE size,
+     void *allocref);
+
+typedef struct cssm_memory_funcs {
+    CSSM_MALLOC malloc_func;
+    CSSM_FREE free_func;
+    CSSM_REALLOC realloc_func;
+    CSSM_CALLOC calloc_func;
+    void *AllocRef;
+} CSSM_MEMORY_FUNCS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_MEMORY_FUNCS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef CSSM_MEMORY_FUNCS CSSM_API_MEMORY_FUNCS;
+typedef CSSM_API_MEMORY_FUNCS *CSSM_API_MEMORY_FUNCS_PTR;
+
+typedef CSSM_RETURN (CSSMAPI * CSSM_CHALLENGE_CALLBACK)
+    (const CSSM_LIST *Challenge,
+     CSSM_SAMPLEGROUP_PTR Response,
+     void *CallerCtx,
+     const CSSM_MEMORY_FUNCS *MemFuncs);
+
+typedef uint32 CSSM_CERT_TYPE, *CSSM_CERT_TYPE_PTR;
+enum {
+    CSSM_CERT_UNKNOWN =                                        0x00,
+    CSSM_CERT_X_509v1 =                                        0x01,
+    CSSM_CERT_X_509v2 =                                        0x02,
+    CSSM_CERT_X_509v3 =                                        0x03,
+    CSSM_CERT_PGP =                                            0x04,
+    CSSM_CERT_SPKI =                                   0x05,
+    CSSM_CERT_SDSIv1 =                                 0x06,
+    CSSM_CERT_Intel =                                  0x08,
+    CSSM_CERT_X_509_ATTRIBUTE =                        0x09, /* X.509 attribute cert */
+    CSSM_CERT_X9_ATTRIBUTE =                   0x0A, /* X9 attribute cert */
+    CSSM_CERT_TUPLE =                                  0x0B,
+    CSSM_CERT_ACL_ENTRY =                              0x0C,
+    CSSM_CERT_MULTIPLE =                               0x7FFE,
+    CSSM_CERT_LAST =                                   0x7FFF,
+       /* Applications wishing to define their own custom certificate
+          type should define and publicly document a uint32 value greater
+          than the CSSM_CL_CUSTOM_CERT_TYPE */
+       CSSM_CL_CUSTOM_CERT_TYPE =                      0x08000
+};
+
+typedef uint32 CSSM_CERT_ENCODING, *CSSM_CERT_ENCODING_PTR;
+enum {
+    CSSM_CERT_ENCODING_UNKNOWN =               0x00,
+    CSSM_CERT_ENCODING_CUSTOM =                        0x01,
+    CSSM_CERT_ENCODING_BER =                   0x02,
+    CSSM_CERT_ENCODING_DER =                   0x03,
+    CSSM_CERT_ENCODING_NDR =                   0x04,
+    CSSM_CERT_ENCODING_SEXPR =                 0x05,
+    CSSM_CERT_ENCODING_PGP =                   0x06,
+    CSSM_CERT_ENCODING_MULTIPLE =              0x7FFE,
+    CSSM_CERT_ENCODING_LAST =                  0x7FFF,
+       /* Applications wishing to define their own custom certificate
+          encoding should create a uint32 value greater than the
+          CSSM_CL_CUSTOM_CERT_ENCODING */
+       CSSM_CL_CUSTOM_CERT_ENCODING =          0x8000
+};
+
+typedef struct cssm_encoded_cert {
+    CSSM_CERT_TYPE CertType;                   /* type of certificate */
+    CSSM_CERT_ENCODING CertEncoding;   /* encoding for this packed cert */
+    CSSM_DATA CertBlob;                                        /* packed cert */
+} CSSM_ENCODED_CERT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ENCODED_CERT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_CERT_PARSE_FORMAT, *CSSM_CERT_PARSE_FORMAT_PTR;
+enum {
+       CSSM_CERT_PARSE_FORMAT_NONE =                   0x00,
+       CSSM_CERT_PARSE_FORMAT_CUSTOM =                 0x01, /* void* */
+       CSSM_CERT_PARSE_FORMAT_SEXPR =                  0x02, /* CSSM_LIST */
+       CSSM_CERT_PARSE_FORMAT_COMPLEX =                0x03, /* void* */
+       CSSM_CERT_PARSE_FORMAT_OID_NAMED =              0x04, /* CSSM_FIELDGROUP */
+       CSSM_CERT_PARSE_FORMAT_TUPLE =                  0x05, /* CSSM_TUPLE */
+       CSSM_CERT_PARSE_FORMAT_MULTIPLE =               0x7FFE,
+/* multiple forms, each cert carries a
+   parse format indicator */
+       CSSM_CERT_PARSE_FORMAT_LAST =                   0x7FFF,
+/* Applications wishing to define their
+   own custom parse format should create
+   a * uint32 value greater than the
+   CSSM_CL_CUSTOM_CERT_PARSE_FORMAT */
+       CSSM_CL_CUSTOM_CERT_PARSE_FORMAT =              0x8000
+};
+
+typedef struct cssm_parsed_cert {
+    CSSM_CERT_TYPE CertType; /* certificate type */
+    CSSM_CERT_PARSE_FORMAT ParsedCertFormat;
+    /* struct of ParsedCert */
+    void *ParsedCert; /* parsed cert (to be typecast) */
+} CSSM_PARSED_CERT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_PARSED_CERT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_cert_pair {
+    CSSM_ENCODED_CERT EncodedCert; /* an encoded certificate blob */
+    CSSM_PARSED_CERT ParsedCert; /* equivalent parsed certificate */
+} CSSM_CERT_PAIR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CERT_PAIR_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_CERTGROUP_TYPE, *CSSM_CERTGROUP_TYPE_PTR;
+enum {
+       CSSM_CERTGROUP_DATA =                           0x00,
+       CSSM_CERTGROUP_ENCODED_CERT =           0x01,
+       CSSM_CERTGROUP_PARSED_CERT =            0x02,
+       CSSM_CERTGROUP_CERT_PAIR =                      0x03
+};
+
+typedef struct cssm_certgroup {
+    CSSM_CERT_TYPE CertType;
+    CSSM_CERT_ENCODING CertEncoding;
+    uint32 NumCerts; /* # of certificates in this list */
+    union {
+        CSSM_DATA_PTR CertList; /* legacy list of single type certificate blobs */
+        CSSM_ENCODED_CERT_PTR EncodedCertList;
+        /* list of multi-type certificate blobs */
+        CSSM_PARSED_CERT_PTR ParsedCertList;
+        /* list of multi-type parsed certs */
+        CSSM_CERT_PAIR_PTR PairCertList;
+        /*list of single or multi-type certs with two representations: blob and parsed */
+    } GroupList;
+    CSSM_CERTGROUP_TYPE CertGroupType;
+    /* type of structure in the GroupList */
+    void *Reserved; /* reserved for implementation dependent use */
+} CSSM_CERTGROUP, *CSSM_CERTGROUP_PTR;
+
+typedef struct cssm_base_certs {
+    CSSM_TP_HANDLE TPHandle;
+    CSSM_CL_HANDLE CLHandle;
+    CSSM_CERTGROUP Certs;
+} CSSM_BASE_CERTS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_BASE_CERTS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_access_credentials {
+    CSSM_STRING EntryTag;
+    CSSM_BASE_CERTS BaseCerts;
+    CSSM_SAMPLEGROUP Samples;
+    CSSM_CHALLENGE_CALLBACK Callback;
+    void *CallerCtx;
+} CSSM_ACCESS_CREDENTIALS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACCESS_CREDENTIALS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef sint32 CSSM_ACL_SUBJECT_TYPE;
+enum {
+       CSSM_ACL_SUBJECT_TYPE_ANY =                                     CSSM_WORDID__STAR_,
+       CSSM_ACL_SUBJECT_TYPE_THRESHOLD =                       CSSM_WORDID_THRESHOLD,
+       CSSM_ACL_SUBJECT_TYPE_PASSWORD =                        CSSM_WORDID_PASSWORD,
+       CSSM_ACL_SUBJECT_TYPE_PROTECTED_PASSWORD =      CSSM_WORDID_PROTECTED_PASSWORD,
+       CSSM_ACL_SUBJECT_TYPE_PROMPTED_PASSWORD =       CSSM_WORDID_PROMPTED_PASSWORD,
+       CSSM_ACL_SUBJECT_TYPE_PUBLIC_KEY =                      CSSM_WORDID_PUBLIC_KEY,
+       CSSM_ACL_SUBJECT_TYPE_HASHED_SUBJECT =          CSSM_WORDID_HASHED_SUBJECT,
+       CSSM_ACL_SUBJECT_TYPE_BIOMETRIC =                       CSSM_WORDID_BIOMETRIC,
+       CSSM_ACL_SUBJECT_TYPE_PROTECTED_BIOMETRIC =     CSSM_WORDID_PROTECTED_BIOMETRIC,
+       CSSM_ACL_SUBJECT_TYPE_PROMPTED_BIOMETRIC =      CSSM_WORDID_PROMPTED_BIOMETRIC,
+       CSSM_ACL_SUBJECT_TYPE_LOGIN_NAME =                      CSSM_WORDID_LOGIN_NAME,
+       CSSM_ACL_SUBJECT_TYPE_EXT_PAM_NAME =            CSSM_WORDID_PAM_NAME
+};
+
+/* Authorization tag type */
+typedef sint32 CSSM_ACL_AUTHORIZATION_TAG;
+enum {
+       /* All vendor specific constants must be in the number range
+          starting at CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START */
+       CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START =       0x00010000,
+       /* No restrictions. Permission to perform all operations on
+          the resource or available to an ACL owner.  */
+       CSSM_ACL_AUTHORIZATION_ANY =                                            CSSM_WORDID__STAR_,
+       /* Defined authorization tag values for CSPs */
+       CSSM_ACL_AUTHORIZATION_LOGIN =                                          CSSM_WORDID_LOGIN,
+       CSSM_ACL_AUTHORIZATION_GENKEY =                                         CSSM_WORDID_GENKEY,
+       CSSM_ACL_AUTHORIZATION_DELETE =                                         CSSM_WORDID_DELETE,
+       CSSM_ACL_AUTHORIZATION_EXPORT_WRAPPED =                         CSSM_WORDID_EXPORT_WRAPPED,
+       CSSM_ACL_AUTHORIZATION_EXPORT_CLEAR =                           CSSM_WORDID_EXPORT_CLEAR,
+       CSSM_ACL_AUTHORIZATION_IMPORT_WRAPPED =                         CSSM_WORDID_IMPORT_WRAPPED,
+       CSSM_ACL_AUTHORIZATION_IMPORT_CLEAR =                           CSSM_WORDID_IMPORT_CLEAR,
+       CSSM_ACL_AUTHORIZATION_SIGN =                                           CSSM_WORDID_SIGN,
+       CSSM_ACL_AUTHORIZATION_ENCRYPT =                                        CSSM_WORDID_ENCRYPT,
+       CSSM_ACL_AUTHORIZATION_DECRYPT =                                        CSSM_WORDID_DECRYPT,
+       CSSM_ACL_AUTHORIZATION_MAC =                                            CSSM_WORDID_MAC,
+       CSSM_ACL_AUTHORIZATION_DERIVE =                                         CSSM_WORDID_DERIVE,
+       /* Defined authorization tag values for DLs */
+       CSSM_ACL_AUTHORIZATION_DBS_CREATE =                                     CSSM_WORDID_DBS_CREATE,
+       CSSM_ACL_AUTHORIZATION_DBS_DELETE =                                     CSSM_WORDID_DBS_DELETE,
+       CSSM_ACL_AUTHORIZATION_DB_READ =                                        CSSM_WORDID_DB_READ,
+       CSSM_ACL_AUTHORIZATION_DB_INSERT =                                      CSSM_WORDID_DB_INSERT,
+       CSSM_ACL_AUTHORIZATION_DB_MODIFY =                                      CSSM_WORDID_DB_MODIFY,
+       CSSM_ACL_AUTHORIZATION_DB_DELETE =                                      CSSM_WORDID_DB_DELETE
+};
+
+typedef struct cssm_authorizationgroup {
+    uint32 NumberOfAuthTags;
+    CSSM_ACL_AUTHORIZATION_TAG *AuthTags;
+} CSSM_AUTHORIZATIONGROUP DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_AUTHORIZATIONGROUP_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_acl_validity_period {
+    CSSM_DATA StartDate;
+    CSSM_DATA EndDate;
+} CSSM_ACL_VALIDITY_PERIOD DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_VALIDITY_PERIOD_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_acl_entry_prototype {
+    CSSM_LIST TypedSubject;
+    CSSM_BOOL Delegate;
+    CSSM_AUTHORIZATIONGROUP Authorization;
+    CSSM_ACL_VALIDITY_PERIOD TimeRange;
+    CSSM_STRING EntryTag;
+} CSSM_ACL_ENTRY_PROTOTYPE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_ENTRY_PROTOTYPE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_acl_owner_prototype {
+    CSSM_LIST TypedSubject;
+    CSSM_BOOL Delegate;
+} CSSM_ACL_OWNER_PROTOTYPE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_OWNER_PROTOTYPE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef CSSM_RETURN (CSSMAPI * CSSM_ACL_SUBJECT_CALLBACK)
+    (const CSSM_LIST *SubjectRequest,
+     CSSM_LIST_PTR SubjectResponse,
+     void *CallerContext,
+     const CSSM_MEMORY_FUNCS *MemFuncs);
+
+typedef struct cssm_acl_entry_input {
+    CSSM_ACL_ENTRY_PROTOTYPE Prototype;
+    CSSM_ACL_SUBJECT_CALLBACK Callback;
+    void *CallerContext;
+} CSSM_ACL_ENTRY_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_ENTRY_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_resource_control_context {
+    CSSM_ACCESS_CREDENTIALS_PTR AccessCred;
+    CSSM_ACL_ENTRY_INPUT InitialAclEntry;
+} CSSM_RESOURCE_CONTROL_CONTEXT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_RESOURCE_CONTROL_CONTEXT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef CSSM_HANDLE CSSM_ACL_HANDLE;
+
+typedef struct cssm_acl_entry_info {
+    CSSM_ACL_ENTRY_PROTOTYPE EntryPublicInfo;
+    CSSM_ACL_HANDLE EntryHandle;
+} CSSM_ACL_ENTRY_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_ENTRY_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_ACL_EDIT_MODE;
+enum {
+       CSSM_ACL_EDIT_MODE_ADD =                        1,
+       CSSM_ACL_EDIT_MODE_DELETE =                     2,
+       CSSM_ACL_EDIT_MODE_REPLACE =            3
+};
+
+typedef struct cssm_acl_edit {
+    CSSM_ACL_EDIT_MODE EditMode;
+    CSSM_ACL_HANDLE OldEntryHandle;
+    const CSSM_ACL_ENTRY_INPUT *NewEntry;
+} CSSM_ACL_EDIT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ACL_EDIT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+#if defined(WIN32)
+typedef FARPROC CSSM_PROC_ADDR;
+#else
+typedef void (CSSMAPI *CSSM_PROC_ADDR) ();
+#endif
+typedef CSSM_PROC_ADDR *CSSM_PROC_ADDR_PTR;
+
+typedef struct cssm_func_name_addr {
+    CSSM_STRING Name;
+    CSSM_PROC_ADDR Address;
+} CSSM_FUNC_NAME_ADDR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_FUNC_NAME_ADDR_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+
+/* Data Types for Cryptographic Services  */
+
+typedef struct cssm_date {
+    uint8 Year[4];
+    uint8 Month[2];
+    uint8 Day[2];
+} CSSM_DATE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DATE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_range {
+    uint32 Min; /* inclusive minimum value */
+    uint32 Max; /* inclusive maximum value */
+} CSSM_RANGE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_RANGE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_query_size_data {
+    uint32 SizeInputBlock; /* size of input data block */
+    uint32 SizeOutputBlock; /* size of resulting output data block */
+} CSSM_QUERY_SIZE_DATA DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_QUERY_SIZE_DATA_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_HEADERVERSION;
+enum {
+       CSSM_KEYHEADER_VERSION =                2
+};
+
+typedef struct cssm_key_size {
+    uint32 LogicalKeySizeInBits; /* Logical key size in bits */
+    uint32 EffectiveKeySizeInBits; /* Effective key size in bits */
+} CSSM_KEY_SIZE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_KEY_SIZE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_KEYBLOB_TYPE;
+enum {
+       CSSM_KEYBLOB_RAW =                              0, /* The blob is a clear, raw key */
+       CSSM_KEYBLOB_REFERENCE =                2, /* The blob is a reference to a key */
+       CSSM_KEYBLOB_WRAPPED =                  3, /* The blob is a wrapped RAW key */
+       CSSM_KEYBLOB_OTHER =                    0xFFFFFFFF
+};
+
+typedef uint32 CSSM_KEYBLOB_FORMAT;
+enum {
+       /* Raw Format */
+       CSSM_KEYBLOB_RAW_FORMAT_NONE =                  0,
+       /* No further conversion need to be done */
+       CSSM_KEYBLOB_RAW_FORMAT_PKCS1 =                 1, /* RSA PKCS1 V1.5 */
+       CSSM_KEYBLOB_RAW_FORMAT_PKCS3 =                 2, /* RSA PKCS3 V1.5 */
+       CSSM_KEYBLOB_RAW_FORMAT_MSCAPI =                3, /* Microsoft CAPI V2.0 */
+       CSSM_KEYBLOB_RAW_FORMAT_PGP =                   4, /* PGP V */
+       CSSM_KEYBLOB_RAW_FORMAT_FIPS186 =               5, /* US Gov. FIPS 186 - DSS V */
+       CSSM_KEYBLOB_RAW_FORMAT_BSAFE =                 6, /* RSA Bsafe V3.0 */
+       CSSM_KEYBLOB_RAW_FORMAT_CCA =                   9, /* CCA clear public key blob */
+       CSSM_KEYBLOB_RAW_FORMAT_PKCS8 =                 10, /* RSA PKCS8 V1.2 */
+       CSSM_KEYBLOB_RAW_FORMAT_SPKI =                  11, /* SPKI Specification */
+       CSSM_KEYBLOB_RAW_FORMAT_OCTET_STRING =  12,
+       CSSM_KEYBLOB_RAW_FORMAT_OTHER =                 0xFFFFFFFF /* Other, CSP defined */
+};
+enum {
+       /* Wrapped Format */
+       CSSM_KEYBLOB_WRAPPED_FORMAT_NONE =              0,
+       /* No further conversion need to be done */
+       CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS8 =             1, /* RSA PKCS8 V1.2 */
+       CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS7 =             2,
+       CSSM_KEYBLOB_WRAPPED_FORMAT_MSCAPI =    3,
+       CSSM_KEYBLOB_WRAPPED_FORMAT_OTHER =             0xFFFFFFFF /* Other, CSP defined */
+};
+enum {
+       /* Reference Format */
+       CSSM_KEYBLOB_REF_FORMAT_INTEGER =               0,      /* Reference is a number or handle */
+       CSSM_KEYBLOB_REF_FORMAT_STRING =                1,      /* Reference is a string or label */
+       CSSM_KEYBLOB_REF_FORMAT_SPKI =                  2,      /* Reference is an SPKI S-expression */
+                                                                                               /* to be evaluated to locate the key */
+       CSSM_KEYBLOB_REF_FORMAT_OTHER =                 0xFFFFFFFF      /* Other, CSP defined */
+};
+
+typedef uint32 CSSM_KEYCLASS;
+enum {
+       CSSM_KEYCLASS_PUBLIC_KEY =              0, /* Key is public key */
+       CSSM_KEYCLASS_PRIVATE_KEY =             1, /* Key is private key */
+       CSSM_KEYCLASS_SESSION_KEY =             2, /* Key is session or symmetric key */
+       CSSM_KEYCLASS_SECRET_PART =             3, /* Key is part of secret key */
+       CSSM_KEYCLASS_OTHER =                   0xFFFFFFFF /* Other */
+};
+
+typedef uint32 CSSM_KEYATTR_FLAGS;
+enum {
+       /* Valid only during call to an API. Will never be valid when set in a key header */
+       CSSM_KEYATTR_RETURN_DEFAULT =           0x00000000,
+       CSSM_KEYATTR_RETURN_DATA =                      0x10000000,
+       CSSM_KEYATTR_RETURN_REF =                       0x20000000,
+       CSSM_KEYATTR_RETURN_NONE =                      0x40000000,
+       /* Valid during an API call and in a key header */
+       CSSM_KEYATTR_PERMANENT =                        0x00000001,
+       CSSM_KEYATTR_PRIVATE =                          0x00000002,
+       CSSM_KEYATTR_MODIFIABLE =                       0x00000004,
+       CSSM_KEYATTR_SENSITIVE =                        0x00000008,
+       CSSM_KEYATTR_EXTRACTABLE =                      0x00000020,
+       /* Valid only in a key header generated by a CSP, not valid during an API call */
+       CSSM_KEYATTR_ALWAYS_SENSITIVE =         0x00000010,
+       CSSM_KEYATTR_NEVER_EXTRACTABLE =        0x00000040
+};
+
+typedef uint32 CSSM_KEYUSE;
+enum {
+       CSSM_KEYUSE_ANY =                                       0x80000000,
+       CSSM_KEYUSE_ENCRYPT =                           0x00000001,
+       CSSM_KEYUSE_DECRYPT =                           0x00000002,
+       CSSM_KEYUSE_SIGN =                                      0x00000004,
+       CSSM_KEYUSE_VERIFY =                            0x00000008,
+       CSSM_KEYUSE_SIGN_RECOVER =                      0x00000010,
+       CSSM_KEYUSE_VERIFY_RECOVER =            0x00000020,
+       CSSM_KEYUSE_WRAP =                                      0x00000040,
+       CSSM_KEYUSE_UNWRAP =                            0x00000080,
+       CSSM_KEYUSE_DERIVE =                            0x00000100
+};
+
+typedef uint32 CSSM_ALGORITHMS;
+enum {
+       CSSM_ALGID_NONE =                                       0,
+       CSSM_ALGID_CUSTOM =                                     CSSM_ALGID_NONE + 1,
+       CSSM_ALGID_DH =                                         CSSM_ALGID_NONE + 2,
+       CSSM_ALGID_PH =                                         CSSM_ALGID_NONE + 3,
+       CSSM_ALGID_KEA =                                        CSSM_ALGID_NONE + 4,
+       CSSM_ALGID_MD2 =                                        CSSM_ALGID_NONE + 5,
+       CSSM_ALGID_MD4 =                                        CSSM_ALGID_NONE + 6,
+       CSSM_ALGID_MD5 =                                        CSSM_ALGID_NONE + 7,
+       CSSM_ALGID_SHA1 =                                       CSSM_ALGID_NONE + 8,
+       CSSM_ALGID_NHASH =                                      CSSM_ALGID_NONE + 9,
+       CSSM_ALGID_HAVAL =                                      CSSM_ALGID_NONE + 10,
+       CSSM_ALGID_RIPEMD =                                     CSSM_ALGID_NONE + 11,
+       CSSM_ALGID_IBCHASH =                            CSSM_ALGID_NONE + 12,
+       CSSM_ALGID_RIPEMAC =                            CSSM_ALGID_NONE + 13,
+       CSSM_ALGID_DES =                                        CSSM_ALGID_NONE + 14,
+       CSSM_ALGID_DESX =                                       CSSM_ALGID_NONE + 15,
+       CSSM_ALGID_RDES =                                       CSSM_ALGID_NONE + 16,
+       CSSM_ALGID_3DES_3KEY_EDE =                      CSSM_ALGID_NONE + 17,
+       CSSM_ALGID_3DES_2KEY_EDE =                      CSSM_ALGID_NONE + 18,
+       CSSM_ALGID_3DES_1KEY_EEE =                      CSSM_ALGID_NONE + 19,
+       CSSM_ALGID_3DES_3KEY =                  CSSM_ALGID_3DES_3KEY_EDE,
+       CSSM_ALGID_3DES_3KEY_EEE =              CSSM_ALGID_NONE + 20,
+       CSSM_ALGID_3DES_2KEY =                  CSSM_ALGID_3DES_2KEY_EDE,
+       CSSM_ALGID_3DES_2KEY_EEE =              CSSM_ALGID_NONE + 21,
+       CSSM_ALGID_3DES_1KEY =                          CSSM_ALGID_3DES_3KEY_EEE,
+       CSSM_ALGID_IDEA =                                       CSSM_ALGID_NONE + 22,
+       CSSM_ALGID_RC2 =                                        CSSM_ALGID_NONE + 23,
+       CSSM_ALGID_RC5 =                                        CSSM_ALGID_NONE + 24,
+       CSSM_ALGID_RC4 =                                        CSSM_ALGID_NONE + 25,
+       CSSM_ALGID_SEAL =                                       CSSM_ALGID_NONE + 26,
+       CSSM_ALGID_CAST =                                       CSSM_ALGID_NONE + 27,
+       CSSM_ALGID_BLOWFISH =                           CSSM_ALGID_NONE + 28,
+       CSSM_ALGID_SKIPJACK =                           CSSM_ALGID_NONE + 29,
+       CSSM_ALGID_LUCIFER =                            CSSM_ALGID_NONE + 30,
+       CSSM_ALGID_MADRYGA =                            CSSM_ALGID_NONE + 31,
+       CSSM_ALGID_FEAL =                                       CSSM_ALGID_NONE + 32,
+       CSSM_ALGID_REDOC =                                      CSSM_ALGID_NONE + 33,
+       CSSM_ALGID_REDOC3 =                                     CSSM_ALGID_NONE + 34,
+       CSSM_ALGID_LOKI =                                       CSSM_ALGID_NONE + 35,
+       CSSM_ALGID_KHUFU =                                      CSSM_ALGID_NONE + 36,
+       CSSM_ALGID_KHAFRE =                                     CSSM_ALGID_NONE + 37,
+       CSSM_ALGID_MMB =                                        CSSM_ALGID_NONE + 38,
+       CSSM_ALGID_GOST =                                       CSSM_ALGID_NONE + 39,
+       CSSM_ALGID_SAFER =                                      CSSM_ALGID_NONE + 40,
+       CSSM_ALGID_CRAB =                                       CSSM_ALGID_NONE + 41,
+       CSSM_ALGID_RSA =                                        CSSM_ALGID_NONE + 42,
+       CSSM_ALGID_DSA =                                        CSSM_ALGID_NONE + 43,
+       CSSM_ALGID_MD5WithRSA =                         CSSM_ALGID_NONE + 44,
+       CSSM_ALGID_MD2WithRSA =                         CSSM_ALGID_NONE + 45,
+       CSSM_ALGID_ElGamal =                            CSSM_ALGID_NONE + 46,
+       CSSM_ALGID_MD2Random =                          CSSM_ALGID_NONE + 47,
+       CSSM_ALGID_MD5Random =                          CSSM_ALGID_NONE + 48,
+       CSSM_ALGID_SHARandom =                          CSSM_ALGID_NONE + 49,
+       CSSM_ALGID_DESRandom =                          CSSM_ALGID_NONE + 50,
+       CSSM_ALGID_SHA1WithRSA =                        CSSM_ALGID_NONE + 51,
+       CSSM_ALGID_CDMF =                                       CSSM_ALGID_NONE + 52,
+       CSSM_ALGID_CAST3 =                                      CSSM_ALGID_NONE + 53,
+       CSSM_ALGID_CAST5 =                                      CSSM_ALGID_NONE + 54,
+       CSSM_ALGID_GenericSecret =                      CSSM_ALGID_NONE + 55,
+       CSSM_ALGID_ConcatBaseAndKey =           CSSM_ALGID_NONE + 56,
+       CSSM_ALGID_ConcatKeyAndBase =           CSSM_ALGID_NONE + 57,
+       CSSM_ALGID_ConcatBaseAndData =          CSSM_ALGID_NONE + 58,
+       CSSM_ALGID_ConcatDataAndBase =          CSSM_ALGID_NONE + 59,
+       CSSM_ALGID_XORBaseAndData =                     CSSM_ALGID_NONE + 60,
+       CSSM_ALGID_ExtractFromKey =                     CSSM_ALGID_NONE + 61,
+       CSSM_ALGID_SSL3PreMasterGen =           CSSM_ALGID_NONE + 62,
+       CSSM_ALGID_SSL3MasterDerive =           CSSM_ALGID_NONE + 63,
+       CSSM_ALGID_SSL3KeyAndMacDerive =        CSSM_ALGID_NONE + 64,
+       CSSM_ALGID_SSL3MD5_MAC =                        CSSM_ALGID_NONE + 65,
+       CSSM_ALGID_SSL3SHA1_MAC =                       CSSM_ALGID_NONE + 66,
+       CSSM_ALGID_PKCS5_PBKDF1_MD5 =           CSSM_ALGID_NONE + 67,
+       CSSM_ALGID_PKCS5_PBKDF1_MD2 =           CSSM_ALGID_NONE + 68,
+       CSSM_ALGID_PKCS5_PBKDF1_SHA1 =          CSSM_ALGID_NONE + 69,
+       CSSM_ALGID_WrapLynks =                          CSSM_ALGID_NONE + 70,
+       CSSM_ALGID_WrapSET_OAEP =                       CSSM_ALGID_NONE + 71,
+       CSSM_ALGID_BATON =                                      CSSM_ALGID_NONE + 72,
+       CSSM_ALGID_ECDSA =                                      CSSM_ALGID_NONE + 73,
+       CSSM_ALGID_MAYFLY =                                     CSSM_ALGID_NONE + 74,
+       CSSM_ALGID_JUNIPER =                            CSSM_ALGID_NONE + 75,
+       CSSM_ALGID_FASTHASH =                           CSSM_ALGID_NONE + 76,
+       CSSM_ALGID_3DES =                                       CSSM_ALGID_NONE + 77,
+       CSSM_ALGID_SSL3MD5 =                            CSSM_ALGID_NONE + 78,
+       CSSM_ALGID_SSL3SHA1 =                           CSSM_ALGID_NONE + 79,
+       CSSM_ALGID_FortezzaTimestamp =          CSSM_ALGID_NONE + 80,
+       CSSM_ALGID_SHA1WithDSA =                        CSSM_ALGID_NONE + 81,
+       CSSM_ALGID_SHA1WithECDSA =                      CSSM_ALGID_NONE + 82,
+       CSSM_ALGID_DSA_BSAFE =                          CSSM_ALGID_NONE + 83,
+       CSSM_ALGID_ECDH =                                       CSSM_ALGID_NONE + 84,
+       CSSM_ALGID_ECMQV =                                      CSSM_ALGID_NONE + 85,
+       CSSM_ALGID_PKCS12_SHA1_PBE =            CSSM_ALGID_NONE + 86,
+       CSSM_ALGID_ECNRA =                                      CSSM_ALGID_NONE + 87,
+       CSSM_ALGID_SHA1WithECNRA =                      CSSM_ALGID_NONE + 88,
+       CSSM_ALGID_ECES =                                       CSSM_ALGID_NONE + 89,
+       CSSM_ALGID_ECAES =                                      CSSM_ALGID_NONE + 90,
+       CSSM_ALGID_SHA1HMAC =                           CSSM_ALGID_NONE + 91,
+       CSSM_ALGID_FIPS186Random =                      CSSM_ALGID_NONE + 92,
+       CSSM_ALGID_ECC =                                        CSSM_ALGID_NONE + 93,
+       CSSM_ALGID_MQV =                                        CSSM_ALGID_NONE + 94,
+       CSSM_ALGID_NRA =                                        CSSM_ALGID_NONE + 95,
+       CSSM_ALGID_IntelPlatformRandom =        CSSM_ALGID_NONE + 96,
+       CSSM_ALGID_UTC =                                        CSSM_ALGID_NONE + 97,
+       CSSM_ALGID_HAVAL3 =                                     CSSM_ALGID_NONE + 98,
+       CSSM_ALGID_HAVAL4 =                                     CSSM_ALGID_NONE + 99,
+       CSSM_ALGID_HAVAL5 =                                     CSSM_ALGID_NONE + 100,
+       CSSM_ALGID_TIGER =                                      CSSM_ALGID_NONE + 101,
+       CSSM_ALGID_MD5HMAC =                            CSSM_ALGID_NONE + 102,
+       CSSM_ALGID_PKCS5_PBKDF2 =                       CSSM_ALGID_NONE + 103,
+       CSSM_ALGID_RUNNING_COUNTER =            CSSM_ALGID_NONE + 104,
+       CSSM_ALGID_LAST =                                       CSSM_ALGID_NONE + 0x7FFFFFFF,
+/* All algorithms IDs that are vendor specific, and not
+   part of the CSSM specification should be defined relative
+   to CSSM_ALGID_VENDOR_DEFINED. */
+       CSSM_ALGID_VENDOR_DEFINED =                     CSSM_ALGID_NONE + 0x80000000
+};
+
+typedef uint32 CSSM_ENCRYPT_MODE;
+enum {
+       CSSM_ALGMODE_NONE =                                     0,
+       CSSM_ALGMODE_CUSTOM =                           CSSM_ALGMODE_NONE + 1,
+       CSSM_ALGMODE_ECB =                                      CSSM_ALGMODE_NONE + 2,
+       CSSM_ALGMODE_ECBPad =                           CSSM_ALGMODE_NONE + 3,
+       CSSM_ALGMODE_CBC =                                      CSSM_ALGMODE_NONE + 4,
+       CSSM_ALGMODE_CBC_IV8 =                          CSSM_ALGMODE_NONE + 5,
+       CSSM_ALGMODE_CBCPadIV8 =                        CSSM_ALGMODE_NONE + 6,
+       CSSM_ALGMODE_CFB =                                      CSSM_ALGMODE_NONE + 7,
+       CSSM_ALGMODE_CFB_IV8 =                          CSSM_ALGMODE_NONE + 8,
+       CSSM_ALGMODE_CFBPadIV8 =                        CSSM_ALGMODE_NONE + 9,
+       CSSM_ALGMODE_OFB =                                      CSSM_ALGMODE_NONE + 10,
+       CSSM_ALGMODE_OFB_IV8 =                          CSSM_ALGMODE_NONE + 11,
+       CSSM_ALGMODE_OFBPadIV8 =                        CSSM_ALGMODE_NONE + 12,
+       CSSM_ALGMODE_COUNTER =                          CSSM_ALGMODE_NONE + 13,
+       CSSM_ALGMODE_BC =                                       CSSM_ALGMODE_NONE + 14,
+       CSSM_ALGMODE_PCBC =                                     CSSM_ALGMODE_NONE + 15,
+       CSSM_ALGMODE_CBCC =                                     CSSM_ALGMODE_NONE + 16,
+       CSSM_ALGMODE_OFBNLF =                           CSSM_ALGMODE_NONE + 17,
+       CSSM_ALGMODE_PBC =                                      CSSM_ALGMODE_NONE + 18,
+       CSSM_ALGMODE_PFB =                                      CSSM_ALGMODE_NONE + 19,
+       CSSM_ALGMODE_CBCPD =                            CSSM_ALGMODE_NONE + 20,
+       CSSM_ALGMODE_PUBLIC_KEY =                       CSSM_ALGMODE_NONE + 21,
+       CSSM_ALGMODE_PRIVATE_KEY =                      CSSM_ALGMODE_NONE + 22,
+       CSSM_ALGMODE_SHUFFLE =                          CSSM_ALGMODE_NONE + 23,
+       CSSM_ALGMODE_ECB64 =                            CSSM_ALGMODE_NONE + 24,
+       CSSM_ALGMODE_CBC64 =                            CSSM_ALGMODE_NONE + 25,
+       CSSM_ALGMODE_OFB64 =                            CSSM_ALGMODE_NONE + 26,
+       CSSM_ALGMODE_CFB32 =                            CSSM_ALGMODE_NONE + 28,
+       CSSM_ALGMODE_CFB16 =                            CSSM_ALGMODE_NONE + 29,
+       CSSM_ALGMODE_CFB8 =                                     CSSM_ALGMODE_NONE + 30,
+       CSSM_ALGMODE_WRAP =                                     CSSM_ALGMODE_NONE + 31,
+       CSSM_ALGMODE_PRIVATE_WRAP =                     CSSM_ALGMODE_NONE + 32,
+       CSSM_ALGMODE_RELAYX =                           CSSM_ALGMODE_NONE + 33,
+       CSSM_ALGMODE_ECB128 =                           CSSM_ALGMODE_NONE + 34,
+       CSSM_ALGMODE_ECB96 =                            CSSM_ALGMODE_NONE + 35,
+       CSSM_ALGMODE_CBC128 =                           CSSM_ALGMODE_NONE + 36,
+       CSSM_ALGMODE_OAEP_HASH =                        CSSM_ALGMODE_NONE + 37,
+       CSSM_ALGMODE_PKCS1_EME_V15 =            CSSM_ALGMODE_NONE + 38,
+       CSSM_ALGMODE_PKCS1_EME_OAEP =           CSSM_ALGMODE_NONE + 39,
+       CSSM_ALGMODE_PKCS1_EMSA_V15 =           CSSM_ALGMODE_NONE + 40,
+       CSSM_ALGMODE_ISO_9796 =                 CSSM_ALGMODE_NONE + 41,
+       CSSM_ALGMODE_X9_31 =                    CSSM_ALGMODE_NONE + 42,
+       CSSM_ALGMODE_LAST =                     CSSM_ALGMODE_NONE + 0x7FFFFFFF,
+/* All algorithms modes that are vendor specific, and
+   not part of the CSSM specification should be defined
+   relative to CSSM_ALGMODE_VENDOR_DEFINED. */
+       CSSM_ALGMODE_VENDOR_DEFINED =           CSSM_ALGMODE_NONE + 0x80000000
+};
+
+typedef struct cssm_keyheader {
+    CSSM_HEADERVERSION HeaderVersion; /* Key header version */
+    CSSM_GUID CspId; /* GUID of CSP generating the key */
+    CSSM_KEYBLOB_TYPE BlobType; /* See BlobType enum */
+    CSSM_KEYBLOB_FORMAT Format; /* Raw or Reference format */
+    CSSM_ALGORITHMS AlgorithmId; /* Algorithm ID of key */
+    CSSM_KEYCLASS KeyClass; /* Public/Private/Secret, etc. */
+    uint32 LogicalKeySizeInBits; /* Logical key size in bits */
+    CSSM_KEYATTR_FLAGS KeyAttr; /* Attribute flags */
+    CSSM_KEYUSE KeyUsage; /* Key use flags */
+    CSSM_DATE StartDate; /* Effective date of key */
+    CSSM_DATE EndDate; /* Expiration date of key */
+    CSSM_ALGORITHMS WrapAlgorithmId; /* == CSSM_ALGID_NONE if clear key */
+    CSSM_ENCRYPT_MODE WrapMode; /* if alg supports multiple wrapping modes */
+    uint32 Reserved;
+} CSSM_KEYHEADER DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_KEYHEADER_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_key {
+    CSSM_KEYHEADER KeyHeader; /* Fixed length key header */
+    CSSM_DATA KeyData; /* Variable length key data */
+} CSSM_KEY DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_KEY_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef CSSM_KEY CSSM_WRAP_KEY, *CSSM_WRAP_KEY_PTR;
+
+typedef uint32 CSSM_CSPTYPE;
+enum {
+    CSSM_CSP_SOFTWARE =                                        1,
+    CSSM_CSP_HARDWARE =                                        CSSM_CSP_SOFTWARE + 1,
+    CSSM_CSP_HYBRID =                                  CSSM_CSP_SOFTWARE + 2
+};
+
+/* From DL. */
+typedef struct cssm_dl_db_handle {
+    CSSM_DL_HANDLE DLHandle;
+    CSSM_DB_HANDLE DBHandle;
+} CSSM_DL_DB_HANDLE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DL_DB_HANDLE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_CONTEXT_TYPE;
+enum {
+       CSSM_ALGCLASS_NONE =                            0,
+       CSSM_ALGCLASS_CUSTOM =                          CSSM_ALGCLASS_NONE + 1,
+       CSSM_ALGCLASS_SIGNATURE =                       CSSM_ALGCLASS_NONE + 2,
+       CSSM_ALGCLASS_SYMMETRIC =                       CSSM_ALGCLASS_NONE + 3,
+       CSSM_ALGCLASS_DIGEST =                          CSSM_ALGCLASS_NONE + 4,
+       CSSM_ALGCLASS_RANDOMGEN =                       CSSM_ALGCLASS_NONE + 5,
+       CSSM_ALGCLASS_UNIQUEGEN =                       CSSM_ALGCLASS_NONE + 6,
+       CSSM_ALGCLASS_MAC =                                     CSSM_ALGCLASS_NONE + 7,
+       CSSM_ALGCLASS_ASYMMETRIC =                      CSSM_ALGCLASS_NONE + 8,
+       CSSM_ALGCLASS_KEYGEN =                          CSSM_ALGCLASS_NONE + 9,
+       CSSM_ALGCLASS_DERIVEKEY =                       CSSM_ALGCLASS_NONE + 10
+};
+
+/* Attribute data type tags */
+enum {
+       CSSM_ATTRIBUTE_DATA_NONE =                                      0x00000000,
+       CSSM_ATTRIBUTE_DATA_UINT32 =                            0x10000000,
+       CSSM_ATTRIBUTE_DATA_CSSM_DATA =                         0x20000000,
+       CSSM_ATTRIBUTE_DATA_CRYPTO_DATA =                       0x30000000,
+       CSSM_ATTRIBUTE_DATA_KEY =                                       0x40000000,
+       CSSM_ATTRIBUTE_DATA_STRING =                            0x50000000,
+       CSSM_ATTRIBUTE_DATA_DATE =                                      0x60000000,
+       CSSM_ATTRIBUTE_DATA_RANGE =                                     0x70000000,
+       CSSM_ATTRIBUTE_DATA_ACCESS_CREDENTIALS =        0x80000000,
+       CSSM_ATTRIBUTE_DATA_VERSION =                           0x01000000,
+       CSSM_ATTRIBUTE_DATA_DL_DB_HANDLE =                      0x02000000,
+       CSSM_ATTRIBUTE_DATA_KR_PROFILE =                        0x03000000,
+       CSSM_ATTRIBUTE_TYPE_MASK =                                      0xFF000000
+};
+
+typedef uint32 CSSM_ATTRIBUTE_TYPE;
+enum {
+    CSSM_ATTRIBUTE_NONE =                              0,
+    CSSM_ATTRIBUTE_CUSTOM =                            CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 1,
+    CSSM_ATTRIBUTE_DESCRIPTION =               CSSM_ATTRIBUTE_DATA_STRING                              | 2,
+    CSSM_ATTRIBUTE_KEY =                               CSSM_ATTRIBUTE_DATA_KEY                                 | 3,
+    CSSM_ATTRIBUTE_INIT_VECTOR =               CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 4,
+    CSSM_ATTRIBUTE_SALT =                              CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 5,
+    CSSM_ATTRIBUTE_PADDING =                   CSSM_ATTRIBUTE_DATA_UINT32                              | 6,
+    CSSM_ATTRIBUTE_RANDOM =                            CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 7,
+    CSSM_ATTRIBUTE_SEED =                              CSSM_ATTRIBUTE_DATA_CRYPTO_DATA                 | 8,
+    CSSM_ATTRIBUTE_PASSPHRASE =                        CSSM_ATTRIBUTE_DATA_CRYPTO_DATA                 | 9,
+    CSSM_ATTRIBUTE_KEY_LENGTH =                        CSSM_ATTRIBUTE_DATA_UINT32                              | 10,
+    CSSM_ATTRIBUTE_KEY_LENGTH_RANGE =  CSSM_ATTRIBUTE_DATA_RANGE                               | 11,
+    CSSM_ATTRIBUTE_BLOCK_SIZE =                        CSSM_ATTRIBUTE_DATA_UINT32                              | 12,
+    CSSM_ATTRIBUTE_OUTPUT_SIZE =               CSSM_ATTRIBUTE_DATA_UINT32                              | 13,
+    CSSM_ATTRIBUTE_ROUNDS =                            CSSM_ATTRIBUTE_DATA_UINT32                              | 14,
+    CSSM_ATTRIBUTE_IV_SIZE =                   CSSM_ATTRIBUTE_DATA_UINT32                              | 15,
+    CSSM_ATTRIBUTE_ALG_PARAMS =                        CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 16,
+    CSSM_ATTRIBUTE_LABEL =                             CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 17,
+    CSSM_ATTRIBUTE_KEY_TYPE =                  CSSM_ATTRIBUTE_DATA_UINT32                              | 18,
+    CSSM_ATTRIBUTE_MODE =                              CSSM_ATTRIBUTE_DATA_UINT32                              | 19,
+    CSSM_ATTRIBUTE_EFFECTIVE_BITS =            CSSM_ATTRIBUTE_DATA_UINT32                              | 20,
+    CSSM_ATTRIBUTE_START_DATE =                        CSSM_ATTRIBUTE_DATA_DATE                                | 21,
+    CSSM_ATTRIBUTE_END_DATE =                  CSSM_ATTRIBUTE_DATA_DATE                                | 22,
+    CSSM_ATTRIBUTE_KEYUSAGE =                  CSSM_ATTRIBUTE_DATA_UINT32                              | 23,
+    CSSM_ATTRIBUTE_KEYATTR =                   CSSM_ATTRIBUTE_DATA_UINT32                              | 24,
+    CSSM_ATTRIBUTE_VERSION =                   CSSM_ATTRIBUTE_DATA_VERSION                             | 25,
+    CSSM_ATTRIBUTE_PRIME =                             CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 26,
+    CSSM_ATTRIBUTE_BASE =                              CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 27,
+    CSSM_ATTRIBUTE_SUBPRIME =                  CSSM_ATTRIBUTE_DATA_CSSM_DATA                   | 28,
+    CSSM_ATTRIBUTE_ALG_ID =                            CSSM_ATTRIBUTE_DATA_UINT32                              | 29,
+    CSSM_ATTRIBUTE_ITERATION_COUNT =   CSSM_ATTRIBUTE_DATA_UINT32                              | 30,
+    CSSM_ATTRIBUTE_ROUNDS_RANGE =              CSSM_ATTRIBUTE_DATA_RANGE                               | 31,
+       CSSM_ATTRIBUTE_KRPROFILE_LOCAL  =       CSSM_ATTRIBUTE_DATA_KR_PROFILE                  | 32,
+       CSSM_ATTRIBUTE_KRPROFILE_REMOTE =       CSSM_ATTRIBUTE_DATA_KR_PROFILE                  | 33,
+    CSSM_ATTRIBUTE_CSP_HANDLE =                        CSSM_ATTRIBUTE_DATA_UINT32                              | 34,
+    CSSM_ATTRIBUTE_DL_DB_HANDLE =              CSSM_ATTRIBUTE_DATA_DL_DB_HANDLE                | 35,
+    CSSM_ATTRIBUTE_ACCESS_CREDENTIALS =        CSSM_ATTRIBUTE_DATA_ACCESS_CREDENTIALS  | 36,
+    CSSM_ATTRIBUTE_PUBLIC_KEY_FORMAT = CSSM_ATTRIBUTE_DATA_UINT32                              | 37,
+    CSSM_ATTRIBUTE_PRIVATE_KEY_FORMAT =        CSSM_ATTRIBUTE_DATA_UINT32                              | 38,
+    CSSM_ATTRIBUTE_SYMMETRIC_KEY_FORMAT=CSSM_ATTRIBUTE_DATA_UINT32                             | 39,
+    CSSM_ATTRIBUTE_WRAPPED_KEY_FORMAT =        CSSM_ATTRIBUTE_DATA_UINT32                              | 40
+};
+
+typedef uint32 CSSM_PADDING;
+enum {
+       CSSM_PADDING_NONE =                                     0,
+       CSSM_PADDING_CUSTOM =                           CSSM_PADDING_NONE + 1,
+       CSSM_PADDING_ZERO =                                     CSSM_PADDING_NONE + 2,
+       CSSM_PADDING_ONE =                                      CSSM_PADDING_NONE + 3,
+       CSSM_PADDING_ALTERNATE =                        CSSM_PADDING_NONE + 4,
+       CSSM_PADDING_FF =                                       CSSM_PADDING_NONE + 5,
+       CSSM_PADDING_PKCS5 =                            CSSM_PADDING_NONE + 6,
+       CSSM_PADDING_PKCS7 =                            CSSM_PADDING_NONE + 7,
+       CSSM_PADDING_CIPHERSTEALING =           CSSM_PADDING_NONE + 8,
+       CSSM_PADDING_RANDOM =                           CSSM_PADDING_NONE + 9,
+       CSSM_PADDING_PKCS1 =                            CSSM_PADDING_NONE + 10,
+/* All padding types that are vendor specific, and not
+   part of the CSSM specification should be defined
+   relative to CSSM_PADDING_VENDOR_DEFINED. */
+       CSSM_PADDING_VENDOR_DEFINED =           CSSM_PADDING_NONE + 0x80000000
+};
+
+typedef CSSM_ALGORITHMS CSSM_KEY_TYPE;
+
+typedef struct cssm_context_attribute {
+    CSSM_ATTRIBUTE_TYPE AttributeType;
+    uint32 AttributeLength;
+    union cssm_context_attribute_value {
+        char *String;
+        uint32 Uint32;
+        CSSM_ACCESS_CREDENTIALS_PTR AccessCredentials;
+        CSSM_KEY_PTR Key;
+        CSSM_DATA_PTR Data;
+        CSSM_PADDING Padding;
+        CSSM_DATE_PTR Date;
+        CSSM_RANGE_PTR Range;
+        CSSM_CRYPTO_DATA_PTR CryptoData;
+        CSSM_VERSION_PTR Version;
+        CSSM_DL_DB_HANDLE_PTR DLDBHandle;
+        struct cssm_kr_profile *KRProfile;
+    } Attribute;
+} CSSM_CONTEXT_ATTRIBUTE, *CSSM_CONTEXT_ATTRIBUTE_PTR;
+
+typedef struct cssm_context {
+    CSSM_CONTEXT_TYPE ContextType;
+    CSSM_ALGORITHMS AlgorithmType;
+    uint32 NumberOfAttributes;
+    CSSM_CONTEXT_ATTRIBUTE_PTR ContextAttributes;
+    CSSM_CSP_HANDLE CSPHandle;
+       CSSM_BOOL Privileged;
+       uint32 /*CSSM_KR_POLICY_FLAGS*/ EncryptionProhibited;
+       uint32 WorkFactor;
+       uint32 Reserved;        /* reserved for future use */
+} CSSM_CONTEXT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CONTEXT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_SC_FLAGS;
+enum {
+       CSSM_CSP_TOK_RNG =                              0x00000001,
+       CSSM_CSP_TOK_CLOCK_EXISTS =             0x00000040
+};
+
+typedef uint32 CSSM_CSP_READER_FLAGS;
+enum {
+       CSSM_CSP_RDR_TOKENPRESENT =                     0x00000001,
+       /* Token is present in reader/slot */
+       CSSM_CSP_RDR_EXISTS =                           0x00000002,
+       /* Device is a reader with a
+          removable token */
+       CSSM_CSP_RDR_HW =                                       0x00000004
+       /* Slot is a hardware slot */
+};
+
+typedef uint32 CSSM_CSP_FLAGS;
+enum {
+       CSSM_CSP_TOK_WRITE_PROTECTED =                  0x00000002,
+       CSSM_CSP_TOK_LOGIN_REQUIRED =                   0x00000004,
+       CSSM_CSP_TOK_USER_PIN_INITIALIZED =             0x00000008,
+       CSSM_CSP_TOK_PROT_AUTHENTICATION =              0x00000100,
+       CSSM_CSP_TOK_USER_PIN_EXPIRED =                 0x00100000,
+       CSSM_CSP_TOK_SESSION_KEY_PASSWORD =             0x00200000,
+       CSSM_CSP_TOK_PRIVATE_KEY_PASSWORD =             0x00400000,
+       CSSM_CSP_STORES_PRIVATE_KEYS =                  0x01000000,
+       CSSM_CSP_STORES_PUBLIC_KEYS =                   0x02000000,
+       CSSM_CSP_STORES_SESSION_KEYS =                  0x04000000,
+       CSSM_CSP_STORES_CERTIFICATES =                  0x08000000,
+       CSSM_CSP_STORES_GENERIC =                               0x10000000
+};
+
+typedef uint32 CSSM_PKCS_OAEP_MGF;
+enum {
+       CSSM_PKCS_OAEP_MGF_NONE =                               0,
+       CSSM_PKCS_OAEP_MGF1_SHA1 =                              CSSM_PKCS_OAEP_MGF_NONE + 1,
+       CSSM_PKCS_OAEP_MGF1_MD5 =                               CSSM_PKCS_OAEP_MGF_NONE + 2
+};
+
+typedef uint32 CSSM_PKCS_OAEP_PSOURCE;
+enum {
+       CSSM_PKCS_OAEP_PSOURCE_NONE =                   0,
+       CSSM_PKCS_OAEP_PSOURCE_Pspecified =             CSSM_PKCS_OAEP_PSOURCE_NONE + 1
+};
+
+typedef struct cssm_pkcs1_oaep_params {
+    uint32 HashAlgorithm;
+    CSSM_DATA HashParams;
+    CSSM_PKCS_OAEP_MGF MGF;
+    CSSM_DATA MGFParams;
+    CSSM_PKCS_OAEP_PSOURCE PSource;
+    CSSM_DATA PSourceParams;
+} CSSM_PKCS1_OAEP_PARAMS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_PKCS1_OAEP_PARAMS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_csp_operational_statistics {
+    CSSM_BOOL UserAuthenticated;
+    /* CSSM_TRUE if the user is logged in to the token, CSSM_FALSE otherwise. */
+    CSSM_CSP_FLAGS DeviceFlags;
+    uint32 TokenMaxSessionCount; /* Exported by Cryptoki modules. */
+    uint32 TokenOpenedSessionCount;
+    uint32 TokenMaxRWSessionCount;
+    uint32 TokenOpenedRWSessionCount;
+    uint32 TokenTotalPublicMem; /* Storage space statistics. */
+    uint32 TokenFreePublicMem;
+    uint32 TokenTotalPrivateMem;
+    uint32 TokenFreePrivateMem;
+} CSSM_CSP_OPERATIONAL_STATISTICS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CSP_OPERATIONAL_STATISTICS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+/* Indicates that the statistical value can not be revealed or is not
+   relevant for a CSP */
+enum {
+       CSSM_VALUE_NOT_AVAILABLE =              (uint32)(~0)
+};
+
+typedef struct cssm_pkcs5_pbkdf1_params {
+    CSSM_DATA Passphrase;
+    CSSM_DATA InitVector;
+} CSSM_PKCS5_PBKDF1_PARAMS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_PKCS5_PBKDF1_PARAMS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_PKCS5_PBKDF2_PRF;
+enum {
+       CSSM_PKCS5_PBKDF2_PRF_HMAC_SHA1 =       0
+};
+
+typedef struct cssm_pkcs5_pbkdf2_params {
+       CSSM_DATA Passphrase;
+       CSSM_PKCS5_PBKDF2_PRF PseudoRandomFunction;
+} CSSM_PKCS5_PBKDF2_PARAMS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_PKCS5_PBKDF2_PARAMS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_kea_derive_params {
+    CSSM_DATA Rb;
+    CSSM_DATA Yb;
+} CSSM_KEA_DERIVE_PARAMS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_KEA_DERIVE_PARAMS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+
+/* Data Types for Trust Policy Services  */
+
+typedef struct cssm_tp_authority_id {
+    CSSM_DATA *AuthorityCert;
+    CSSM_NET_ADDRESS_PTR AuthorityLocation;
+} CSSM_TP_AUTHORITY_ID DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_AUTHORITY_ID_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_AUTHORITY_REQUEST_TYPE, *CSSM_TP_AUTHORITY_REQUEST_TYPE_PTR;
+enum {
+       CSSM_TP_AUTHORITY_REQUEST_CERTISSUE =           0x01,
+       CSSM_TP_AUTHORITY_REQUEST_CERTREVOKE =          0x02,
+       CSSM_TP_AUTHORITY_REQUEST_CERTSUSPEND =         0x03,
+       CSSM_TP_AUTHORITY_REQUEST_CERTRESUME =          0x04,
+       CSSM_TP_AUTHORITY_REQUEST_CERTVERIFY =          0x05,
+       CSSM_TP_AUTHORITY_REQUEST_CERTNOTARIZE =        0x06,
+       CSSM_TP_AUTHORITY_REQUEST_CERTUSERECOVER =      0x07,
+       CSSM_TP_AUTHORITY_REQUEST_CRLISSUE =            0x100
+};
+
+typedef CSSM_RETURN (CSSMAPI * CSSM_TP_VERIFICATION_RESULTS_CALLBACK)
+       (CSSM_MODULE_HANDLE ModuleHandle,
+        void *CallerCtx,
+        CSSM_DATA_PTR VerifiedCert);
+
+/* From CL */
+typedef CSSM_DATA CSSM_OID, *CSSM_OID_PTR;
+
+typedef struct cssm_field {
+    CSSM_OID FieldOid;
+    CSSM_DATA FieldValue;
+} CSSM_FIELD DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_FIELD_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+/* TP Again. */
+typedef struct cssm_tp_policyinfo {
+    uint32 NumberOfPolicyIds;
+    CSSM_FIELD_PTR PolicyIds;
+    void *PolicyControl;
+} CSSM_TP_POLICYINFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_POLICYINFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_SERVICES;
+enum {
+       /* bit masks for additional Authority services available through TP */
+       CSSM_TP_KEY_ARCHIVE =                           0x0001, /* archive cert & keys */
+       CSSM_TP_CERT_PUBLISH =                          0x0002, /* register cert in directory */
+       CSSM_TP_CERT_NOTIFY_RENEW =                     0x0004, /* notify at renewal time */
+       CSSM_TP_CERT_DIR_UPDATE =                       0x0008, /* update cert registry entry */
+       CSSM_TP_CRL_DISTRIBUTE =                        0x0010 /* push CRL to everyone */
+};
+
+typedef uint32 CSSM_TP_ACTION;
+enum {
+       CSSM_TP_ACTION_DEFAULT =                        0
+};
+
+typedef uint32 CSSM_TP_STOP_ON;
+enum {
+    CSSM_TP_STOP_ON_POLICY =                   0, /* use the pre-defined stopping criteria */
+    CSSM_TP_STOP_ON_NONE =                             1, /* evaluate all condition whether TRUE or FALSE */
+    CSSM_TP_STOP_ON_FIRST_PASS =               2, /* stop evaluation at first TRUE */
+    CSSM_TP_STOP_ON_FIRST_FAIL =               3 /* stop evaluation at first FALSE */
+};
+
+typedef char *CSSM_TIMESTRING;
+
+/* From DL. */
+typedef struct cssm_dl_db_list {
+    uint32 NumHandles;
+    CSSM_DL_DB_HANDLE_PTR DLDBHandle;
+} CSSM_DL_DB_LIST DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DL_DB_LIST_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+/* TP Again. */
+typedef struct cssm_tp_callerauth_context {
+    CSSM_TP_POLICYINFO Policy;
+    CSSM_TIMESTRING VerifyTime;
+    CSSM_TP_STOP_ON VerificationAbortOn;
+    CSSM_TP_VERIFICATION_RESULTS_CALLBACK CallbackWithVerifiedCert;
+    uint32 NumberOfAnchorCerts;
+    CSSM_DATA_PTR AnchorCerts;
+    CSSM_DL_DB_LIST_PTR DBList;
+    CSSM_ACCESS_CREDENTIALS_PTR CallerCredentials;
+} CSSM_TP_CALLERAUTH_CONTEXT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CALLERAUTH_CONTEXT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_CRL_PARSE_FORMAT, * CSSM_CRL_PARSE_FORMAT_PTR;
+enum {
+       CSSM_CRL_PARSE_FORMAT_NONE =            0x00,
+       CSSM_CRL_PARSE_FORMAT_CUSTOM =          0x01,
+       CSSM_CRL_PARSE_FORMAT_SEXPR =           0x02,
+       CSSM_CRL_PARSE_FORMAT_COMPLEX =         0x03,
+       CSSM_CRL_PARSE_FORMAT_OID_NAMED =       0x04,
+       CSSM_CRL_PARSE_FORMAT_TUPLE =           0x05,
+       CSSM_CRL_PARSE_FORMAT_MULTIPLE =        0x7FFE,
+       CSSM_CRL_PARSE_FORMAT_LAST =            0x7FFF,
+       /* Applications wishing to define their own custom parse
+          format should create a uint32 value greater than the
+          CSSM_CL_CUSTOM_CRL_PARSE_FORMAT */
+       CSSM_CL_CUSTOM_CRL_PARSE_FORMAT =       0x8000
+};
+
+/* From CL. */
+typedef uint32 CSSM_CRL_TYPE, *CSSM_CRL_TYPE_PTR;
+enum {
+    CSSM_CRL_TYPE_UNKNOWN =                            0x00,
+    CSSM_CRL_TYPE_X_509v1 =                            0x01,
+    CSSM_CRL_TYPE_X_509v2 =                            0x02,
+    CSSM_CRL_TYPE_SPKI =                               0x03,
+    CSSM_CRL_TYPE_MULTIPLE =                   0x7FFE
+};
+
+typedef uint32 CSSM_CRL_ENCODING, *CSSM_CRL_ENCODING_PTR;
+enum {
+    CSSM_CRL_ENCODING_UNKNOWN =                        0x00,
+    CSSM_CRL_ENCODING_CUSTOM =                 0x01,
+    CSSM_CRL_ENCODING_BER =                            0x02,
+    CSSM_CRL_ENCODING_DER =                            0x03,
+    CSSM_CRL_ENCODING_BLOOM =                  0x04,
+    CSSM_CRL_ENCODING_SEXPR =                  0x05,
+    CSSM_CRL_ENCODING_MULTIPLE =               0x7FFE
+};
+
+typedef struct cssm_encoded_crl {
+    CSSM_CRL_TYPE CrlType; /* type of CRL */
+    CSSM_CRL_ENCODING CrlEncoding; /* encoding for this packed CRL */
+    CSSM_DATA CrlBlob; /* packed CRL */
+} CSSM_ENCODED_CRL DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_ENCODED_CRL_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+/* TP Again. */
+typedef struct cssm_parsed_crl {
+    CSSM_CRL_TYPE CrlType; /* CRL type */
+    CSSM_CRL_PARSE_FORMAT ParsedCrlFormat;
+    /* struct of ParsedCrl */
+    void *ParsedCrl; /* parsed CRL (to be typecast) */
+} CSSM_PARSED_CRL DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_PARSED_CRL_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_crl_pair {
+    CSSM_ENCODED_CRL EncodedCrl; /* an encoded CRL blob */
+    CSSM_PARSED_CRL ParsedCrl; /* equivalent parsed CRL */
+} CSSM_CRL_PAIR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CRL_PAIR_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_CRLGROUP_TYPE, * CSSM_CRLGROUP_TYPE_PTR;
+enum {
+       CSSM_CRLGROUP_DATA =                    0x00,
+       CSSM_CRLGROUP_ENCODED_CRL =             0x01,
+       CSSM_CRLGROUP_PARSED_CRL =              0x02,
+       CSSM_CRLGROUP_CRL_PAIR =                0x03
+};
+
+typedef struct cssm_crlgroup {
+    CSSM_CRL_TYPE CrlType;
+    CSSM_CRL_ENCODING CrlEncoding;
+    uint32 NumberOfCrls;
+    union {
+        CSSM_DATA_PTR CrlList;                                 /* CRL blob */
+        CSSM_ENCODED_CRL_PTR EncodedCrlList;   /* CRL blob w/ separate type */
+        CSSM_PARSED_CRL_PTR ParsedCrlList;             /* bushy, parsed CRL */
+        CSSM_CRL_PAIR_PTR PairCrlList;
+    } GroupCrlList;
+    CSSM_CRLGROUP_TYPE CrlGroupType;
+} CSSM_CRLGROUP, *CSSM_CRLGROUP_PTR;
+
+typedef struct cssm_fieldgroup {
+    int NumberOfFields;                /* number of fields in the array */
+    CSSM_FIELD_PTR Fields;     /* array of fields */
+} CSSM_FIELDGROUP DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_FIELDGROUP_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_EVIDENCE_FORM;
+enum {
+       CSSM_EVIDENCE_FORM_UNSPECIFIC =         0x0,
+       CSSM_EVIDENCE_FORM_CERT =                       0x1,
+       CSSM_EVIDENCE_FORM_CRL =                        0x2,
+       CSSM_EVIDENCE_FORM_CERT_ID =            0x3,
+       CSSM_EVIDENCE_FORM_CRL_ID =                     0x4,
+       CSSM_EVIDENCE_FORM_VERIFIER_TIME =      0x5,
+       CSSM_EVIDENCE_FORM_CRL_THISTIME =       0x6,
+       CSSM_EVIDENCE_FORM_CRL_NEXTTIME =       0x7,
+       CSSM_EVIDENCE_FORM_POLICYINFO =         0x8,
+       CSSM_EVIDENCE_FORM_TUPLEGROUP =         0x9
+};
+
+typedef struct cssm_evidence {
+    CSSM_EVIDENCE_FORM EvidenceForm;
+    void *Evidence; /* Evidence content */
+} CSSM_EVIDENCE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_EVIDENCE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_verify_context {
+    CSSM_TP_ACTION Action;
+    CSSM_DATA ActionData;
+    CSSM_CRLGROUP Crls;
+    CSSM_TP_CALLERAUTH_CONTEXT_PTR Cred;
+} CSSM_TP_VERIFY_CONTEXT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_VERIFY_CONTEXT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_verify_context_result {
+    uint32 NumberOfEvidences;
+    CSSM_EVIDENCE_PTR Evidence;
+} CSSM_TP_VERIFY_CONTEXT_RESULT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_VERIFY_CONTEXT_RESULT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_request_set {
+    uint32 NumberOfRequests;
+    void *Requests;
+} CSSM_TP_REQUEST_SET DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_REQUEST_SET_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_result_set {
+    uint32 NumberOfResults;
+    void *Results;
+} CSSM_TP_RESULT_SET DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_RESULT_SET_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CONFIRM_STATUS, *CSSM_TP_CONFIRM_STATUS_PTR;
+enum {
+       CSSM_TP_CONFIRM_STATUS_UNKNOWN =        0x0,
+       /* indeterminate */
+       CSSM_TP_CONFIRM_ACCEPT =                        0x1,
+       /* accept results of executing a
+          submit-retrieve function pair */
+       CSSM_TP_CONFIRM_REJECT =                        0x2
+       /* reject results of executing a
+          submit-retrieve function pair */
+};
+
+typedef struct cssm_tp_confirm_response {
+    uint32 NumberOfResponses;
+    CSSM_TP_CONFIRM_STATUS_PTR Responses;
+} CSSM_TP_CONFIRM_RESPONSE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CONFIRM_RESPONSE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+enum {
+       CSSM_ESTIMATED_TIME_UNKNOWN =           -1
+};
+
+enum {
+       CSSM_ELAPSED_TIME_UNKNOWN =                     -1,
+       CSSM_ELAPSED_TIME_COMPLETE =            -2
+};
+
+typedef struct cssm_tp_certissue_input {
+    CSSM_SUBSERVICE_UID CSPSubserviceUid;
+    CSSM_CL_HANDLE CLHandle;
+    uint32 NumberOfTemplateFields;
+    CSSM_FIELD_PTR SubjectCertFields;
+    CSSM_TP_SERVICES MoreServiceRequests;
+    uint32 NumberOfServiceControls;
+    CSSM_FIELD_PTR ServiceControls;
+    CSSM_ACCESS_CREDENTIALS_PTR UserCredentials;
+} CSSM_TP_CERTISSUE_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTISSUE_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTISSUE_STATUS;
+enum {
+       CSSM_TP_CERTISSUE_STATUS_UNKNOWN =              0x0,
+       /* indeterminate */
+       CSSM_TP_CERTISSUE_OK =                                  0x1,
+       /* cert issued as requested */
+       CSSM_TP_CERTISSUE_OKWITHCERTMODS =              0x2,
+       /* cert issued but cert contents were
+          updated by the issuing authority */
+       CSSM_TP_CERTISSUE_OKWITHSERVICEMODS =   0x3,
+       /* cert issued but some requested backend
+          services were not performed by the
+          issuing authority */
+       CSSM_TP_CERTISSUE_REJECTED =                    0x4,
+       /* cert was not issued due to some error
+          condition */
+       CSSM_TP_CERTISSUE_NOT_AUTHORIZED =              0x5,
+       /* cert was not issued, the request was
+          not authorized */
+       CSSM_TP_CERTISSUE_WILL_BE_REVOKED =             0x6
+       /* cert was issued, but TP has initiated
+          a revocation of the certificate */
+};
+
+typedef struct cssm_tp_certissue_output {
+    CSSM_TP_CERTISSUE_STATUS IssueStatus;
+    CSSM_CERTGROUP_PTR CertGroup;
+    CSSM_TP_SERVICES PerformedServiceRequests;
+} CSSM_TP_CERTISSUE_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTISSUE_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTCHANGE_ACTION;
+enum {
+       CSSM_TP_CERTCHANGE_NONE =                       0x0, /* no change */
+       CSSM_TP_CERTCHANGE_REVOKE =                     0x1, /* Revoke the certificate */
+/* This action type indicates a request to revoke a single
+   certificate. Notice of the revocation operation remains
+   in affect until the certificate itself expires. Revocation
+   should be used to permanently remove a certificate from use. */
+       CSSM_TP_CERTCHANGE_HOLD =                       0x2, /* Hold/suspend the certificate */
+/* This action type indicates a request to suspend a
+   single certificate. A suspension operation implies
+   that the requester intends, at some time in the future,
+   to request that the certificate be released from hold,
+   making it available for use again. Placing a hold on
+   a certificate does not obligate the requester to
+   request a release. In practice, a certificate may
+   remain on hold until the certificate itself expires.
+   Revocation should be used to permanently remove a
+   certificate from use. */
+       CSSM_TP_CERTCHANGE_RELEASE =            0x3 /* Release the held certificate */
+/* This action type indicates a request to release a
+   single certificate currently on hold. A release
+   operation makes a certificate available for use again.
+   Revocation should be used to permanently remove a
+   certificate from use. */
+};
+
+typedef uint32 CSSM_TP_CERTCHANGE_REASON;
+enum {
+       CSSM_TP_CERTCHANGE_REASON_UNKNOWN =                                     0x0,
+       /* unspecified */
+       CSSM_TP_CERTCHANGE_REASON_KEYCOMPROMISE =                       0x1,
+       /* Subject key believed to be compromised */
+       CSSM_TP_CERTCHANGE_REASON_CACOMPROMISE =                        0x2,
+       /* CA\92s key believed to be compromised */
+       CSSM_TP_CERTCHANGE_REASON_CEASEOPERATION =                      0x3,
+       /* certificate holder ceases operation under
+          the jurisdiction of this certificate */
+       CSSM_TP_CERTCHANGE_REASON_AFFILIATIONCHANGE =           0x4,
+       /* certificate holder has moved from this
+          jurisdiction */
+       CSSM_TP_CERTCHANGE_REASON_SUPERCEDED =                          0x5,
+       /* certificate holder as issued a new, superceding
+          certificate */
+       CSSM_TP_CERTCHANGE_REASON_SUSPECTEDCOMPROMISE =         0x6,
+       /* certificate could be compromised */
+       CSSM_TP_CERTCHANGE_REASON_HOLDRELEASE =                         0x7
+       /* certificate holder resumes operation under the
+          jurisdiction of this certificate */
+};
+
+typedef struct cssm_tp_certchange_input {
+    CSSM_TP_CERTCHANGE_ACTION Action;
+    CSSM_TP_CERTCHANGE_REASON Reason;
+    CSSM_CL_HANDLE CLHandle;
+    CSSM_DATA_PTR Cert;
+    CSSM_FIELD_PTR ChangeInfo;
+    CSSM_TIMESTRING StartTime;
+    CSSM_ACCESS_CREDENTIALS_PTR CallerCredentials;
+} CSSM_TP_CERTCHANGE_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTCHANGE_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTCHANGE_STATUS;
+enum {
+       CSSM_TP_CERTCHANGE_STATUS_UNKNOWN =             0x0,
+       /* indeterminate */
+       CSSM_TP_CERTCHANGE_OK =                                 0x1,
+       /* cert state was successfully changed
+          beginning at the specified time */
+       CSSM_TP_CERTCHANGE_OKWITHNEWTIME =              0x2,
+       /* cert state was successfully changed,
+          at a modified effective time */
+       CSSM_TP_CERTCHANGE_WRONGCA =                    0x3,
+       /* cert state was not changed, the
+          selected CA is not authorized to
+          change the cert state */
+       CSSM_TP_CERTCHANGE_REJECTED =                   0x4,
+       /* cert state was not changed due to some
+          error condition */
+       CSSM_TP_CERTCHANGE_NOT_AUTHORIZED =             0x5
+       /* cert state was not changed, the
+          requester is not authorized to change
+          the cert state */
+};
+
+typedef struct cssm_tp_certchange_output {
+    CSSM_TP_CERTCHANGE_STATUS ActionStatus;
+    CSSM_FIELD RevokeInfo;
+} CSSM_TP_CERTCHANGE_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTCHANGE_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_certverify_input {
+    CSSM_CL_HANDLE CLHandle;
+    CSSM_DATA_PTR Cert;
+    CSSM_TP_VERIFY_CONTEXT_PTR VerifyContext;
+} CSSM_TP_CERTVERIFY_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTVERIFY_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTVERIFY_STATUS;
+enum {
+       CSSM_TP_CERTVERIFY_UNKNOWN =                                    0x0,
+       CSSM_TP_CERTVERIFY_VALID =                                              0x1,
+       CSSM_TP_CERTVERIFY_INVALID =                                    0x2,
+       CSSM_TP_CERTVERIFY_REVOKED =                                    0x3,
+       CSSM_TP_CERTVERIFY_SUSPENDED =                                  0x4,
+       CSSM_TP_CERTVERIFY_EXPIRED =                                    0x5,
+       CSSM_TP_CERTVERIFY_NOT_VALID_YET =                              0x6,
+       CSSM_TP_CERTVERIFY_INVALID_AUTHORITY =                  0x7,
+       CSSM_TP_CERTVERIFY_INVALID_SIGNATURE =                  0x8,
+       CSSM_TP_CERTVERIFY_INVALID_CERT_VALUE =                 0x9,
+       CSSM_TP_CERTVERIFY_INVALID_CERTGROUP =                  0xA,
+       CSSM_TP_CERTVERIFY_INVALID_POLICY =                             0xB,
+       CSSM_TP_CERTVERIFY_INVALID_POLICY_IDS =                 0xC,
+       CSSM_TP_CERTVERIFY_INVALID_BASIC_CONSTRAINTS =  0xD,
+       CSSM_TP_CERTVERIFY_INVALID_CRL_DIST_PT =                0xE,
+       CSSM_TP_CERTVERIFY_INVALID_NAME_TREE =                  0xF,
+       CSSM_TP_CERTVERIFY_UNKNOWN_CRITICAL_EXT =               0x10
+};
+
+typedef struct cssm_tp_certverify_output {
+    CSSM_TP_CERTVERIFY_STATUS VerifyStatus;
+    uint32 NumberOfEvidence;
+    CSSM_EVIDENCE_PTR Evidence;
+} CSSM_TP_CERTVERIFY_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTVERIFY_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_certnotarize_input {
+    CSSM_CL_HANDLE CLHandle;
+    uint32 NumberOfFields;
+    CSSM_FIELD_PTR MoreFields;
+    CSSM_FIELD_PTR SignScope;
+    uint32 ScopeSize;
+    CSSM_TP_SERVICES MoreServiceRequests;
+    uint32 NumberOfServiceControls;
+    CSSM_FIELD_PTR ServiceControls;
+    CSSM_ACCESS_CREDENTIALS_PTR UserCredentials;
+} CSSM_TP_CERTNOTARIZE_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTNOTARIZE_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTNOTARIZE_STATUS;
+enum {
+       CSSM_TP_CERTNOTARIZE_STATUS_UNKNOWN =           0x0,
+       /* indeterminate */
+       CSSM_TP_CERTNOTARIZE_OK =                                       0x1,
+       /* cert fields were added and the result was
+          notarized as requested */
+       CSSM_TP_CERTNOTARIZE_OKWITHOUTFIELDS =          0x2,
+       /* non-conflicting cert fields were added,
+          conflicting cert fields were ignored,
+          and the result was notarized as requested */
+       CSSM_TP_CERTNOTARIZE_OKWITHSERVICEMODS =        0x3,
+       /* cert fields were added and the result was
+          notarized as requested, but some requested
+          backend services were not performed by the
+          notary */
+       CSSM_TP_CERTNOTARIZE_REJECTED =                         0x4,
+       /* cert was not notarized due to some error
+          condition */
+       CSSM_TP_CERTNOTARIZE_NOT_AUTHORIZED =           0x5
+       /* cert was not notarized, the request was
+          not authorized */
+};
+
+typedef struct cssm_tp_certnotarize_output {
+    CSSM_TP_CERTNOTARIZE_STATUS NotarizeStatus;
+    CSSM_CERTGROUP_PTR NotarizedCertGroup;
+    CSSM_TP_SERVICES PerformedServiceRequests;
+} CSSM_TP_CERTNOTARIZE_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTNOTARIZE_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_certreclaim_input {
+    CSSM_CL_HANDLE CLHandle;
+    uint32 NumberOfSelectionFields;
+    CSSM_FIELD_PTR SelectionFields;
+    CSSM_ACCESS_CREDENTIALS_PTR UserCredentials;
+} CSSM_TP_CERTRECLAIM_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTRECLAIM_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CERTRECLAIM_STATUS;
+enum {
+       CSSM_TP_CERTRECLAIM_STATUS_UNKNOWN =    0x0,
+       /* indeterminate */
+       CSSM_TP_CERTRECLAIM_OK =                                0x1,
+       /* a set of one or more certificates were
+          returned by the CA for local recovery
+          of the associated private key */
+       CSSM_TP_CERTRECLAIM_NOMATCH =                   0x2,
+       /* no certificates owned by the requester
+          were found matching the specified
+          selection fields */
+       CSSM_TP_CERTRECLAIM_REJECTED =                  0x3,
+       /* certificate reclamation failed due
+          to some error condition */
+       CSSM_TP_CERTRECLAIM_NOT_AUTHORIZED =    0x4
+       /* certificate reclamation was not
+          performed, the request was not
+          authorized */
+};
+
+typedef struct cssm_tp_certreclaim_output {
+    CSSM_TP_CERTRECLAIM_STATUS ReclaimStatus;
+    CSSM_CERTGROUP_PTR ReclaimedCertGroup;
+    CSSM_LONG_HANDLE KeyCacheHandle;
+} CSSM_TP_CERTRECLAIM_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CERTRECLAIM_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_tp_crlissue_input {
+    CSSM_CL_HANDLE CLHandle;
+    uint32 CrlIdentifier;
+    CSSM_TIMESTRING CrlThisTime;
+    CSSM_FIELD_PTR PolicyIdentifier;
+    CSSM_ACCESS_CREDENTIALS_PTR CallerCredentials;
+} CSSM_TP_CRLISSUE_INPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CRLISSUE_INPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_CRLISSUE_STATUS;
+enum {
+       CSSM_TP_CRLISSUE_STATUS_UNKNOWN =               0x0,
+       /* indeterminate */
+       CSSM_TP_CRLISSUE_OK =                                   0x1,
+       /* a copy of the most current CRL was
+          issued as requested and the time for
+          issuing the next CRL is also returned */
+       CSSM_TP_CRLISSUE_NOT_CURRENT =                  0x2,
+       /* either no CRL has been issued since
+          the CRL identified in the request, or
+          it is not time to issue an updated CRL.
+          no CRL has been returned, but the time
+          for issuing the next CRL is included
+          in the results */
+       CSSM_TP_CRLISSUE_INVALID_DOMAIN =               0x3,
+       /* CRL domain was not recognized or was
+          outside the CA jurisdiction, no CRL or
+          time for the next CRL has been
+          returned. */
+       CSSM_TP_CRLISSUE_UNKNOWN_IDENTIFIER =   0x4,
+       /* unrecognized CRL identifier, no CRL or
+          time for the next CRL has been
+          returned. */
+       CSSM_TP_CRLISSUE_REJECTED =                             0x5,
+       /* CRL was not issued due to some error
+          condition, no CRL or time for the next
+          CRL has been returned. */
+       CSSM_TP_CRLISSUE_NOT_AUTHORIZED =               0x6
+       /* CRL was not issued, the request was
+          not authorized, no CRL or time for the
+          next CRL has been returned. */
+};
+
+typedef struct cssm_tp_crlissue_output {
+    CSSM_TP_CRLISSUE_STATUS IssueStatus;
+    CSSM_ENCODED_CRL_PTR Crl;
+    CSSM_TIMESTRING CrlNextTime;
+} CSSM_TP_CRLISSUE_OUTPUT DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_TP_CRLISSUE_OUTPUT_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_TP_FORM_TYPE;
+enum {
+       CSSM_TP_FORM_TYPE_GENERIC =                             0x0,
+       CSSM_TP_FORM_TYPE_REGISTRATION =                0x1
+};
+
+/* Data Types for Certificate Library Services  */
+
+typedef uint32 CSSM_CL_TEMPLATE_TYPE;
+enum {
+       CSSM_CL_TEMPLATE_INTERMEDIATE_CERT =    1,
+       /* for X509 certificates, a fully-formed
+          encoded certificate with empty signature field */
+       CSSM_CL_TEMPLATE_PKIX_CERTTEMPLATE =    2
+       /* as defined in RFC2511, section 5 CertTemplate */
+};
+
+typedef uint32 CSSM_CERT_BUNDLE_TYPE;
+enum {
+    CSSM_CERT_BUNDLE_UNKNOWN =                                         0x00,
+    CSSM_CERT_BUNDLE_CUSTOM =                                          0x01,
+    CSSM_CERT_BUNDLE_PKCS7_SIGNED_DATA =                       0x02,
+    CSSM_CERT_BUNDLE_PKCS7_SIGNED_ENVELOPED_DATA =     0x03,
+    CSSM_CERT_BUNDLE_PKCS12 =                                          0x04,
+    CSSM_CERT_BUNDLE_PFX =                                                     0x05,
+    CSSM_CERT_BUNDLE_SPKI_SEQUENCE =                           0x06,
+    CSSM_CERT_BUNDLE_PGP_KEYRING =                                     0x07,
+    CSSM_CERT_BUNDLE_LAST =                                                    0x7FFF,
+       /* Applications wishing to define their own custom certificate
+          bundle type should define and publicly document a uint32
+          value greater than CSSM_CL_CUSTOM_CERT_BUNDLE_TYPE */
+       CSSM_CL_CUSTOM_CERT_BUNDLE_TYPE =                               0x8000
+};
+
+typedef uint32 CSSM_CERT_BUNDLE_ENCODING;
+enum {
+    CSSM_CERT_BUNDLE_ENCODING_UNKNOWN =                        0x00,
+    CSSM_CERT_BUNDLE_ENCODING_CUSTOM =                 0x01,
+    CSSM_CERT_BUNDLE_ENCODING_BER =                            0x02,
+    CSSM_CERT_BUNDLE_ENCODING_DER =                            0x03,
+    CSSM_CERT_BUNDLE_ENCODING_SEXPR =                  0x04,
+    CSSM_CERT_BUNDLE_ENCODING_PGP =                            0x05
+};
+
+typedef struct cssm_cert_bundle_header {
+    CSSM_CERT_BUNDLE_TYPE BundleType;
+    CSSM_CERT_BUNDLE_ENCODING BundleEncoding;
+} CSSM_CERT_BUNDLE_HEADER DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CERT_BUNDLE_HEADER_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_cert_bundle {
+    CSSM_CERT_BUNDLE_HEADER BundleHeader;
+    CSSM_DATA Bundle;
+} CSSM_CERT_BUNDLE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_CERT_BUNDLE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+enum {
+       CSSM_FIELDVALUE_COMPLEX_DATA_TYPE =                     0xFFFFFFFF
+};
+
+/* Data Types for Data Storage Library Services  */
+
+typedef uint32 CSSM_DB_ATTRIBUTE_NAME_FORMAT, *CSSM_DB_ATTRIBUTE_NAME_FORMAT_PTR;
+enum {
+    CSSM_DB_ATTRIBUTE_NAME_AS_STRING =                 0,
+    CSSM_DB_ATTRIBUTE_NAME_AS_OID =                            1,
+       CSSM_DB_ATTRIBUTE_NAME_AS_INTEGER =                     2
+};
+
+typedef uint32 CSSM_DB_ATTRIBUTE_FORMAT, *CSSM_DB_ATTRIBUTE_FORMAT_PTR;
+enum {
+    CSSM_DB_ATTRIBUTE_FORMAT_STRING =                  0,
+    CSSM_DB_ATTRIBUTE_FORMAT_SINT32 =                  1,
+    CSSM_DB_ATTRIBUTE_FORMAT_UINT32 =                  2,
+    CSSM_DB_ATTRIBUTE_FORMAT_BIG_NUM =                 3,
+    CSSM_DB_ATTRIBUTE_FORMAT_REAL =                            4,
+    CSSM_DB_ATTRIBUTE_FORMAT_TIME_DATE =               5,
+    CSSM_DB_ATTRIBUTE_FORMAT_BLOB =                            6,
+    CSSM_DB_ATTRIBUTE_FORMAT_MULTI_UINT32 =            7,
+    CSSM_DB_ATTRIBUTE_FORMAT_COMPLEX =                 8
+};
+
+typedef struct cssm_db_attribute_info {
+    CSSM_DB_ATTRIBUTE_NAME_FORMAT AttributeNameFormat;
+    union cssm_db_attribute_label {
+        char *AttributeName;           /* e.g., "record label" */
+        CSSM_OID AttributeOID;         /* e.g., CSSMOID_RECORDLABEL */
+        uint32 AttributeID;                    /* e.g., FOUR_CHAR_CODE('recl') */
+    } Label;
+    CSSM_DB_ATTRIBUTE_FORMAT AttributeFormat;
+} CSSM_DB_ATTRIBUTE_INFO, *CSSM_DB_ATTRIBUTE_INFO_PTR;
+
+typedef struct cssm_db_attribute_data {
+    CSSM_DB_ATTRIBUTE_INFO Info;
+    uint32 NumberOfValues;
+    CSSM_DATA_PTR Value;
+} CSSM_DB_ATTRIBUTE_DATA DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_ATTRIBUTE_DATA_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DB_RECORDTYPE;
+enum {
+       /* Schema Management Name Space Range Definition*/
+       CSSM_DB_RECORDTYPE_SCHEMA_START =                       0x00000000,
+       CSSM_DB_RECORDTYPE_SCHEMA_END =                         CSSM_DB_RECORDTYPE_SCHEMA_START + 4,
+       /* Open Group Application Name Space Range Definition*/
+       CSSM_DB_RECORDTYPE_OPEN_GROUP_START =           0x0000000A,
+       CSSM_DB_RECORDTYPE_OPEN_GROUP_END =                     CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 8,
+       /* Industry At Large Application Name Space Range Definition */
+       CSSM_DB_RECORDTYPE_APP_DEFINED_START =          0x80000000,
+       CSSM_DB_RECORDTYPE_APP_DEFINED_END =            0xffffffff,
+       /* Record Types defined in the Schema Management Name Space */
+       CSSM_DL_DB_SCHEMA_INFO =                                        CSSM_DB_RECORDTYPE_SCHEMA_START + 0,
+       CSSM_DL_DB_SCHEMA_INDEXES =                                     CSSM_DB_RECORDTYPE_SCHEMA_START + 1,
+       CSSM_DL_DB_SCHEMA_ATTRIBUTES =                          CSSM_DB_RECORDTYPE_SCHEMA_START + 2,
+       CSSM_DL_DB_SCHEMA_PARSING_MODULE =                      CSSM_DB_RECORDTYPE_SCHEMA_START + 3,
+       /* Record Types defined in the Open Group Application Name Space */
+       CSSM_DL_DB_RECORD_ANY =                                         CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 0,
+       CSSM_DL_DB_RECORD_CERT =                                        CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 1,
+       CSSM_DL_DB_RECORD_CRL =                                         CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 2,
+       CSSM_DL_DB_RECORD_POLICY =                                      CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 3,
+       CSSM_DL_DB_RECORD_GENERIC =                                     CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 4,
+       CSSM_DL_DB_RECORD_PUBLIC_KEY =                          CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 5,
+       CSSM_DL_DB_RECORD_PRIVATE_KEY =                         CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 6,
+       CSSM_DL_DB_RECORD_SYMMETRIC_KEY =                       CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 7,
+       CSSM_DL_DB_RECORD_ALL_KEYS =                            CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 8
+};
+
+enum {
+       CSSM_DB_CERT_USE_TRUSTED =                      0x00000001,     /* application-defined as trusted */
+       CSSM_DB_CERT_USE_SYSTEM =                       0x00000002,     /* the CSSM system cert */
+       CSSM_DB_CERT_USE_OWNER =                        0x00000004,     /* private key owned by system user*/
+       CSSM_DB_CERT_USE_REVOKED =                      0x00000008,     /* revoked cert -15913 used w CRL APIs */
+       CSSM_DB_CERT_USE_SIGNING =                      0x00000010,     /* use cert for signing only */
+       CSSM_DB_CERT_USE_PRIVACY =                      0x00000020      /* use cert for confidentiality only */
+};
+
+typedef struct cssm_db_record_attribute_info {
+    CSSM_DB_RECORDTYPE DataRecordType;
+    uint32 NumberOfAttributes;
+    CSSM_DB_ATTRIBUTE_INFO_PTR AttributeInfo;
+} CSSM_DB_RECORD_ATTRIBUTE_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_db_record_attribute_data {
+    CSSM_DB_RECORDTYPE DataRecordType;
+    uint32 SemanticInformation;
+    uint32 NumberOfAttributes;
+    CSSM_DB_ATTRIBUTE_DATA_PTR AttributeData;
+} CSSM_DB_RECORD_ATTRIBUTE_DATA DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_db_parsing_module_info {
+    CSSM_DB_RECORDTYPE RecordType;
+    CSSM_SUBSERVICE_UID ModuleSubserviceUid;
+} CSSM_DB_PARSING_MODULE_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_PARSING_MODULE_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DB_INDEX_TYPE;
+enum {
+    CSSM_DB_INDEX_UNIQUE =                             0,
+    CSSM_DB_INDEX_NONUNIQUE =                  1
+};
+
+typedef uint32 CSSM_DB_INDEXED_DATA_LOCATION;
+enum {
+    CSSM_DB_INDEX_ON_UNKNOWN =                 0,
+    CSSM_DB_INDEX_ON_ATTRIBUTE =               1,
+    CSSM_DB_INDEX_ON_RECORD =                  2
+};
+
+typedef struct cssm_db_index_info {
+    CSSM_DB_INDEX_TYPE IndexType;
+    CSSM_DB_INDEXED_DATA_LOCATION IndexedDataLocation;
+    CSSM_DB_ATTRIBUTE_INFO Info;
+} CSSM_DB_INDEX_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_INDEX_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_db_unique_record {
+    CSSM_DB_INDEX_INFO RecordLocator;
+    CSSM_DATA RecordIdentifier;
+} CSSM_DB_UNIQUE_RECORD DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_UNIQUE_RECORD_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_db_record_index_info {
+    CSSM_DB_RECORDTYPE DataRecordType;
+    uint32 NumberOfIndexes;
+    CSSM_DB_INDEX_INFO_PTR IndexInfo;
+} CSSM_DB_RECORD_INDEX_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_RECORD_INDEX_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DB_ACCESS_TYPE, *CSSM_DB_ACCESS_TYPE_PTR;
+enum {
+       CSSM_DB_ACCESS_READ =                           0x00001,
+       CSSM_DB_ACCESS_WRITE =                          0x00002,
+       CSSM_DB_ACCESS_PRIVILEGED =                     0x00004 /* versus user mode */
+};
+
+typedef uint32 CSSM_DB_MODIFY_MODE;
+enum {
+       CSSM_DB_MODIFY_ATTRIBUTE_NONE =         0,
+       CSSM_DB_MODIFY_ATTRIBUTE_ADD =          CSSM_DB_MODIFY_ATTRIBUTE_NONE + 1,
+       CSSM_DB_MODIFY_ATTRIBUTE_DELETE =       CSSM_DB_MODIFY_ATTRIBUTE_NONE + 2,
+       CSSM_DB_MODIFY_ATTRIBUTE_REPLACE =      CSSM_DB_MODIFY_ATTRIBUTE_NONE + 3
+};
+
+typedef struct cssm_dbinfo {
+    /* meta information about each record type stored in this
+    data store including meta information about record
+    attributes and indexes */
+    uint32 NumberOfRecordTypes;
+    CSSM_DB_PARSING_MODULE_INFO_PTR DefaultParsingModules;
+    CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR RecordAttributeNames;
+    CSSM_DB_RECORD_INDEX_INFO_PTR RecordIndexes;
+    /* access restrictions for opening this data store */
+    CSSM_BOOL IsLocal;
+    char *AccessPath; /* URL, dir path, etc. */
+    void *Reserved;
+} CSSM_DBINFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DBINFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DB_OPERATOR, *CSSM_DB_OPERATOR_PTR;
+enum {
+    CSSM_DB_EQUAL =                                                    0,
+    CSSM_DB_NOT_EQUAL =                                                1,
+    CSSM_DB_LESS_THAN =                                                2,
+    CSSM_DB_GREATER_THAN =                                     3,
+    CSSM_DB_CONTAINS =                                         4,
+    CSSM_DB_CONTAINS_INITIAL_SUBSTRING =       5,
+    CSSM_DB_CONTAINS_FINAL_SUBSTRING =         6
+};
+
+typedef uint32 CSSM_DB_CONJUNCTIVE, *CSSM_DB_CONJUNCTIVE_PTR;
+enum {
+    CSSM_DB_NONE =                                             0,
+    CSSM_DB_AND =                                              1,
+    CSSM_DB_OR =                                               2
+};
+
+typedef struct cssm_selection_predicate {
+    CSSM_DB_OPERATOR DbOperator;
+    CSSM_DB_ATTRIBUTE_DATA Attribute;
+} CSSM_SELECTION_PREDICATE DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_SELECTION_PREDICATE_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+enum {
+       CSSM_QUERY_TIMELIMIT_NONE =                     0
+};
+
+enum {
+       CSSM_QUERY_SIZELIMIT_NONE =                     0
+};
+
+typedef struct cssm_query_limits {
+    uint32 TimeLimit; /* in seconds */
+    uint32 SizeLimit; /* max. number of records to return */
+} CSSM_QUERY_LIMITS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_QUERY_LIMITS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_QUERY_FLAGS;
+enum {
+       CSSM_QUERY_RETURN_DATA =                        0x01
+};
+
+typedef struct cssm_query {
+    CSSM_DB_RECORDTYPE RecordType;
+    CSSM_DB_CONJUNCTIVE Conjunctive;
+    uint32 NumSelectionPredicates;
+    CSSM_SELECTION_PREDICATE_PTR SelectionPredicate;
+    CSSM_QUERY_LIMITS QueryLimits;
+    CSSM_QUERY_FLAGS QueryFlags;
+} CSSM_QUERY DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_QUERY_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DLTYPE, *CSSM_DLTYPE_PTR;
+enum {
+    CSSM_DL_UNKNOWN =                                  0,
+    CSSM_DL_CUSTOM =                                   1,
+    CSSM_DL_LDAP =                                             2,
+    CSSM_DL_ODBC =                                             3,
+    CSSM_DL_PKCS11 =                                   4,
+    CSSM_DL_FFS =                                              5, /* flat file system */
+    CSSM_DL_MEMORY =                                   6,
+    CSSM_DL_REMOTEDIR =                                        7
+};
+
+typedef void *CSSM_DL_CUSTOM_ATTRIBUTES;
+typedef void *CSSM_DL_LDAP_ATTRIBUTES;
+typedef void *CSSM_DL_ODBC_ATTRIBUTES;
+typedef void *CSSM_DL_FFS_ATTRIBUTES;
+
+typedef struct cssm_dl_pkcs11_attributes {
+    uint32 DeviceAccessFlags;
+} *CSSM_DL_PKCS11_ATTRIBUTE, *CSSM_DL_PKCS11_ATTRIBUTE_PTR;
+
+enum {
+       CSSM_DB_DATASTORES_UNKNOWN =            0xFFFFFFFF
+};
+
+typedef struct cssm_name_list {
+    uint32 NumStrings;
+    char **String;
+} CSSM_NAME_LIST DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_NAME_LIST_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef uint32 CSSM_DB_RETRIEVAL_MODES;
+enum {
+       CSSM_DB_TRANSACTIONAL_MODE =            0,
+       CSSM_DB_FILESYSTEMSCAN_MODE =           1
+};
+
+typedef struct cssm_db_schema_attribute_info {
+    uint32 AttributeId;
+    char *AttributeName;
+    CSSM_OID AttributeNameID;
+    CSSM_DB_ATTRIBUTE_FORMAT DataType;
+} CSSM_DB_SCHEMA_ATTRIBUTE_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_SCHEMA_ATTRIBUTE_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+typedef struct cssm_db_schema_index_info {
+    uint32 AttributeId;
+    uint32 IndexId;
+    CSSM_DB_INDEX_TYPE IndexType;
+    CSSM_DB_INDEXED_DATA_LOCATION IndexedDataLocation;
+} CSSM_DB_SCHEMA_INDEX_INFO DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_DB_SCHEMA_INDEX_INFO_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSSMTYPE_H_ */