view dstep/security/cssmtype.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.security.cssmtype;

import dstep.security.cssmconfig;

alias int CSSM_HANDLE;
alias CSSM_INTPTR* CSSM_HANDLE_PTR;
alias ulong CSSM_LONG_HANDLE;
alias uint64* CSSM_LONG_HANDLE_PTR;
alias int CSSM_MODULE_HANDLE;
alias CSSM_HANDLE* CSSM_MODULE_HANDLE_PTR;
alias ulong CSSM_CC_HANDLE;
alias int CSSM_CSP_HANDLE;
alias int CSSM_TP_HANDLE;
alias int CSSM_AC_HANDLE;
alias int CSSM_CL_HANDLE;
alias int CSSM_DL_HANDLE;
alias int CSSM_DB_HANDLE;
alias int CSSM_BOOL;
alias int CSSM_RETURN;
alias uint CSSM_BITMASK;
alias uint CSSM_KEY_HIERARCHY;
alias uint CSSM_PVC_MODE;
alias uint CSSM_PRIVILEGE_SCOPE;
alias uint CSSM_SERVICE_MASK;
alias uint CSSM_SERVICE_TYPE;
alias uint CSSM_MODULE_EVENT;
alias uint32* CSSM_MODULE_EVENT_PTR;
alias uint CSSM_ATTACH_FLAGS;
alias ulong CSSM_PRIVILEGE;
alias ulong CSSM_USEE_TAG;
alias uint CSSM_NET_ADDRESS_TYPE;
alias uint CSSM_NET_PROTOCOL;
alias int CSSM_WORDID_TYPE;
alias uint CSSM_LIST_ELEMENT_TYPE;
alias uint32* CSSM_LIST_ELEMENT_TYPE_PTR;
alias uint CSSM_LIST_TYPE;
alias uint32* CSSM_LIST_TYPE_PTR;
alias CSSM_LIST_ELEMENT* CSSM_LIST_ELEMENT_PTR;
alias int CSSM_SAMPLE_TYPE;
alias CSSM_MEMORY_FUNCS CSSM_API_MEMORY_FUNCS;
alias CSSM_API_MEMORY_FUNCS* CSSM_API_MEMORY_FUNCS_PTR;
alias uint CSSM_CERT_TYPE;
alias uint32* CSSM_CERT_TYPE_PTR;
alias uint CSSM_CERT_ENCODING;
alias uint32* CSSM_CERT_ENCODING_PTR;
alias uint CSSM_CERT_PARSE_FORMAT;
alias uint32* CSSM_CERT_PARSE_FORMAT_PTR;
alias uint CSSM_CERTGROUP_TYPE;
alias uint32* CSSM_CERTGROUP_TYPE_PTR;
alias int CSSM_ACL_SUBJECT_TYPE;
alias int CSSM_ACL_AUTHORIZATION_TAG;
alias int CSSM_ACL_HANDLE;
alias uint CSSM_ACL_EDIT_MODE;
alias CSSM_PROC_ADDR* CSSM_PROC_ADDR_PTR;
alias uint CSSM_HEADERVERSION;
alias uint CSSM_KEYBLOB_TYPE;
alias uint CSSM_KEYBLOB_FORMAT;
alias uint CSSM_KEYCLASS;
alias uint CSSM_KEYATTR_FLAGS;
alias uint CSSM_KEYUSE;
alias uint CSSM_ALGORITHMS;
alias uint CSSM_ENCRYPT_MODE;
alias CSSM_KEY CSSM_WRAP_KEY;
alias CSSM_KEY* CSSM_WRAP_KEY_PTR;
alias uint CSSM_CSPTYPE;
alias uint CSSM_CONTEXT_TYPE;
alias uint CSSM_ATTRIBUTE_TYPE;
alias uint CSSM_PADDING;
alias uint CSSM_KEY_TYPE;
alias uint CSSM_SC_FLAGS;
alias uint CSSM_CSP_READER_FLAGS;
alias uint CSSM_CSP_FLAGS;
alias uint CSSM_PKCS_OAEP_MGF;
alias uint CSSM_PKCS_OAEP_PSOURCE;
alias uint CSSM_PKCS5_PBKDF2_PRF;
alias uint CSSM_TP_AUTHORITY_REQUEST_TYPE;
alias uint32* CSSM_TP_AUTHORITY_REQUEST_TYPE_PTR;
alias CSSM_DATA CSSM_OID;
alias CSSM_DATA* CSSM_OID_PTR;
alias uint CSSM_TP_SERVICES;
alias uint CSSM_TP_ACTION;
alias uint CSSM_TP_STOP_ON;
alias char* CSSM_TIMESTRING;
alias uint CSSM_CRL_PARSE_FORMAT;
alias uint32* CSSM_CRL_PARSE_FORMAT_PTR;
alias uint CSSM_CRL_TYPE;
alias uint32* CSSM_CRL_TYPE_PTR;
alias uint CSSM_CRL_ENCODING;
alias uint32* CSSM_CRL_ENCODING_PTR;
alias uint CSSM_CRLGROUP_TYPE;
alias uint32* CSSM_CRLGROUP_TYPE_PTR;
alias uint CSSM_EVIDENCE_FORM;
alias uint CSSM_TP_CONFIRM_STATUS;
alias uint32* CSSM_TP_CONFIRM_STATUS_PTR;
alias uint CSSM_TP_CERTISSUE_STATUS;
alias uint CSSM_TP_CERTCHANGE_ACTION;
alias uint CSSM_TP_CERTCHANGE_REASON;
alias uint CSSM_TP_CERTCHANGE_STATUS;
alias uint CSSM_TP_CERTVERIFY_STATUS;
alias uint CSSM_TP_CERTNOTARIZE_STATUS;
alias uint CSSM_TP_CERTRECLAIM_STATUS;
alias uint CSSM_TP_CRLISSUE_STATUS;
alias uint CSSM_TP_FORM_TYPE;
alias uint CSSM_CL_TEMPLATE_TYPE;
alias uint CSSM_CERT_BUNDLE_TYPE;
alias uint CSSM_CERT_BUNDLE_ENCODING;
alias uint CSSM_DB_ATTRIBUTE_NAME_FORMAT;
alias uint32* CSSM_DB_ATTRIBUTE_NAME_FORMAT_PTR;
alias uint CSSM_DB_ATTRIBUTE_FORMAT;
alias uint32* CSSM_DB_ATTRIBUTE_FORMAT_PTR;
alias uint CSSM_DB_RECORDTYPE;
alias uint CSSM_DB_INDEX_TYPE;
alias uint CSSM_DB_INDEXED_DATA_LOCATION;
alias uint CSSM_DB_ACCESS_TYPE;
alias uint32* CSSM_DB_ACCESS_TYPE_PTR;
alias uint CSSM_DB_MODIFY_MODE;
alias uint CSSM_DB_OPERATOR;
alias uint32* CSSM_DB_OPERATOR_PTR;
alias uint CSSM_DB_CONJUNCTIVE;
alias uint32* CSSM_DB_CONJUNCTIVE_PTR;
alias uint CSSM_QUERY_FLAGS;
alias uint CSSM_DLTYPE;
alias uint32* CSSM_DLTYPE_PTR;
alias void* CSSM_DL_CUSTOM_ATTRIBUTES;
alias void* CSSM_DL_LDAP_ATTRIBUTES;
alias void* CSSM_DL_ODBC_ATTRIBUTES;
alias void* CSSM_DL_FFS_ATTRIBUTES;
alias uint CSSM_DB_RETRIEVAL_MODES;
alias CSSM_LIST* CSSM_LIST_PTR;
alias CSSM_DATA* CSSM_DATA_PTR;
alias CSSM_SAMPLEGROUP* CSSM_SAMPLEGROUP_PTR;
alias CSSM_TUPLE* CSSM_TUPLE_PTR;
alias CSSM_CERTGROUP* CSSM_CERTGROUP_PTR;
alias CSSM_ENCODED_CERT* CSSM_ENCODED_CERT_PTR;
alias CSSM_PARSED_CERT* CSSM_PARSED_CERT_PTR;
alias CSSM_CERT_PAIR* CSSM_CERT_PAIR_PTR;
alias CSSM_ACCESS_CREDENTIALS* CSSM_ACCESS_CREDENTIALS_PTR;
alias CSSM_NET_ADDRESS* CSSM_NET_ADDRESS_PTR;
alias CSSM_CRLGROUP* CSSM_CRLGROUP_PTR;
alias CSSM_ENCODED_CRL* CSSM_ENCODED_CRL_PTR;
alias CSSM_PARSED_CRL* CSSM_PARSED_CRL_PTR;
alias CSSM_CRL_PAIR* CSSM_CRL_PAIR_PTR;
alias CSSM_FIELD* CSSM_FIELD_PTR;
alias CSSM_TP_CALLERAUTH_CONTEXT* CSSM_TP_CALLERAUTH_CONTEXT_PTR;
alias CSSM_EVIDENCE* CSSM_EVIDENCE_PTR;
alias CSSM_TP_VERIFY_CONTEXT* CSSM_TP_VERIFY_CONTEXT_PTR;
alias CSSM_DB_ATTRIBUTE_INFO* CSSM_DB_ATTRIBUTE_INFO_PTR;
alias CSSM_DB_INDEX_INFO* CSSM_DB_INDEX_INFO_PTR;
alias CSSM_DB_PARSING_MODULE_INFO* CSSM_DB_PARSING_MODULE_INFO_PTR;
alias CSSM_DB_RECORD_ATTRIBUTE_INFO* CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR;
alias CSSM_SELECTION_PREDICATE* CSSM_SELECTION_PREDICATE_PTR;
alias CSSM_GUID* CSSM_GUID_PTR;
alias CSSM_SUBSERVICE_UID* CSSM_SUBSERVICE_UID_PTR;
alias CSSM_CONTEXT* CSSM_CONTEXT_PTR;
alias CSSM_CONTEXT_ATTRIBUTE* CSSM_CONTEXT_ATTRIBUTE_PTR;
alias CSSM_ACL_ENTRY_INFO* CSSM_ACL_ENTRY_INFO_PTR;
alias CSSM_ACL_OWNER_PROTOTYPE* CSSM_ACL_OWNER_PROTOTYPE_PTR;
alias CSSM_QUERY_SIZE_DATA* CSSM_QUERY_SIZE_DATA_PTR;
alias CSSM_KEY_SIZE* CSSM_KEY_SIZE_PTR;
alias CSSM_KEY* CSSM_KEY_PTR;
alias CSSM_TP_CONFIRM_RESPONSE* CSSM_TP_CONFIRM_RESPONSE_PTR;
alias CSSM_TUPLEGROUP* CSSM_TUPLEGROUP_PTR;
alias CSSM_TP_RESULT_SET* CSSM_TP_RESULT_SET_PTR;
alias CSSM_TP_VERIFY_CONTEXT_RESULT* CSSM_TP_VERIFY_CONTEXT_RESULT_PTR;
alias CSSM_NAME_LIST* CSSM_NAME_LIST_PTR;
alias CSSM_DB_UNIQUE_RECORD* CSSM_DB_UNIQUE_RECORD_PTR;
alias CSSM_DB_RECORD_ATTRIBUTE_DATA* CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR;
alias CSSM_DL_DB_HANDLE* CSSM_DL_DB_HANDLE_PTR;
alias CSSM_VERSION* CSSM_VERSION_PTR;
alias CSSM_FUNC_NAME_ADDR* CSSM_FUNC_NAME_ADDR_PTR;

extern (C)
{
	alias int function (CSSM_GUID*, void*, uint, uint, uint) CSSM_API_ModuleEventHandler;
	alias void function (void*, void*) CSSM_FREE;
	alias int function (CSSM_LIST*, CSSM_LIST_PTR, void*, CSSM_MEMORY_FUNCS*) CSSM_ACL_SUBJECT_CALLBACK;
	alias int function (int, void*, CSSM_DATA_PTR) CSSM_TP_VERIFICATION_RESULTS_CALLBACK;
	alias int function (CSSM_LIST*, CSSM_SAMPLEGROUP_PTR, void*, CSSM_MEMORY_FUNCS*) CSSM_CHALLENGE_CALLBACK;
	alias void function () CSSM_PROC_ADDR;
	alias void* function (uint, CSSM_SIZE, void*) CSSM_REALLOC;
	alias uint function (uint, CSSM_SIZE, void*) CSSM_CALLOC;
	alias uint function (CSSM_SIZE, int) CSSM_MALLOC;
	alias CSSM_RETURN function (CSSM_DATA_PTR, void*) CSSM_CALLBACK;
}

enum
{
	CSSM_INVALID_HANDLE = 0
}

enum
{
	CSSM_FALSE = 0,
	CSSM_TRUE = !CSSM_FALSE
}

enum
{
	CSSM_OK = 0
}

enum
{
	CSSM_MODULE_STRING_SIZE = 64
}

alias char[CSSM_MODULE_STRING_SIZE + 4] CSSM_STRING;

enum
{
	CSSM_KEY_HIERARCHY_NONE = 0,
	CSSM_KEY_HIERARCHY_INTEG = 1,
	CSSM_KEY_HIERARCHY_EXPORT = 2
}

enum
{
	CSSM_PVC_NONE = 0,
	CSSM_PVC_APP = 1,
	CSSM_PVC_SP = 2
}

enum
{
	CSSM_PRIVILEGE_SCOPE_NONE = 0,
	CSSM_PRIVILEGE_SCOPE_PROCESS = 1,
	CSSM_PRIVILEGE_SCOPE_THREAD = 2
}

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
}

enum
{
	CSSM_NOTIFY_INSERT = 1,
	CSSM_NOTIFY_REMOVE = 2,
	CSSM_NOTIFY_FAULT = 3
}

enum
{
	CSSM_ATTACH_READ_ONLY = 0x00000001
}

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
}

enum
{
	CSSM_ADDR_NONE = 0,
	CSSM_ADDR_CUSTOM = 1,
	CSSM_ADDR_URL = 2,
	CSSM_ADDR_SOCKADDR = 3,
	CSSM_ADDR_NAME = 4
}

enum
{
	CSSM_NET_PROTO_NONE = 0,
	CSSM_NET_PROTO_CUSTOM = 1,
	CSSM_NET_PROTO_UNSPECIFIED = 2,
	CSSM_NET_PROTO_LDAP = 3,
	CSSM_NET_PROTO_LDAPS = 4,
	CSSM_NET_PROTO_LDAPNS = 5,
	CSSM_NET_PROTO_X500DAP = 6,
	CSSM_NET_PROTO_FTP = 7,
	CSSM_NET_PROTO_FTPS = 8,
	CSSM_NET_PROTO_OCSP = 9,
	CSSM_NET_PROTO_CMP = 10,
	CSSM_NET_PROTO_CMPS = 11
}

enum
{
	CSSM_WORDID__UNK_ = -1,
	CSSM_WORDID__NLU_ = 0,
	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
}

enum
{
	CSSM_LIST_ELEMENT_DATUM = 0x00,
	CSSM_LIST_ELEMENT_SUBLIST = 0x01,
	CSSM_LIST_ELEMENT_WORDID = 0x02
}

enum
{
	CSSM_LIST_TYPE_UNKNOWN = 0,
	CSSM_LIST_TYPE_CUSTOM = 1,
	CSSM_LIST_TYPE_SEXPR = 2
}

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
}

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,
	CSSM_CERT_X9_ATTRIBUTE = 0x0A,
	CSSM_CERT_TUPLE = 0x0B,
	CSSM_CERT_ACL_ENTRY = 0x0C,
	CSSM_CERT_MULTIPLE = 0x7FFE,
	CSSM_CERT_LAST = 0x7FFF,
	CSSM_CL_CUSTOM_CERT_TYPE = 0x08000
}

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,
	CSSM_CL_CUSTOM_CERT_ENCODING = 0x8000
}

enum
{
	CSSM_CERT_PARSE_FORMAT_NONE = 0x00,
	CSSM_CERT_PARSE_FORMAT_CUSTOM = 0x01,
	CSSM_CERT_PARSE_FORMAT_SEXPR = 0x02,
	CSSM_CERT_PARSE_FORMAT_COMPLEX = 0x03,
	CSSM_CERT_PARSE_FORMAT_OID_NAMED = 0x04,
	CSSM_CERT_PARSE_FORMAT_TUPLE = 0x05,
	CSSM_CERT_PARSE_FORMAT_MULTIPLE = 0x7FFE,
	CSSM_CERT_PARSE_FORMAT_LAST = 0x7FFF,
	CSSM_CL_CUSTOM_CERT_PARSE_FORMAT = 0x8000
}

enum
{
	CSSM_CERTGROUP_DATA = 0x00,
	CSSM_CERTGROUP_ENCODED_CERT = 0x01,
	CSSM_CERTGROUP_PARSED_CERT = 0x02,
	CSSM_CERTGROUP_CERT_PAIR = 0x03
}

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
}

enum
{
	CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START = 0x00010000,
	CSSM_ACL_AUTHORIZATION_ANY = CSSM_WORDID__STAR_,
	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,
	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
}

enum
{
	CSSM_ACL_EDIT_MODE_ADD = 1,
	CSSM_ACL_EDIT_MODE_DELETE = 2,
	CSSM_ACL_EDIT_MODE_REPLACE = 3
}

enum
{
	CSSM_KEYHEADER_VERSION = 2
}

enum
{
	CSSM_KEYBLOB_RAW = 0,
	CSSM_KEYBLOB_REFERENCE = 2,
	CSSM_KEYBLOB_WRAPPED = 3,
	CSSM_KEYBLOB_OTHER = 0xFFFFFFFF
}

enum
{
	CSSM_KEYBLOB_RAW_FORMAT_NONE = 0,
	CSSM_KEYBLOB_RAW_FORMAT_PKCS1 = 1,
	CSSM_KEYBLOB_RAW_FORMAT_PKCS3 = 2,
	CSSM_KEYBLOB_RAW_FORMAT_MSCAPI = 3,
	CSSM_KEYBLOB_RAW_FORMAT_PGP = 4,
	CSSM_KEYBLOB_RAW_FORMAT_FIPS186 = 5,
	CSSM_KEYBLOB_RAW_FORMAT_BSAFE = 6,
	CSSM_KEYBLOB_RAW_FORMAT_CCA = 9,
	CSSM_KEYBLOB_RAW_FORMAT_PKCS8 = 10,
	CSSM_KEYBLOB_RAW_FORMAT_SPKI = 11,
	CSSM_KEYBLOB_RAW_FORMAT_OCTET_STRING = 12,
	CSSM_KEYBLOB_RAW_FORMAT_OTHER = 0xFFFFFFFF
}

enum
{
	CSSM_KEYBLOB_WRAPPED_FORMAT_NONE = 0,
	CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS8 = 1,
	CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS7 = 2,
	CSSM_KEYBLOB_WRAPPED_FORMAT_MSCAPI = 3,
	CSSM_KEYBLOB_WRAPPED_FORMAT_OTHER = 0xFFFFFFFF
}

enum
{
	CSSM_KEYBLOB_REF_FORMAT_INTEGER = 0,
	CSSM_KEYBLOB_REF_FORMAT_STRING = 1,
	CSSM_KEYBLOB_REF_FORMAT_SPKI = 2,
	CSSM_KEYBLOB_REF_FORMAT_OTHER = 0xFFFFFFFF
}

enum
{
	CSSM_KEYCLASS_PUBLIC_KEY = 0,
	CSSM_KEYCLASS_PRIVATE_KEY = 1,
	CSSM_KEYCLASS_SESSION_KEY = 2,
	CSSM_KEYCLASS_SECRET_PART = 3,
	CSSM_KEYCLASS_OTHER = 0xFFFFFFFF
}

enum
{
	CSSM_KEYATTR_RETURN_DEFAULT = 0x00000000,
	CSSM_KEYATTR_RETURN_DATA = 0x10000000,
	CSSM_KEYATTR_RETURN_REF = 0x20000000,
	CSSM_KEYATTR_RETURN_NONE = 0x40000000,
	CSSM_KEYATTR_PERMANENT = 0x00000001,
	CSSM_KEYATTR_PRIVATE = 0x00000002,
	CSSM_KEYATTR_MODIFIABLE = 0x00000004,
	CSSM_KEYATTR_SENSITIVE = 0x00000008,
	CSSM_KEYATTR_EXTRACTABLE = 0x00000020,
	CSSM_KEYATTR_ALWAYS_SENSITIVE = 0x00000010,
	CSSM_KEYATTR_NEVER_EXTRACTABLE = 0x00000040
}

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
}

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,
	CSSM_ALGID_VENDOR_DEFINED = CSSM_ALGID_NONE + 0x80000000
}

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,
	CSSM_ALGMODE_VENDOR_DEFINED = CSSM_ALGMODE_NONE + 0x80000000
}

enum
{
	CSSM_CSP_SOFTWARE = 1,
	CSSM_CSP_HARDWARE = CSSM_CSP_SOFTWARE + 1,
	CSSM_CSP_HYBRID = CSSM_CSP_SOFTWARE + 2
}

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
}

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
}

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
}

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,
	CSSM_PADDING_VENDOR_DEFINED = CSSM_PADDING_NONE + 0x80000000
}

enum
{
	CSSM_CSP_TOK_RNG = 0x00000001,
	CSSM_CSP_TOK_CLOCK_EXISTS = 0x00000040
}

enum
{
	CSSM_CSP_RDR_TOKENPRESENT = 0x00000001,
	CSSM_CSP_RDR_EXISTS = 0x00000002,
	CSSM_CSP_RDR_HW = 0x00000004
}

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
}

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
}

enum
{
	CSSM_PKCS_OAEP_PSOURCE_NONE = 0,
	CSSM_PKCS_OAEP_PSOURCE_Pspecified = CSSM_PKCS_OAEP_PSOURCE_NONE + 1
}

enum : uint
{
	CSSM_VALUE_NOT_AVAILABLE = ~0
}

enum
{
	CSSM_PKCS5_PBKDF2_PRF_HMAC_SHA1 = 0
}

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
}

enum
{
	CSSM_TP_KEY_ARCHIVE = 0x0001,
	CSSM_TP_CERT_PUBLISH = 0x0002,
	CSSM_TP_CERT_NOTIFY_RENEW = 0x0004,
	CSSM_TP_CERT_DIR_UPDATE = 0x0008,
	CSSM_TP_CRL_DISTRIBUTE = 0x0010
}

enum
{
	CSSM_TP_ACTION_DEFAULT = 0
}

enum
{
	CSSM_TP_STOP_ON_POLICY = 0,
	CSSM_TP_STOP_ON_NONE = 1,
	CSSM_TP_STOP_ON_FIRST_PASS = 2,
	CSSM_TP_STOP_ON_FIRST_FAIL = 3
}

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,
	CSSM_CL_CUSTOM_CRL_PARSE_FORMAT = 0x8000
}

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
}

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
}

enum
{
	CSSM_CRLGROUP_DATA = 0x00,
	CSSM_CRLGROUP_ENCODED_CRL = 0x01,
	CSSM_CRLGROUP_PARSED_CRL = 0x02,
	CSSM_CRLGROUP_CRL_PAIR = 0x03
}

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
}

enum
{
	CSSM_TP_CONFIRM_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CONFIRM_ACCEPT = 0x1,
	CSSM_TP_CONFIRM_REJECT = 0x2
}

enum
{
	CSSM_ESTIMATED_TIME_UNKNOWN = -1
}

enum
{
	CSSM_ELAPSED_TIME_UNKNOWN = -1,
	CSSM_ELAPSED_TIME_COMPLETE = -2
}

enum
{
	CSSM_TP_CERTISSUE_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CERTISSUE_OK = 0x1,
	CSSM_TP_CERTISSUE_OKWITHCERTMODS = 0x2,
	CSSM_TP_CERTISSUE_OKWITHSERVICEMODS = 0x3,
	CSSM_TP_CERTISSUE_REJECTED = 0x4,
	CSSM_TP_CERTISSUE_NOT_AUTHORIZED = 0x5,
	CSSM_TP_CERTISSUE_WILL_BE_REVOKED = 0x6
}

enum
{
	CSSM_TP_CERTCHANGE_NONE = 0x0,
	CSSM_TP_CERTCHANGE_REVOKE = 0x1,
	CSSM_TP_CERTCHANGE_HOLD = 0x2,
	CSSM_TP_CERTCHANGE_RELEASE = 0x3
}

enum
{
	CSSM_TP_CERTCHANGE_REASON_UNKNOWN = 0x0,
	CSSM_TP_CERTCHANGE_REASON_KEYCOMPROMISE = 0x1,
	CSSM_TP_CERTCHANGE_REASON_CACOMPROMISE = 0x2,
	CSSM_TP_CERTCHANGE_REASON_CEASEOPERATION = 0x3,
	CSSM_TP_CERTCHANGE_REASON_AFFILIATIONCHANGE = 0x4,
	CSSM_TP_CERTCHANGE_REASON_SUPERCEDED = 0x5,
	CSSM_TP_CERTCHANGE_REASON_SUSPECTEDCOMPROMISE = 0x6,
	CSSM_TP_CERTCHANGE_REASON_HOLDRELEASE = 0x7
}

enum
{
	CSSM_TP_CERTCHANGE_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CERTCHANGE_OK = 0x1,
	CSSM_TP_CERTCHANGE_OKWITHNEWTIME = 0x2,
	CSSM_TP_CERTCHANGE_WRONGCA = 0x3,
	CSSM_TP_CERTCHANGE_REJECTED = 0x4,
	CSSM_TP_CERTCHANGE_NOT_AUTHORIZED = 0x5
}

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
}

enum
{
	CSSM_TP_CERTNOTARIZE_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CERTNOTARIZE_OK = 0x1,
	CSSM_TP_CERTNOTARIZE_OKWITHOUTFIELDS = 0x2,
	CSSM_TP_CERTNOTARIZE_OKWITHSERVICEMODS = 0x3,
	CSSM_TP_CERTNOTARIZE_REJECTED = 0x4,
	CSSM_TP_CERTNOTARIZE_NOT_AUTHORIZED = 0x5
}

enum
{
	CSSM_TP_CERTRECLAIM_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CERTRECLAIM_OK = 0x1,
	CSSM_TP_CERTRECLAIM_NOMATCH = 0x2,
	CSSM_TP_CERTRECLAIM_REJECTED = 0x3,
	CSSM_TP_CERTRECLAIM_NOT_AUTHORIZED = 0x4
}

enum
{
	CSSM_TP_CRLISSUE_STATUS_UNKNOWN = 0x0,
	CSSM_TP_CRLISSUE_OK = 0x1,
	CSSM_TP_CRLISSUE_NOT_CURRENT = 0x2,
	CSSM_TP_CRLISSUE_INVALID_DOMAIN = 0x3,
	CSSM_TP_CRLISSUE_UNKNOWN_IDENTIFIER = 0x4,
	CSSM_TP_CRLISSUE_REJECTED = 0x5,
	CSSM_TP_CRLISSUE_NOT_AUTHORIZED = 0x6
}

enum
{
	CSSM_TP_FORM_TYPE_GENERIC = 0x0,
	CSSM_TP_FORM_TYPE_REGISTRATION = 0x1
}

enum
{
	CSSM_CL_TEMPLATE_INTERMEDIATE_CERT = 1,
	CSSM_CL_TEMPLATE_PKIX_CERTTEMPLATE = 2
}

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,
	CSSM_CL_CUSTOM_CERT_BUNDLE_TYPE = 0x8000
}

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
}

enum
{
	CSSM_FIELDVALUE_COMPLEX_DATA_TYPE = 0xFFFFFFFF
}

enum
{
	CSSM_DB_ATTRIBUTE_NAME_AS_STRING = 0,
	CSSM_DB_ATTRIBUTE_NAME_AS_OID = 1,
	CSSM_DB_ATTRIBUTE_NAME_AS_INTEGER = 2
}

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
}

enum
{
	CSSM_DB_RECORDTYPE_SCHEMA_START = 0x00000000,
	CSSM_DB_RECORDTYPE_SCHEMA_END = CSSM_DB_RECORDTYPE_SCHEMA_START + 4,
	CSSM_DB_RECORDTYPE_OPEN_GROUP_START = 0x0000000A,
	CSSM_DB_RECORDTYPE_OPEN_GROUP_END = CSSM_DB_RECORDTYPE_OPEN_GROUP_START + 8,
	CSSM_DB_RECORDTYPE_APP_DEFINED_START = 0x80000000,
	CSSM_DB_RECORDTYPE_APP_DEFINED_END = 0xffffffff,
	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,
	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,
	CSSM_DB_CERT_USE_SYSTEM = 0x00000002,
	CSSM_DB_CERT_USE_OWNER = 0x00000004,
	CSSM_DB_CERT_USE_REVOKED = 0x00000008,
	CSSM_DB_CERT_USE_SIGNING = 0x00000010,
	CSSM_DB_CERT_USE_PRIVACY = 0x00000020
}

enum
{
	CSSM_DB_INDEX_UNIQUE = 0,
	CSSM_DB_INDEX_NONUNIQUE = 1
}

enum
{
	CSSM_DB_INDEX_ON_UNKNOWN = 0,
	CSSM_DB_INDEX_ON_ATTRIBUTE = 1,
	CSSM_DB_INDEX_ON_RECORD = 2
}

enum
{
	CSSM_DB_ACCESS_READ = 0x00001,
	CSSM_DB_ACCESS_WRITE = 0x00002,
	CSSM_DB_ACCESS_PRIVILEGED = 0x00004
}

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
}

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
}

enum
{
	CSSM_DB_NONE = 0,
	CSSM_DB_AND = 1,
	CSSM_DB_OR = 2
}

enum
{
	CSSM_QUERY_TIMELIMIT_NONE = 0
}

enum
{
	CSSM_QUERY_SIZELIMIT_NONE = 0
}

enum
{
	CSSM_QUERY_RETURN_DATA = 0x01
}

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,
	CSSM_DL_MEMORY = 6,
	CSSM_DL_REMOTEDIR = 7
}

enum
{
	CSSM_DB_DATASTORES_UNKNOWN = 0xFFFFFFFF
}

enum
{
	CSSM_DB_TRANSACTIONAL_MODE = 0,
	CSSM_DB_FILESYSTEMSCAN_MODE = 1
}

struct CSSM_DATA
{
	uint Length;
	char* Data;
}


struct CSSM_GUID
{
	uint Data1;
	ushort Data2;
	ushort Data3;
	char* Data4;
}


struct CSSM_VERSION
{
	uint Major;
	uint Minor;
}


struct CSSM_SUBSERVICE_UID
{
	CSSM_GUID Guid;
	CSSM_VERSION Version;
	uint SubserviceId;
	uint SubserviceType;
}


struct CSSM_NET_ADDRESS
{
	uint AddressType;
	CSSM_DATA Address;
}


struct CSSM_CRYPTO_DATA
{
	CSSM_DATA Param;
	CSSM_CALLBACK Callback;
	void* CallerCtx;
}


struct CSSM_LIST
{
	uint ListType;
	CSSM_LIST_ELEMENT_PTR Head;
	CSSM_LIST_ELEMENT_PTR Tail;
}


struct CSSM_LIST_ELEMENT
{
	CSSM_LIST_ELEMENT* NextElement;
	CSSM_WORDID_TYPE WordID;
	CSSM_LIST_ELEMENT_TYPE ElementType;
	
	union
	{
		CSSM_LIST Sublist;
		CSSM_DATA Word;
	}
}

struct CSSM_TUPLE
{
	CSSM_LIST Issuer;
	int Subject;
	CSSM_BOOL Delegate;
	CSSM_LIST AuthorizationTag;
	CSSM_LIST ValidityPeriod;
}


struct CSSM_TUPLEGROUP
{
	uint32 NumberOfTuples;
	CSSM_TUPLE_PTR Tuples;
}


struct CSSM_SAMPLE
{
	CSSM_LIST TypedSample;
	CSSM_SUBSERVICE_UID* Verifier;
}


struct CSSM_SAMPLEGROUP
{
	uint32 NumberOfSamples;
	CSSM_SAMPLE* Samples;
}


struct CSSM_MEMORY_FUNCS
{
	CSSM_MALLOC malloc_func;
	CSSM_FREE free_func;
	CSSM_REALLOC realloc_func;
	CSSM_CALLOC calloc_func;
	void* AllocRef;
}


struct CSSM_ENCODED_CERT
{
	uint CertType;
	CSSM_CERT_ENCODING CertEncoding;
	CSSM_DATA CertBlob;
}


struct CSSM_PARSED_CERT
{
	uint CertType;
	CSSM_CERT_PARSE_FORMAT ParsedCertFormat;
	void* ParsedCert;
}


struct CSSM_CERT_PAIR
{
	CSSM_ENCODED_CERT EncodedCert;
	CSSM_PARSED_CERT ParsedCert;
}


struct CSSM_CERTGROUP
{
	CSSM_CERT_TYPE CertType;
	CSSM_CERT_ENCODING CertEncoding;
	uint NumCerts;
	
	union
	{
		CSSM_DATA_PTR CertList;
		CSSM_ENCODED_CERT_PTR EncodedCertList;
		CSSM_PARSED_CERT_PTR ParsedCertList;
		CSSM_CERT_PAIR_PTR PairCertList;
	}
	
	CSSM_CERTGROUP_TYPE CertGroupType;
	void* Reserved;
}

struct CSSM_BASE_CERTS
{
	CSSM_TP_HANDLE TPHandle;
	CSSM_CL_HANDLE CLHandle;
	byte[68] Certs;
}


struct CSSM_ACCESS_CREDENTIALS
{
	CSSM_STRING EntryTag;
	CSSM_BASE_CERTS BaseCerts;
	CSSM_SAMPLEGROUP Samples;
	CSSM_CHALLENGE_CALLBACK Callback;
	uint CallerCtx;
}


struct CSSM_AUTHORIZATIONGROUP
{
	uint32 NumberOfAuthTags;
	CSSM_ACL_AUTHORIZATION_TAG* AuthTags;
}


struct CSSM_ACL_VALIDITY_PERIOD
{
	CSSM_DATA StartDate;
	CSSM_DATA EndDate;
}


struct CSSM_ACL_ENTRY_PROTOTYPE
{
	CSSM_LIST TypedSubject;
	CSSM_BOOL Delegate;
	byte[68] Authorization;
	CSSM_ACL_VALIDITY_PERIOD TimeRange;
	CSSM_STRING EntryTag;
}


struct CSSM_ACL_OWNER_PROTOTYPE
{
	CSSM_LIST TypedSubject;
	CSSM_BOOL Delegate;
}


struct CSSM_ACL_ENTRY_INPUT
{
	CSSM_ACL_ENTRY_PROTOTYPE Prototype;
	CSSM_ACL_SUBJECT_CALLBACK Callback;
	void* CallerContext;
}


struct CSSM_RESOURCE_CONTROL_CONTEXT
{
	CSSM_ACCESS_CREDENTIALS_PTR AccessCred;
	CSSM_ACL_ENTRY_INPUT InitialAclEntry;
}


struct CSSM_ACL_ENTRY_INFO
{
	CSSM_ACL_ENTRY_PROTOTYPE EntryPublicInfo;
	uint EntryHandle;
}


struct CSSM_ACL_EDIT
{
	CSSM_ACL_EDIT_MODE EditMode;
	CSSM_ACL_HANDLE OldEntryHandle;
	byte[68] NewEntry;
}


struct CSSM_FUNC_NAME_ADDR
{
	CSSM_STRING Name;
	char* Address;
}


struct CSSM_DATE
{
	char* Year;
	uint8* Month;
	uint Day;
}


struct CSSM_RANGE
{
	uint32 Min;
	uint Max;
}


struct CSSM_QUERY_SIZE_DATA
{
	uint32 SizeInputBlock;
	uint SizeOutputBlock;
}


struct CSSM_KEY_SIZE
{
	uint32 LogicalKeySizeInBits;
	uint EffectiveKeySizeInBits;
}


struct CSSM_KEYHEADER
{
	uint HeaderVersion;
	uint CspId;
	uint BlobType;
	uint Format;
	uint AlgorithmId;
	uint KeyClass;
	uint LogicalKeySizeInBits;
	CSSM_KEYATTR_FLAGS KeyAttr;
	CSSM_KEYUSE KeyUsage;
	uint StartDate;
	uint EndDate;
	uint WrapAlgorithmId;
	CSSM_ENCRYPT_MODE WrapMode;
	uint32 Reserved;
}


struct CSSM_KEY
{
	CSSM_KEYHEADER KeyHeader;
	int KeyData;
}


struct CSSM_DL_DB_HANDLE
{
	CSSM_DL_HANDLE DLHandle;
	CSSM_DB_HANDLE DBHandle;
}


struct CSSM_CONTEXT_ATTRIBUTE
{
	uint Attribute;
}


struct CSSM_CONTEXT
{
	CSSM_CONTEXT_TYPE ContextType;
	int AlgorithmType;
	int NumberOfAttributes;
	uint ContextAttributes;
	uint CSPHandle;
	uint Privileged;
	uint32 EncryptionProhibited;
	uint WorkFactor;
	uint32 Reserved;
}


struct CSSM_PKCS1_OAEP_PARAMS
{
	uint32 HashAlgorithm;
	uint HashParams;
	CSSM_PKCS_OAEP_MGF MGF;
	CSSM_DATA MGFParams;
	int PSource;
	uint PSourceParams;
}


struct CSSM_CSP_OPERATIONAL_STATISTICS
{
	uint UserAuthenticated;
	uint DeviceFlags;
	uint TokenMaxSessionCount;
	uint TokenOpenedSessionCount;
	uint TokenMaxRWSessionCount;
	uint TokenOpenedRWSessionCount;
	uint TokenTotalPublicMem;
	uint32 TokenFreePublicMem;
	uint32 TokenTotalPrivateMem;
	uint32 TokenFreePrivateMem;
}


struct CSSM_PKCS5_PBKDF1_PARAMS
{
	CSSM_DATA Passphrase;
	uint InitVector;
}


struct CSSM_PKCS5_PBKDF2_PARAMS
{
	CSSM_DATA Passphrase;
	CSSM_PKCS5_PBKDF2_PRF PseudoRandomFunction;
}


struct CSSM_KEA_DERIVE_PARAMS
{
	CSSM_DATA Rb;
	CSSM_DATA Yb;
}


struct CSSM_TP_AUTHORITY_ID
{
	CSSM_DATA* AuthorityCert;
	CSSM_NET_ADDRESS_PTR AuthorityLocation;
}


struct CSSM_FIELD
{
	uint FieldOid;
	CSSM_DATA FieldValue;
}


struct CSSM_TP_POLICYINFO
{
	uint32 NumberOfPolicyIds;
	uint PolicyIds;
	void* PolicyControl;
}


struct CSSM_DL_DB_LIST
{
	uint32 NumHandles;
	char* DLDBHandle;
}


struct CSSM_TP_CALLERAUTH_CONTEXT
{
	CSSM_TP_POLICYINFO Policy;
	uint VerifyTime;
	CSSM_TP_STOP_ON VerificationAbortOn;
	CSSM_TP_VERIFICATION_RESULTS_CALLBACK CallbackWithVerifiedCert;
	uint32 NumberOfAnchorCerts;
	CSSM_DATA_PTR AnchorCerts;
	uint DBList;
	uint CallerCredentials;
}


struct CSSM_ENCODED_CRL
{
	CSSM_CRL_TYPE CrlType;
	uint CrlEncoding;
	uint CrlBlob;
}


struct CSSM_PARSED_CRL
{
	CSSM_CRL_TYPE CrlType;
	CSSM_CRL_PARSE_FORMAT ParsedCrlFormat;
	void* ParsedCrl;
}


struct CSSM_CRL_PAIR
{
	uint EncodedCrl;
	CSSM_PARSED_CRL ParsedCrl;
}


struct CSSM_CRLGROUP
{
	CSSM_CRL_TYPE CrlType;
	CSSM_CRL_ENCODING CrlEncoding;
	uint NumberOfCrls;
	
	union
	{
		CSSM_DATA_PTR CrlList;
		CSSM_ENCODED_CRL_PTR EncodedCrlList;
		CSSM_PARSED_CRL_PTR ParsedCrlList;
		CSSM_CRL_PAIR_PTR PairCrlList;
	}
	
	CSSM_CRLGROUP_TYPE CrlGroupType;
}

struct CSSM_FIELDGROUP
{
	int NumberOfFields;
	CSSM_FIELD_PTR Fields;
}


struct CSSM_EVIDENCE
{
	CSSM_EVIDENCE_FORM EvidenceForm;
	void* Evidence;
}


struct CSSM_TP_VERIFY_CONTEXT
{
	CSSM_TP_ACTION Action;
	uint ActionData;
	CSSM_CRLGROUP Crls;
	CSSM_TP_CALLERAUTH_CONTEXT_PTR Cred;
}


struct CSSM_TP_VERIFY_CONTEXT_RESULT
{
	uint32 NumberOfEvidences;
	CSSM_EVIDENCE_PTR Evidence;
}


struct CSSM_TP_REQUEST_SET
{
	uint32 NumberOfRequests;
	void* Requests;
}


struct CSSM_TP_RESULT_SET
{
	uint32 NumberOfResults;
	void* Results;
}


struct CSSM_TP_CONFIRM_RESPONSE
{
	int NumberOfResponses;
	uint Responses;
}


struct CSSM_TP_CERTISSUE_INPUT
{
	uint CSPSubserviceUid;
	uint CLHandle;
	uint32 NumberOfTemplateFields;
	CSSM_FIELD_PTR SubjectCertFields;
	CSSM_TP_SERVICES MoreServiceRequests;
	uint NumberOfServiceControls;
	CSSM_FIELD_PTR ServiceControls;
	uint UserCredentials;
}


struct CSSM_TP_CERTISSUE_OUTPUT
{
	uint IssueStatus;
	uint CertGroup;
	int PerformedServiceRequests;
}


struct CSSM_TP_CERTCHANGE_INPUT
{
	CSSM_TP_CERTCHANGE_ACTION Action;
	char* Reason;
	CSSM_CL_HANDLE CLHandle;
	CSSM_DATA_PTR Cert;
	uint ChangeInfo;
	CSSM_TIMESTRING StartTime;
	CSSM_ACCESS_CREDENTIALS_PTR CallerCredentials;
}


struct CSSM_TP_CERTCHANGE_OUTPUT
{
	CSSM_TP_CERTCHANGE_STATUS ActionStatus;
	CSSM_FIELD RevokeInfo;
}


struct CSSM_TP_CERTVERIFY_INPUT
{
	uint CLHandle;
	uint Cert;
	CSSM_TP_VERIFY_CONTEXT_PTR VerifyContext;
}


struct CSSM_TP_CERTVERIFY_OUTPUT
{
	int VerifyStatus;
	uint NumberOfEvidence;
	CSSM_EVIDENCE_PTR Evidence;
}


struct CSSM_TP_CERTNOTARIZE_INPUT
{
	uint CLHandle;
	uint NumberOfFields;
	uint MoreFields;
	CSSM_FIELD_PTR SignScope;
	uint32 ScopeSize;
	CSSM_TP_SERVICES MoreServiceRequests;
	uint NumberOfServiceControls;
	CSSM_FIELD_PTR ServiceControls;
	uint UserCredentials;
}


struct CSSM_TP_CERTNOTARIZE_OUTPUT
{
	int NotarizeStatus;
	uint NotarizedCertGroup;
	CSSM_TP_SERVICES PerformedServiceRequests;
}


struct CSSM_TP_CERTRECLAIM_INPUT
{
	CSSM_CL_HANDLE CLHandle;
	uint NumberOfSelectionFields;
	CSSM_FIELD_PTR SelectionFields;
	ulong UserCredentials;
}


struct CSSM_TP_CERTRECLAIM_OUTPUT
{
	int ReclaimStatus;
	uint ReclaimedCertGroup;
	char* KeyCacheHandle;
}


struct CSSM_TP_CRLISSUE_INPUT
{
	CSSM_CL_HANDLE CLHandle;
	uint32 CrlIdentifier;
	uint CrlThisTime;
	CSSM_FIELD_PTR PolicyIdentifier;
	char* CallerCredentials;
}


struct CSSM_TP_CRLISSUE_OUTPUT
{
	uint IssueStatus;
	uint Crl;
	CSSM_TIMESTRING CrlNextTime;
}


struct CSSM_CERT_BUNDLE_HEADER
{
	CSSM_CERT_BUNDLE_TYPE BundleType;
	CSSM_CERT_BUNDLE_ENCODING BundleEncoding;
}


struct CSSM_CERT_BUNDLE
{
	CSSM_CERT_BUNDLE_HEADER BundleHeader;
	CSSM_DATA Bundle;
}


struct CSSM_DB_ATTRIBUTE_INFO
{
	CSSM_DB_ATTRIBUTE_NAME_FORMAT AttributeNameFormat;
	
	union cssm_db_attribute_label
	{
		char* AttributeName;
		CSSM_OID AttributeOID;
		uint AttributeID;
	}
	
	cssm_db_attribute_label Label;
	CSSM_DB_ATTRIBUTE_FORMAT AttributeFormat;
}

struct CSSM_DB_ATTRIBUTE_DATA
{
	uint Info;
	uint32 NumberOfValues;
	CSSM_DATA_PTR Value;
}


struct CSSM_DB_RECORD_ATTRIBUTE_INFO
{
	uint DataRecordType;
	uint NumberOfAttributes;
	CSSM_DB_ATTRIBUTE_INFO_PTR AttributeInfo;
}


struct CSSM_DB_RECORD_ATTRIBUTE_DATA
{
	uint DataRecordType;
	uint32 SemanticInformation;
	uint32 NumberOfAttributes;
	uint AttributeData;
}


struct CSSM_DB_PARSING_MODULE_INFO
{
	CSSM_DB_RECORDTYPE RecordType;
	CSSM_SUBSERVICE_UID ModuleSubserviceUid;
}


struct CSSM_DB_INDEX_INFO
{
	CSSM_DB_INDEX_TYPE IndexType;
	CSSM_DB_INDEXED_DATA_LOCATION IndexedDataLocation;
	uint Info;
}


struct CSSM_DB_UNIQUE_RECORD
{
	CSSM_DB_INDEX_INFO RecordLocator;
	CSSM_DATA RecordIdentifier;
}


struct CSSM_DB_RECORD_INDEX_INFO
{
	CSSM_DB_RECORDTYPE DataRecordType;
	uint32 NumberOfIndexes;
	CSSM_DB_INDEX_INFO_PTR IndexInfo;
}


struct CSSM_DBINFO
{
	char* NumberOfRecordTypes;
	CSSM_DB_PARSING_MODULE_INFO_PTR DefaultParsingModules;
	CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR RecordAttributeNames;
	uint RecordIndexes;
	CSSM_BOOL IsLocal;
	char* AccessPath;
	uint Reserved;
}


struct CSSM_SELECTION_PREDICATE
{
	CSSM_DB_OPERATOR DbOperator;
	uint Attribute;
}


struct CSSM_QUERY_LIMITS
{
	uint TimeLimit;
	uint32 SizeLimit;
}


struct CSSM_QUERY
{
	uint RecordType;
	CSSM_DB_CONJUNCTIVE Conjunctive;
	uint NumSelectionPredicates;
	CSSM_SELECTION_PREDICATE_PTR SelectionPredicate;
	uint QueryLimits;
	CSSM_QUERY_FLAGS QueryFlags;
}


struct CSSM_DL_PKCS11_ATTRIBUTE
{
	uint DeviceAccessFlags;
}


struct CSSM_NAME_LIST
{
	uint32 NumStrings;
	uint String;
}


struct CSSM_DB_SCHEMA_ATTRIBUTE_INFO
{
	uint AttributeId;
	uint AttributeName;
	uint AttributeNameID;
	uint DataType;
}


struct CSSM_DB_SCHEMA_INDEX_INFO
{
	uint32 AttributeId;
	uint32 IndexId;
	CSSM_DB_INDEX_TYPE IndexType;
	CSSM_DB_INDEXED_DATA_LOCATION IndexedDataLocation;
}